Архитектура веб-приложений: подробное руководство
Узнайте от разработчиков DST Global, что такое архитектура веб-приложения, как выглядит диаграмма архитектуры веб-приложения и как спроектировать правильную архитектуру для веб-приложений.
Когда пользователь входит в систему на этом настольном компьютере/ноутбуке или мобильном телефоне, открывает браузер и вводит имя веб-сайта, браузер отображает необходимую информацию, и пользователь выполняет действие на сайте. Вы когда-нибудь задумывались, как компьютеры получают эту информацию и что происходит в фоновом режиме? Это базовая архитектура веб-приложения, которая делает этот процесс возможным. В этом блоге вы узнаете, что такое архитектура веб-приложения, как выглядит диаграмма архитектуры веб-приложения и как можно спроектировать правильную архитектуру для веб-приложений.
Обзор архитектуры веб-приложений
Архитектура веб-приложения представляет собой макет со всеми программными компонентами (такими как базы данных, приложения и промежуточное программное обеспечение) и их взаимодействием друг с другом. Он определяет, как данные доставляются через HTTP, и гарантирует, что клиентский сервер и внутренний сервер смогут их понять. Более того, это также гарантирует, что во всех запросах пользователей присутствуют действительные данные. Он создает записи и управляет ими, обеспечивая при этом доступ и аутентификацию на основе разрешений. Выбор правильной конструкции определяет рост, надежность, совместимость и будущие ИТ-потребности вашей компании. Таким образом, важно понимать компоненты, составляющие архитектуру веб-приложений.
Компоненты архитектуры веб-приложений
Обычно архитектура веб-приложения состоит из трех основных компонентов:
1. Веб-браузер. Браузер, клиентский компонент или интерфейсный компонент является ключевым компонентом, который взаимодействует с пользователем, получает входные данные и управляет логикой представления, одновременно контролируя взаимодействие пользователя с приложением. При необходимости пользовательские данные также проверяются.
2. Веб-сервер. Веб-сервер, также известный как внутренний компонент или компонент на стороне сервера, обрабатывает бизнес-логику и обрабатывает запросы пользователей, направляя запросы к нужному компоненту и управляя всеми операциями приложения. Он может обрабатывать и контролировать запросы от самых разных клиентов.
3. Сервер базы данных. Сервер базы данных предоставляет необходимые данные для приложения. Он решает задачи, связанные с данными. В многоуровневой архитектуре серверы баз данных могут управлять бизнес-логикой с помощью хранимых процедур.
Что такое трехуровневая архитектура?
В традиционной двухуровневой архитектуре есть два компонента, а именно система на стороне клиента или пользовательский интерфейс и внутренняя система, которой обычно является сервер базы данных. Здесь бизнес-логика встроена в пользовательский интерфейс или сервер базы данных. Минус 2-уровневой архитектуры в том, что с увеличением количества пользователей производительность падает. Более того, прямое взаимодействие базы данных и пользовательского устройства также вызывает некоторые проблемы безопасности. Системы бронирования железнодорожных билетов и системы управления контентом — это пара приложений, которые обычно создаются с использованием этой архитектуры.
Существует три уровня трехуровневой архитектуры:
1. Уровень представления/клиентский уровень
2. Прикладной уровень/Бизнес-уровень
3. Уровень данных
В этой модели промежуточные серверы получают запросы клиентов и обрабатывают их, координируя свои действия с подчиненными серверами, применяя бизнес-логику. Связь между клиентом и базой данных управляется промежуточным прикладным уровнем, что позволяет клиентам получать доступ к данным из различных решений СУБД.
Трехуровневая архитектура более безопасна, поскольку клиент не имеет прямого доступа к данным. Возможность развертывания серверов приложений на нескольких машинах обеспечивает более высокую масштабируемость, лучшую производительность и лучшее повторное использование. Вы можете масштабировать его по горизонтали, масштабируя каждый элемент независимо. Вы можете абстрагировать основную деятельность от сервера базы данных, чтобы эффективно выполнять балансировку нагрузки. Целостность данных улучшается, поскольку все данные проходят через сервер приложений, который решает, как и кому следует получать доступ к данным. По этой причине смена руководства является простым и экономически эффективным процессом. Клиентский уровень может представлять собой тонкий клиент, что означает снижение затрат на оборудование. Эта модульная модель позволяет модифицировать один уровень, не затрагивая остальные компоненты.
Уровни современной архитектуры веб-приложений
Построение многоуровневой архитектуры современного веб-приложения помогает определить роль каждого компонента приложения и легко вносить изменения в соответствующий уровень, не затрагивая приложение в целом. Он позволяет легко писать, отлаживать, управлять и повторно использовать код.
Три уровня архитектуры веб-приложения:
1. Уровень представления/клиентский уровень
2. Уровень приложения/уровень бизнес-логики
3. Уровень данных
Вот дополнительная схема слоев архитектуры веб-приложения для вас:
Уровень приложения: веб-сервер
Что такое веб-сервер? Проще говоря, веб-сервер запускает один или несколько веб-сайтов или веб-приложений. Веб-сервер использует протокол передачи гипертекста (HTTP) наряду с другими протоколами для прослушивания запросов пользователей через браузер. Он обрабатывает их, применяя бизнес-логику и доставляя запрошенный контент конечному пользователю.
Веб-сервер может быть аппаратным устройством или программой.
— Аппаратный веб-сервер: компьютерное устройство, подключенное к Интернету и содержащее программное обеспечение веб-сервера и компоненты веб-приложений, такие как изображения, документы HTML, файлы JS и таблицы стилей CSS.
— Программный веб-сервер: это программное обеспечение, которое понимает URL-адреса и протоколы HTTP. Пользователи могут получить к нему доступ через доменные имена для получения запрошенного контента.
В то время как статический веб-сервер доставляет контент в браузер в том виде, в котором он есть, динамический веб-сервер обновляет данные перед доставкой их в браузер.
Apache — популярный веб-сервер с открытым исходным кодом от Apache Software Foundation. Он был разработан Робертом Маккулом на языке C и XML в 1995 году. Apache основан на модели, управляемой процессами, в которой каждый запрос приводит к созданию нового потока. Модульная конструкция Apache позволяет легко масштабировать отдельные ресурсы. При минимальной настройке вы сможете управлять даже большим трафиком. Он работает в средах MacOS, Windows и Linux. Однако Linux является наиболее предпочтительной средой для Apache.
Хотя для обработки статического контента используется файловая система, динамический контент обрабатывается на сервере. Используя файлы .htaccess, вы можете выполнить дополнительную настройку параметров сервера. Безопасность хорошая. Он предлагает поддержку через IRC, Stack Overflow и списки рассылки.
NGINX — еще один популярный веб-сервер, который обычно произносится как «Engine X». Разработанный Игорем Сысоевым в 2004 году, NGINX быстро стал популярным. Он работает на основе модели, управляемой событиями, в которой тысячи запросов обрабатываются в одном потоке, обеспечивая больший объем с минимальными ресурсами. Он использует PHP для обслуживания статических ресурсов и обслуживает статический контент в 2,5 раза быстрее, чем Apache. Динамический контент обслуживается через внешние процессы. Когда дело доходит до интерпретации запросов, Apache передает местоположение файловой системы, а NGINX передает URI. Эта функция расширяет возможности NGINX в качестве балансировщика нагрузки, HTTP-кэша и прокси-сервера.
Хотя он поддерживает ОС на базе Unix, совместимость с Windows ограничена. Вы не можете выполнить дополнительные настройки. Меньшая кодовая база обеспечивает лучшую безопасность. Динамические модули не поддерживаются. Помимо списков рассылки и IRC, доступен также форум.
NGINX имеет преимущество перед Apache, поскольку он служит веб-сервером и прокси-сервером. Подход, управляемый событиями, который обрабатывает тысячи запросов в одном потоке, обеспечивает более высокую производительность, скорость и экономическую эффективность.
Уровень представления: клиентский компонент (интерфейс)
Клиентский компонент архитектуры веб-приложения позволяет пользователям взаимодействовать с сервером и внутренней службой через браузер. Код находится в браузере, получает запросы и предоставляет пользователю необходимую информацию. Именно здесь на первый план выходят дизайн UI/UX, информационные панели, уведомления, настройки конфигурации, макет и интерактивные элементы.
Вот некоторые из наиболее часто используемых интерфейсных технологий:
HTML
HTML или язык гипертекстовой разметки — это популярный стандартный язык разметки, который позволяет разработчикам структурировать содержимое веб-страницы, используя ряд элементов страницы. Разработанный Тимом Бернерсом-Ли и выпущенный в 1993 году, HTML быстро развился и стал стандартным языком разметки во всем мире.
CSS
CSS или каскадные таблицы стилей — это популярный язык таблиц стилей, который позволяет разработчикам разделять содержимое и макет веб-сайтов, разработанных с использованием языков разметки. Используя CSS, вы можете определить стиль элементов и повторно использовать их несколько раз. Аналогичным образом вы можете применить один стиль к нескольким сайтам. Это просто и легко научиться. Вы можете применить стиль к одному элементу, всей веб-странице или всему веб-сайту. Это также удобно для устройства.
Совместимость и безопасность браузера — две области, вызывающие беспокойство. Точно так же разные версии CSS также создают путаницу. Разработчикам рекомендуется проверять совместимость перед внесением каких-либо изменений в проект.
JavaScript
JavaScript или JS — самый популярный язык программирования на стороне клиента, который в последнее время используется более чем 90% веб-сайтов. Он был разработан Бренданом Эйхом из Netscape в 1995 году. В JavaScript используется простой и легкий в освоении синтаксис. Этот язык настолько популярен, что каждый браузер оснащен движком JS для запуска кода JavaScript на устройствах. Код JS легко вставить на любую веб-страницу, что обеспечивает высокую совместимость. Это позволяет вам создавать богатые интерфейсы для улучшения пользовательского интерфейса и UX. Будучи на стороне клиента, JS также снижает нагрузку на сервер.
Однако разработчикам следует быть осторожными с безопасностью, поскольку код выполняется на стороне клиента, что иногда может быть использовано хакерами.
React
React — это JavaScript с открытым исходным кодом, который приобрел популярность в последние годы. Он был разработан Джорданом Уоком из Facebook в 2013 году. Преимущества React позволяют разработчикам легко создавать высококачественные динамические веб-приложения с минимальным использованием кода и усилий.
ReactJS прост в освоении и использовании. Разработчикам доступна обширная документация и множество удобных инструментов. Код можно использовать повторно. ReactJS использует виртуальный DOM, что означает, что соответствующие элементы обновляются при внесении изменений, а не перезаписывается все дерево DOM. Это повышает эффективность и оптимизирует использование памяти. ReactJS использует односторонний поток данных, что означает, что изменения, внесенные в «дочерние» элементы, не влияют на «родительский» элемент. Код легко тестировать и оптимизирован для SEO.
С другой стороны, среда разработки ReactJS очень динамична, а это означает, что разработчикам следует активно отслеживать изменения и быстро адаптировать новые навыки для использования React. Более того, технологии React быстро совершенствуются. Однако документация не успевает за этим темпом. Критическая проблема заключается в том, что ReactJS фокусируется на части пользовательского интерфейса, и вам приходится зависеть от других библиотек для функциональности клиентской стороны.
Vue.js
Vue.js — это JavaScript-фреймворк с открытым исходным кодом, написанный Эваном Ю в 2014 году. Этот фреймворк позволяет разработчикам легко создавать интерфейсы пользовательского интерфейса для веб-сайтов, настольных компьютеров и мобильных устройств. Vue.js поставляется с удобными инструментами, которые удовлетворяют базовые потребности программирования. Инструмент легок для загрузки и установки. Его легко изучить и использовать. Он использует виртуальный DOM, поэтому, когда пользователь взаимодействует с элементом, браузеру не нужно отображать всю страницу, а только элемент. Скорость и производительность хорошие. Он использует двустороннюю модель привязки данных, что позволяет более эффективно отслеживать данные и обновлять связанные компоненты. Компоненты многоразового использования. Он легко интегрируется с существующими приложениями. Документация краткая и хорошо структурированная. Поддержка сообщества – это хорошо.
Несмотря на хорошую поддержку сообщества, Vue.js в основном используется китайскими компаниями, такими как Alibaba и Xiomi. Таким образом, форумы и обсуждения часто проводятся на китайском языке, что создает языковой барьер для англоговорящих людей. Набор инструментов подходит для базовых проектов, но предлагает ограниченную поддержку для крупномасштабных проектов. Гибкость, которую он предлагает, может также создавать проблемы с качеством в крупных проектах. GitLab, Alibaba и Adobe — одни из популярных компаний, использующих Vue.js.
Angular.js
Angular — это платформа веб-приложений с открытым исходным кодом, разработанная Google в 2016 году. Это полная переработка платформы Angular.js. На данный момент это одна из самых популярных сред разработки интерфейсов, доступных на рынке.
NGModules — это строительный блок Angular, предлагающий все функции для разработки приложений, такие как компоненты, модули, шаблоны, директивы, внедрение сервисов и зависимостей, маршрутизация и т. д. Он помогает разработчикам быстро создавать прототипы. Он использует простые HTML-шаблоны. Тестирование происходит быстро и легко благодаря архитектуре внедрения зависимостей.
Angular использует двустороннюю привязку данных, что делает манипуляции с DOM простыми и быстрыми. Функции повышения производительности ЦП делают его хорошим выбором для крупномасштабных приложений. Он поставляется с различными плагинами из коробки. Созданный ИТ-гигантом Google, Angular пользуется активной поддержкой сообщества. Популярность и рыночная стоимость подразумевают, что на рынке вы найдете высококвалифицированных специалистов по Angular.
Однако иерархическая структура иногда может затруднить отладку. Такие концепции, как инверсия управления, поиск зависимостей и внедрение зависимостей, требуют длительного обучения. Для запуска Angular на компьютере должен быть установлен JavaScript. Хотя двусторонняя привязка данных — отличная функция, она может привести к снижению производительности на старых и устаревших устройствах. Интеграция устаревшей инфраструктуры с Angular также вызывает беспокойство.
Если вы хотите выбрать лучшие из этих инструментов разработки интерфейса, настоятельно рекомендуется использовать React и Vue.js. React — это легкий инструмент с лучшими функциями разработчика, позволяющий быстро создавать качественное программное обеспечение.
Vue.js — это ориентированный на представление продукт, легкий, простой в использовании и оснащенный мощным набором инструментов разработчика. Для начала вам просто нужно загрузить интерфейс и добавить JavaScript.
Уровень приложения: серверный компонент (внутренняя часть)
Серверный компонент — это ключевой компонент архитектуры веб-приложения, который получает запросы пользователей, выполняет бизнес-логику и доставляет необходимые данные во внешние системы. Он содержит серверы, базы данных, веб-сервисы и т. д.
Вот некоторые из наиболее часто используемых серверных технологий:
Node.js
Node.js — это кроссплатформенная среда выполнения с открытым исходным кодом, разработанная Райаном Далем. Он был создан на базе Google Chrome V8 Engine для запуска сетевых и серверных приложений и был выпущен в 2009 году. Разработчики используют JavaScript для создания приложений node.js и запуска их в среде выполнения node.js на платформах Windows, macOS и Linux.
Node.js очень популярен, поскольку предлагает богатую библиотеку модулей JavaScript, которые позволяют разработчикам быстро создавать качественные приложения. Node.js не буферизует данные и выполняет код очень быстро. Он управляем событиями, асинхронен, работает в одном потоке и обладает высокой масштабируемостью. Node.js лучше всего подходит приложениям с потоковой передачей данных, интенсивным использованием данных, привязанным к вводу-выводу и основанным на JSON-API. Paypal, Uber, eBay и GoDaddy — одни из популярных приложений, работающих на Node.js. Он не подходит для приложений, интенсивно использующих процессор.
Java
Java — один из самых популярных и эффективных языков программирования всех времен. Написанный Джеймсом Гослингом в 1995 году, Java представляет собой объектно-ориентированный язык программирования на основе классов, который позволяет разработчикам писать код и запускать его на любой платформе с использованием среды виртуальной машины Java (JVM). Это означает, что вам не нужна Java на целевой машине. Этот язык легко изучать, кодировать, компилировать и отлаживать. Будучи независимыми от платформы, Java-программы экономически эффективны в создании и запуске. Используя концепции OOPS, вы можете повторно использовать объекты в других программах. Поскольку он не работает с явными указателями, несанкционированный доступ к памяти избегается. Он поддерживает многопоточность, переносимость, автоматическую сборку мусора, распределенную сеть и т. д.
С другой стороны, Java требует значительного объема памяти. Из-за абстракции JVM программы также работают медленнее. Резервной копии тоже нет. UX/UI не привлекателен. Однако преимущества разработки серверных компонентов архитектуры веб-приложений на Java перевешивают недостатки.
Python
Python — это язык программирования высокого уровня с открытым исходным кодом, написанный Гвидо Ван Россумом и выпущенный в 1991 году. Сегодня это быстрорастущий и популярный язык программирования и сильная альтернатива для построения архитектуры веб-приложений на Java. Он прост в освоении и развитии и богат множеством функций. Этот динамически типизированный язык очень гибок и подходит для небольших и крупных проектов веб-приложений, а также для различных сегментов, таких как мобильные приложения, видеоигры, программирование искусственного интеллекта и т. д. Он позволяет делать больше с меньшим количеством кода, а это означает, что вы могут быстро создавать и тестировать прототипы, что повышает производительность. Python предлагает обширную библиотеку, содержащую код практически для всех типов программ. Благодаря динамичному сообществу поддержка всегда доступна.
Однако по сравнению с современными языками Python медленнее. Проблемы с потоками являются еще одной проблемой. Python не является родным для мобильных приложений. Google, Spotify, Instagram и Facebook — одни из популярных ИТ-гигантов, использующих Python.
PHP Laravel
PHP Laravel — это PHP-фреймворк, который помогает разработчикам с легкостью создавать собственные веб-приложения. Это фреймворк с открытым исходным кодом, который довольно популярен среди других фреймворков PHP. PHP Laravel — это платформа, основанная на MVC (модель, представление и контроллер).
Синтаксис Laravel элегантен и выразителен. Благодаря обширным встроенным функциям и структурам разработчики могут легко писать код и быстрее развертывать приложения. Это повышает производительность и скорость. Документация хорошая. Важным преимуществом PHP Laravel является функция автоматического тестирования, которая помогает тестировать и отлаживать ошибки на начальном этапе. Также доступны автоматические задачи и планирование. Поддержка реляционного сопоставления объектов элегантна. PHP Laravel предлагает токены подделки межсайтовых запросов, обеспечивающие безопасность. Он масштабируем и экономически эффективен.
Однако обновления продукта иногда могут создавать проблемы. Laravel Composer можно улучшить. Поскольку это относительно новый продукт, поддержка сообщества не так уж велика. PHP Laravel лучше всего подходит средним и малым организациям.
Go
Язык программирования Go создан ИТ-гигантом Google, что, в первую очередь, придает ему значительную силу. Его написали Роберт Гриземер, Кен Томпсон и Роб Пайк в 2009 году. Go также известен как Golang. Он похож на язык C, его легко изучить и создать. Поскольку виртуальной среды выполнения нет, код Go компилируется быстрее и создает двоичный файл меньшего размера. Он использует статическую типизацию и типы интерфейса. Стандартная библиотека предлагает ряд встроенных функций, а также поддержку тестирования. Возможен сбор мусора. Параллельное программирование проще по сравнению с другими языками.
С другой стороны, поддержка библиотеки недостаточна. В некоторых случаях поддержка сообщества оказывается невосприимчивой. Неявными интерфейсами может быть сложно управлять. Без дженериков повторное использование кода затруднено.
.NET
.NET — это среда разработки программного обеспечения, разработанная Microsoft и выпущенная в 2001 году для настольных компьютеров и веб-приложений. Созданная ИТ-гигантом Microsoft, NET быстро стала популярной для разработки различных программных продуктов.
.NET поставляется в трех вариантах:
1. .NET Framework: это первый продукт, специально разработанный для платформы Windows.
2. .NET Core: .NET Core был выпущен в 2016 году как кроссплатформенное решение для платформ macOS и Linux.
3. Xamarin: Xamarin не разработан Microsoft, но был приобретен компанией в 2016 году. Xamarin расширяет платформу .NET для поддержки разработки собственных мобильных приложений.
.NET Standard — это единая библиотека базовых классов для реализаций .NET Framework, .NET Core и Xamarin.
.NET — это модель объектно-ориентированного программирования (ООП), использующая модульную структуру, которая позволяет разработчикам разбивать код на более мелкие части и беспрепятственно создавать программные продукты и управлять ими с помощью конвейеров CI/CD. Он предлагает надежную и в то же время простую систему кэширования, которая повышает скорость и производительность. Автоматический мониторинг в ASP.NET является дополнительным преимуществом. Visual Studio IDE — это единая среда IDE, которая помогает разработчикам отслеживать и управлять всеми операциями разработки с единой панели. Будучи независимым от языка и платформы, он позволяет использовать различные среды разработки. Развертывание кода и управление им являются гибкими и простыми. .NET поставляется с обширной документацией и поддержкой сообщества.
Однако поддержка объектно-реляционных отношений ограничена. Утечки памяти — это проблема, требующая пристального внимания при кодировании приложений. Сильная зависимость от Microsoft приводит к привязке к поставщику и более высоким затратам на лицензирование. .NET лучше всего подходит для корпоративных продуктов, требующих высокой масштабируемости и кроссплатформенных решений.
Ruby
Ruby — популярный язык программирования, разработанный Юкихиро Мацумото из Японии в 1995 году. Экономия времени — одно из самых больших преимуществ Ruby. В сочетании с платформой Rails он позволяет разработчикам быстро создавать и развертывать приложения. Инструмент предлагает обширную библиотеку и полезные инструменты. Он оснащен встроенными средствами безопасности для снижения рисков, связанных с SQL-инъекциями, программным обеспечением для межсайтовых сценариев (XSS) и подделкой межсайтовых запросов (CSRF). Ruby имеет поддерживающее сообщество и хорошую документацию.
Хотя разработчики могут быстро создавать приложения, их скорость вызывает беспокойство. Тем не менее, эта проблема в основном затрагивает крупномасштабные приложения. У малых и средних организаций в этой сфере проблем нет.
Ruby не так популярен, как Java или Python. По этой причине найти качественных специалистов для этого сегмента непросто. Airbnb, GitHub, Bloomberg и Etsy — несколько популярных компаний, использующих Ruby.
Среди серверных инструментов разработки настоятельно рекомендуется Node.js и Python. Node.js — это простое в освоении, легкое, удобное для разработчиков, масштабируемое и расширяемое кроссплатформенное решение. Python использует простой синтаксис, фокусируется на естественном языке и позволяет легко писать и быстрее выполнять код. Сообщество также очень поддерживает.
Прикладной уровень: интерфейс прикладного программирования (API).
Интерфейс прикладного программирования (API) — это не технология, а концепция, которая позволяет разработчикам получать доступ к определенным данным и функциям программного обеспечения. Проще говоря, это посредник, который позволяет приложениям взаимодействовать друг с другом. Он включает протоколы, инструменты и определения подпрограмм, необходимые для создания приложений.
Например, когда вы входите в приложение, оно вызывает API, чтобы получить данные и учетные данные вашей учетной записи. Приложение свяжется с соответствующими серверами, чтобы получить эту информацию и вернуть эти данные пользовательскому приложению. Веб-API — это API, доступный через Интернет по протоколу HTTP. Его можно создать с использованием таких технологий, как .NET и Java.
Благодаря API разработчикам не нужно создавать все с нуля, а использовать существующие функции, представленные в виде API, чтобы повысить производительность и сократить время выхода на рынок. Сокращая усилия по разработке, API значительно сокращают затраты на разработку. Это также улучшает сотрудничество и взаимодействие во всей экосистеме, одновременно улучшая качество обслуживания клиентов.
Существуют различные типы API:
— RESTful API: API передачи репрезентативного состояния в облегченном формате JSON. Он хорошо масштабируем, надежен и обеспечивает высокую производительность, что делает его самым популярным API.
— SOAP: простой протокол доступа к объектам использует XML для передачи данных. Это требует большей пропускной способности и повышенной безопасности.
— XML-RPC: расширяемый язык разметки — удаленные вызовы процедур используют специальный формат XML для передачи данных.
— JSON-RPC: для передачи данных используется формат JSON.
Уровень приложения: экземпляр сервера/экземпляр облака
Серверы или облачные экземпляры являются важной частью архитектуры веб-приложений. Облачный экземпляр — это экземпляр виртуального сервера, который создается, доставляется и размещается в общедоступном или частном облаке и доступен через Интернет. Он работает как физический сервер, который можно легко перемещать между несколькими устройствами или развертывать несколько экземпляров на одном сервере. Таким образом, он очень динамичен, масштабируем и экономически эффективен. Вы можете автоматически заменять серверы без простоя приложений. Используя облачные экземпляры, вы можете легко развертывать веб-приложения и управлять ими в любой среде.
Уровень данных: база данных
База данных — это ключевой компонент веб-приложения, который хранит информацию для веб-приложения и управляет ею. С помощью функции вы можете искать, фильтровать и сортировать информацию по запросу пользователя и предоставлять необходимую информацию конечному пользователю. Они обеспечивают доступ на основе ролей для поддержания целостности данных.
При выборе базы данных для архитектуры вашего веб-приложения размер, скорость, масштабируемость и структура — это четыре аспекта, которые требуют вашего внимания. Для структурированных данных хорошим выбором являются базы данных на основе SQL. он подходит для финансовых приложений, где целостность данных является ключевым требованием.
Для обработки неструктурированных данных хорошим вариантом является NoSQL. Он подходит для приложений, в которых характер входящих данных непредсказуем. Базы данных «ключ-значение» связывают каждое значение с ключом и подходят для баз данных, в которых хранятся профили пользователей, обзоры, комментарии в блогах и т. д. Для аналитики хорошим выбором являются базы данных с широкими столбцами.
Продвинутая и масштабируемая архитектура веб-приложений
Архитектура веб-приложений развивается. Таким образом, организациям следует активно отслеживать эти изменения и соответствующим образом перестраивать архитектуру. Вот несколько тенденций, на которые стоит обратить внимание:
Система кэширования
Система кэширования — это локальное хранилище данных, которое обеспечивает быстрый доступ к данным для сервера приложений вместо того, чтобы каждый раз обращаться к базе данных. В традиционной настройке данные хранятся в базе данных. Когда пользователь делает запрос, сервер приложений запрашивает эти данные из базы данных и представляет их пользователю. Когда те же данные запрашиваются снова, сервер должен снова выполнить тот же процесс, который является повторяющимся и требует много времени. Сохраняя эту информацию во временной кэш-памяти, приложения могут быстро предоставлять данные пользователям.
Система кэширования может быть спроектирована в 4 моделях:
1. Кэш сервера приложений: кеш в памяти рядом с сервером приложений (для приложений с одним узлом).
2. Глобальный кеш: все узлы имеют доступ к одному кэш-пространству.
3. Распределенный кеш. Кэш распределяется по узлам, где используется функция согласованного хеширования для маршрутизации запроса к необходимым данным.
4. Сеть доставки контента (CDN): используется для доставки больших объемов статических данных.
Инструменты кэширования
Redis и Memcached — две самые популярные системы кэширования со схожими функциями. Однако Redis предлагает богатый набор инструментов, что делает его пригодным для выполнения самых разных задач. С другой стороны, Memcached прост и удобен в использовании.
Система кэширования от AWS называется AWS ElastiCache. Этот веб-сервис позволяет администраторам масштабировать службу хранилища данных в памяти и управлять ею в облаке. AWS также предлагает полностью управляемое хранилище данных в памяти, совместимое с Redis, под названием Amazon ElastiCache для Redis, и полностью управляемый сервис хранилища данных в памяти, совместимый с Memcached, под названием Amazon ElastiCache для Memcached.
Облачное хранилище (Amazon S3)
В архитектуре веб-приложений облачное хранилище является очевидным требованием. Облачное хранилище — это хранение данных в облаке и доступ к ним через Интернет. Поставщик облачных услуг предоставляет инфраструктуру хранения данных по модели подписки с оплатой по факту использования.
Поскольку AWS является самым популярным поставщиком облачных услуг, Amazon S3 является широко используемым решением облачного хранилища в средах AWS с архитектурой веб-приложений по всему миру. Amazon Simple Storage Service (S3) — это гибкая, экономичная, долговечная, безопасная служба облачного хранения, обеспечивающая высокую доступность и высокую масштабируемость.
В AWS единица облачного хранилища называется «ведром», в котором хранятся объекты. При создании сегмента он развертывается в регионе, указанном пользователем. После завершения развертывания и добавления объектов в корзину пользователь может выбрать тип класса хранилища, а также такие функции, как контроль версий, политики жизненного цикла, политика корзины и т. д. AWS берет на себя управление жизненным циклом группы объектов. включая политику IAM и защиту данных.
Облачное хранилище Azure — еще одна популярная служба облачного хранения, предлагаемая Microsoft Azure. Самое лучшее в хранилище Azure — это высокая доступность, время безотказной работы 99,95 % и высокий уровень безопасности. При цене 0,18 доллара США за ГБ в месяц это очень рентабельно. Azure поставляется с комплексным набором инструментов административного доступа и разработки, которые помогают организациям беспрепятственно координировать все бизнес-операции.
Google Cloud Storage — это облачное хранилище от Google по цене 0,02 доллара США за ГБ в месяц. Он доступен во многих регионах, отличается высокой надежностью и легко интегрируется с другими сервисами Google. Инструмент поставляется с хорошей документацией.
CDN (CloudFront)
Сеть доставки контента (CDN) — это сеть серверов, которая устанавливается в различных географических точках для более быстрой и качественной доставки контента пользователям. Вместо обращения к центральному серверу запрос пользователей направляется на сервер CDN, на котором хранится кэшированная версия контента. Таким образом, скорость и производительность сайта увеличиваются, а потери пакетов уменьшаются. Нагрузка на сервер уменьшена. Это также обеспечивает сегментацию аудитории и расширенную веб-безопасность.
CloudFront — популярный сервис CDN для архитектуры веб-приложений. Он действует как распределенный кеш, обеспечивая более высокую скорость, низкую задержку и лучшее качество обслуживания клиентов. Учитывая глобальное присутствие AWS, CloudFront предоставляет пользователям более широкий выбор географических местоположений. CloudFront хорошо интегрируется с другими сервисами AWS, такими как Amazon EC2, AWS Lambda, Amazon CloudWatch, Amazon S3 и т. д., что упрощает вашу работу. Он гибок, прост в настройке и обеспечивает высокую масштабируемость. Он также предлагает эластичные сервисы и аналитику. Вы также можете контролировать доступ к контенту.
Azure CDN — это популярная сеть доставки контента на облачной платформе Microsoft Azure, которая проста в настройке и использовании и обеспечивает низкую задержку.
Сеть доставки контента Google называется Cloud CDN. Он использует глобально распределенные пограничные серверы для кэширования контента в месте использования и доставляет контент на высоких скоростях.
CloudFlare — еще один популярный, который чаще всего используют специалисты компании DST Globalсервис CDN. Хотя CloudFlare в первую очередь предлагает надежные услуги DNS и не является традиционной сетью доставки контента, он действует как обратный прокси-сервер для маршрутизации трафика через свою глобальную сеть центров обработки данных.
Балансировщик нагрузки
Как следует из названия, балансировщик нагрузки — это служба, которая балансирует нагрузку трафика, распределяя ее по разным серверам в зависимости от доступности или предопределенных политик. Когда запрос пользователя поступает в балансировщик нагрузки, он определяет состояние сервера с точки зрения доступности и масштабируемости и направляет запрос на лучший сервер. Балансировщик нагрузки может быть аппаратным компонентом или программным обеспечением.
Балансировку нагрузки можно выполнить двумя способами.
1. Балансировка нагрузки на уровне TCP/IP. Балансировка нагрузки основана на DNS.
2. Балансировка нагрузки на уровне приложения. Балансировка нагрузки на основе нагрузки приложения.
Инструменты балансировки нагрузки:
Оригинальный эластичный балансировщик нагрузки в AWS — AWS Classic Load Balancer. Он работает на уровне TCP (уровень 4) и уровне приложений (уровень 7). Однако он перенаправляет трафик только на один порт для каждого экземпляра.
Еще один замечательный LB — балансировщик нагрузки приложений AWS, который работает на уровне приложений (HTTP) и может перенаправлять трафик на несколько портов для каждого экземпляра. Он также обслуживает несколько доменных имен.
Несколько серверов
В традиционной веб-архитектуре вы увидите веб-сервер и базу данных. Веб-сервер слушает запросы клиентов и обращается к базе данных для предоставления необходимой информации или обработки бизнес-логики. Когда число одновременных пользователей увеличится, на веб-сервере закончатся ресурсы. Хотя обновление конфигурации сервера помогает на какое-то время, оно предоставляет ограниченные возможности, но также приводит к возникновению единой точки отказа. Развертывание нескольких серверов — хороший выбор для создания высокомасштабируемой веб-архитектуры.
При разработке многосерверной архитектуры организации могут подключить несколько серверов развертывания ОС к одной или нескольким базам данных. Однако важно, чтобы они воспроизводились с соответствующим содержанием. Репликацию можно запланировать в определенное время.
Очереди сообщений
Очередь сообщений — это буфер, который асинхронно хранит сообщения и облегчает связь между различными службами в веб-приложении. В современной среде микросервисов программное обеспечение разрабатывается в виде более мелких, модульных и независимых строительных блоков, которые взаимодействуют друг с другом с помощью RESTful API. Связь между этими блоками координируется с помощью очередей сообщений. Программные компоненты подключаются к концам этих очередей сообщений для отправки и получения сообщений и их обработки. Очереди сообщений обеспечивают детальную масштабируемость, упрощают процессы разделения и повышают надежность и производительность.
Amazon Simple Queue Service (SQS) — это полностью управляемая служба очереди сообщений публикации/подписки (pub/sub), предлагаемая Amazon. Используя API веб-сервисов, предоставляемый AWS SQS, пользователи могут получать доступ к сообщениям с помощью любого языка программирования. Обмен сообщениями обрабатывается асинхронно, что означает, что сообщения ждут в очереди, и приложения могут получить к ним доступ позже.
Amazon SQS использует два типа очередей.
1. FIFO: строки сообщений обрабатываются в том же порядке, в котором они были отправлены. Это полезно для операций, в которых порядок процесса имеет решающее значение.
2. Стандартные очереди. Строка сообщений остается прежней, но порядок может измениться. Это полезно для задач, в которых сообщения распределяются по различным узлам.
AWS SQS поддерживает 300 сообщений в секунду. Каждое сообщение можно настроить. Вы можете хранить сообщения в течение длительного периода времени от 1 минуты до 14 дней. Возможность разделения компонентов приложения помогает добиться высокой производительности. Это устраняет административные издержки, сохраняя при этом конфиденциальность данных. Совместимость с другими продуктами AWS помогает легко интегрировать его с существующей инфраструктурой.
Схема архитектуры веб-приложения
Здесь вы сможете проанализировать процесс от начала до конца с помощью диаграммы архитектуры веб-приложения. По мнению разработчиков DST Global важно учитывать элементы и ресурсы, которые будут действовать в потоке, например API, облачное хранилище, технологии и базы данных.
Типы архитектур веб-приложений
Архитектуру веб-приложений можно разделить на различные категории в зависимости от моделей разработки и развертывания программного обеспечения.
Монолитная архитектура
Монолитная архитектура — это традиционная модель разработки программного обеспечения, также известная как архитектура веб-разработки, в которой все программное обеспечение разрабатывается как единый фрагмент кода, проходящий традиционную водопадную модель. Это означает, что все компоненты взаимозависимы и взаимосвязаны, и каждый компонент необходим для запуска приложения. Чтобы изменить или обновить конкретную функцию, вам необходимо изменить весь код, который нужно переписать и скомпилировать.
Поскольку монолитная архитектура рассматривает весь код как единую программу, создание нового проекта, применение фреймворков, скриптов и шаблонов, а также его тестирование становится простым и легким. Развертывание также легко. Однако по мере того, как код становится больше, становится трудно управлять обновлениями и выполнять их; даже для небольшого изменения вам нужно пройти весь процесс вашей архитектуры веб-разработки. Поскольку каждый элемент взаимозависим, масштабировать приложение непросто. Более того, он ненадежен, поскольку одна точка отказа может привести к сбою приложения.
Если вы хотите создать легкое приложение и у вас ограниченный бюджет, монолитная архитектура подойдет для этой цели. Однако имеет смысл использовать монолитную модель, когда ваша команда разработчиков работает в одном месте, а не разбросана удаленно.
Микросервисная архитектура
Архитектура микросервисов решает несколько проблем, с которыми сталкиваются в монолитной среде. В микросервисной архитектуре код разрабатывается как слабосвязанные независимые сервисы, которые взаимодействуют через RESTful API. Каждый микросервис содержит собственную базу данных и управляет определенной бизнес-логикой, что означает, что вы можете легко разрабатывать и развертывать независимые сервисы.
Поскольку микросервисная архитектура слабосвязана, она обеспечивает гибкость для обновления/изменения и масштабирования независимых сервисов. Разработка становится простой и эффективной, а также обеспечивается непрерывная доставка. Разработчики могут быстро адаптироваться к инновациям. Для масштабируемых и сложных приложений микросервисы — хороший выбор.
Однако развертывание нескольких сервисов с экземплярами среды выполнения является непростой задачей. С ростом количества сервисов растет и сложность управления ими. Более того, приложения микросервисов совместно используют базы данных разделов. Это означает, что вам следует обеспечить согласованность между несколькими базами данных, на которые влияет транзакция.
Контейнеры
Контейнерная технология — лучший вариант для развертывания микросервисов. Контейнер — это инкапсуляция облегченной среды выполнения приложения, которое может выполняться на физической или виртуальной машине. Таким образом, приложения запускаются в единой среде, начиная с устройства разработчика и заканчивая производственной средой. Абстрагируя выполнение на уровне ОС, контейнеризация позволяет запускать несколько контейнеров внутри одного экземпляра ОС. Хотя это снижает накладные расходы и вычислительную мощность, это также повышает эффективность.
Контейнеризация позволяет разработчикам добавлять несколько компонентов приложения в одну среду виртуальной машины вместо разделения кода на разные виртуальные машины и тем самым получать больше вычислительной мощности приложения. Благодаря легкому весу контейнеры движутся быстрее. Они гибкие, надежные и лучше всего подходят для сред микросервисов на основе политик.
Docker — самая популярная технология контейнеризации, предлагающая комплексную экосистему для технологий контейнеризации. Он предлагает более высокую производительность, простую в использовании технологию и широкую поддержку сообщества.
Бессерверная архитектура
Бессерверная архитектура — это модель разработки программных приложений. В этой структуре предоставлением базовой инфраструктуры управляет поставщик инфраструктурных услуг. Это означает, что вы платите только за инфраструктуру, когда она используется, а не за время простоя ЦП или неиспользуемое пространство. Бессерверные вычисления снижают затраты, поскольку ресурсы используются только во время выполнения приложения. Задачи масштабирования выполняет облачный провайдер. Более того, серверный код упрощается. Это снижает затраты на разработку и ускоряет вывод продукта на рынок.
Обработка мультимедиа, потоковая передача в реальном времени, чат-боты, конвейеры CI, сообщения датчиков IoT и т. д. — вот некоторые из вариантов использования бессерверных вычислений.
В архитектуре микросервисов вы можете выполнять бессерверные вычисления с помощью AWS Lambda, API Gateway и пошаговых функций API.
AWS Lambda
AWS Lambda — это сервис бессерверных вычислений, предлагаемый Amazon. Запущенная в 2014 году, Lambda предлагает среду выполнения для функций, написанных на таких языках, как Python, C#, Java, Node.js и т. д. Она автоматически подготавливает и удаляет серверы в соответствии с требованиями к трафику. Вам не нужно загружать все приложение, только необходимые функции, а затем запускать его для запуска службы. Lambda предлагает простоту выполнения, повышенную устойчивость приложений и экономичное решение. С другой стороны, нет контроля над окружающей средой.
API-шлюз
API-шлюз — это инструмент управления API, который позволяет создавать, публиковать, защищать и управлять API-интерфейсами HTTP, WebSocket и REST. Выступая в качестве обратного прокси-сервера, шлюз API получает различные вызовы API, выполняет агрегацию служб для выполнения этих вызовов и доставляет результат. Шлюзы API помогают вам защитить ваши API, запускать инструменты аналитики на API, подключать службу выставления счетов или управлять старыми и удаленными API и т. д. В бессерверной среде ресурсы предоставляются на основе вызовов API. Шлюз API помогает вам развертывать бессерверные функции и управлять ими.
AWS Step Functions
AWS Step Functions — это визуальный инструмент рабочего процесса AWS, который позволяет разработчикам разбить процесс на ряд шагов. Благодаря этому сервису с низким кодированием автоматизация ИТ-процессов, создание распределенных приложений и конвейеров машинного обучения становится проще. Вы можете быстро создавать и развертывать надежные и масштабируемые приложения, а также управлять отказоустойчивыми рабочими процессами с отслеживанием состояния, используя меньше интеграционного кода.
Лучшие практики архитектуры веб-приложений от специалистов DST Global
Вот некоторые из лучших практик, которым следует следовать при разработке отличной архитектуры веб-приложений.
Масштабируемый веб-сервер
Масштабируемый веб-сервер имеет решающее значение для обеспечения стабильной производительности приложений независимо от количества одновременно работающих пользователей, местоположения и времени. Существует три типа параметров масштабирования: горизонтальное масштабирование, вертикальное масштабирование и диагональное масштабирование. В то время как вертикальное масштабирование связано с обновлением/понижением конфигурации устройства, горизонтальное масштабирование связано с увеличением/уменьшением количества устройств. Диагональное масштабирование предполагает объединение обеих моделей. Рекомендуется выбрать модель горизонтального масштабирования, поскольку вы не будете ограничены конфигурацией или количеством серверов. Более того, вы можете комбинировать вертикальное масштабирование по мере необходимости.
Адаптируйте облако с помощью эластичной инфраструктуры
Поскольку гибридные и мультиоблачные среды становятся все более популярными, адаптация к облаку и активное предоставление ресурсов являются ключом к созданию высокопроизводительных веб-приложений. Эластичная инфраструктура включает в себя предварительно настроенные сетевые системы, серверы виртуальных машин, хранилища и вычислительные ресурсы, что позволяет легко управлять средой с помощью порталов самообслуживания. Это дает гибкость для быстрой адаптации к меняющимся потребностям рынка и ожиданиям клиентов.
Неизменяемая инфраструктура
Проще говоря, неизменяемая инфраструктура — это то, что нельзя изменить после развертывания. Это позволяет администраторам автоматически выделять ресурсы с помощью кода. Когда серверы подлежат обновлению или модификации, они автоматически заменяются более новыми.
Конфигурационный дрейф — серьезная проблема в изменяемой инфраструктуре. Проблемы масштабирования и отладки при репликации производственной среды усугубляют эту проблему. Неизменяемая инфраструктура использует проверенный образ с контролем версий для предоставления новых серверов для каждого развертывания. Таким образом, предыдущее состояние сервера не имеет значения. Вы можете протестировать серверы перед их развертыванием. Он устраняет конфигурационные отклонения, обеспечивает горизонтальное масштабирование, обеспечивая при этом простой откат и восстановление в согласованных промежуточных средах.
Микросервисный и бессерверный подход
Микросервисные и бессерверные вычисления имеют решающее значение для разработки веб-приложений. Однако разница в том, что микросервисная архитектура предлагает долгосрочное решение с высокой масштабируемостью, а бессерверные вычисления обеспечивают эффективность кода. Бессерверные функции запускаются только при их запуске.
Объединив обе модели, вы сможете получить лучшее из обоих миров. Вы можете использовать AWS Step Functions, чтобы назначить триггеры для объединения нескольких функций в сервис и назначить им триггеры. С помощью микросервисов, запускаемых по событиям, вы можете построить комбинированную систему, обеспечивающую эффективность кода, долгосрочную стабильность, экономичность и масштабируемость.
Мультиарендная архитектура
Веб-приложения теперь поставляются как приложения SaaS. Существует две модели развертывания приложений SaaS: одноарендная и многотенантная архитектура.
— Однотенантная архитектура: для каждой организации создается единая автономная среда, включающая экосистему инфраструктуры, программного обеспечения и оборудования.
— Мультитенантная архитектура: единая облачная среда с полностью централизованными и логически изолированными службами используется несколькими организациями.
Для веб-приложений использование мультитенантной архитектуры дает множество преимуществ. Организации могут управлять единой базой кода для всех пользователей, сокращая накладные расходы и проблемы конфликтов кода. Это также снижает затраты на серверную инфраструктуру за счет эффекта масштаба. Наряду с сокращением усилий по разработке это также ускоряет вывод продукта на рынок.
DST Platform — набор инструментов для организации работы всей компании и комплексная IT инфраструктура для ведения бизнеса
Установите DST Platform — которая включает в себя — систему управления сайтом, бизнесом и IT инфраструктурой. Также DST Platformподдерживает любую архитектуру и может быть в любой момент масштабирована.
DST Platform (текущая актуальная версия 2) — это одна из самых мощных, функциональных и производительных CMS-систем. Точнее, уже далеко не совсем CMS, а CMF система(Content Management Framework) с открытым исходным кодом, то есть фреймворк, предназначенный для разработки сложных веб-приложений и веб-интерфейсов с установленной панелью управления.
На базе DST Platform можно разработать всё что угодно. В том числе высоконадёжные и максимально безопасные банковские сервисы, маркетплейсы, социальные сети, нагруженные порталы, интерактивные сайты, эко-системы, сервисы государственных структур и т.д. Система очень гибко настраивается под любой тип проекта, ядро обновляется независимо от остального кода, поэтому обеспечивает достаточный уровень защиты и производительности в любой момент времени.
Первый релиз DST Platform состоялсяв 2015 году. Система написана на языке программирования PHP и в качестве основы для многих функций использует популярный PHP-фреймворк Laravel.
Во второй версии платформыимеются все самые необходимые инструменты: отчёты производительности, система управления доступом и ролями пользователей, конструктор макетов, система модерации любого контента, REST API, генерация дополнительныхкомпонентов и модулей, встроенная система тестирования функций, настраиваемые таксономии, управление базами данных и сервером прямо из единойпанели панели управленияи т.д.
Перечислить все возможности DST Platform практически невозможно, но ясно одно – это система корпоративного уровня, разрабатываемая профессионалами. При этом DST Platform имеет открытый исходный код.
Защитите архитектуру с помощью рекомендаций HIPAA, PCI и SOC2.
Построение безопасной архитектуры — минимальное требование для любой организации. Применение протоколов и политик безопасности не только защищает ваши данные и среду, но также помогает вам легко управлять задачами аудита и соблюдать государственные постановления.
— HIPAA: Закон о переносимости и подотчетности медицинского страхования (HIPAA) является важным требованием, которое медицинские организации должны соблюдать. Это помогает сократить случаи мошенничества в сфере здравоохранения и одновременно защитить частную медицинскую информацию.
— PCI DSS: Стандарт безопасности данных индустрии платежных карт (PCI DSS) определяет набор процедур и политик для финансовых организаций, которые имеют дело с конфиденциальными финансовыми данными клиентов.
— SOC 2: Процедура аудита SOC 2 является ключевым аспектом обеспечения безопасного управления вашими данными поставщиком облачных услуг. Хотя организациям не обязательно соблюдать рекомендации SOC 2, их полезно следовать для защиты данных клиентов. Рекомендации SOC 2 определяют пять принципов доверительного обслуживания, на которых основано управление данными клиентов.
— Доступность
— Безопасность
— Целостность обработки
— Конфиденциальность
— Конфиденциальность
Автоматизируйте развертывание кода в среде DevOps CI/CD
Автоматизация развертывания — это простая автоматизация процесса перемещения кода между средами тестирования и рабочей средой. Это позволяет разработчикам быстро и часто развертывать код в рабочей среде без вмешательства человека. AWS предлагает полностью управляемую услугу развертывания в форме AWS CodeDeploy. Он позволяет автоматически развертывать код в различных средах, таких как AWS Lambda, AWS Fargate, Amazon EC2 или локально.
Автоматизация развертывания является частью конвейера непрерывной интеграции/непрерывного развертывания DevOps. Он состоит из трех важных этапов: сборка, тестирование и развертывание. Когда код написан, он автоматически тестируется и добавляется в центральный репозиторий. Эти изменения проверяются и добавляются в приложение. Автоматизация тестирования запускает множество тестов на разных уровнях, чтобы гарантировать отсутствие ошибок в коде. Затем код автоматически развертывается в рабочей среде.
Создайте свою веб-архитектуру, используя инфраструктуру в качестве инструментов кода
Инфраструктура как код (IaC) — это метод автоматического предоставления инфраструктуры с использованием кода. Это поможет вам рассматривать серверы, сеть, базы данных и другие ИТ-ресурсы как программное обеспечение и управлять ими с помощью файлов конфигурации. Таким образом, вы можете мгновенно разворачивать ресурсы по требованию, управлять согласованностью конфигурации и устранять отклонения в конфигурации, одновременно повышая эффективность разработки программного обеспечения. Это также снижает затраты на разработку программного обеспечения.
Заключение
В современном высококонкурентном мире программного обеспечения создания качественных продуктов и услуг недостаточно, чтобы завоевать доверие клиентов. То, как вы доставляете продукты и услуги своим клиентам, имеет наибольшее значение. Веб-приложения помогут вам в этом. Таким образом, организациям необходимо создавать и развертывать высокооптимизированные веб-приложения, которые с минимальными затратами обеспечивают скорость и производительность, а также превосходный пользовательский интерфейс/UX. Здесь решающее значение имеет разработка правильной архитектуры веб-приложения.