Как устроена архитектура веб-приложений: мануал для начинающих

Опубликовано: 15 Февраля, 2021

В течение многих десятилетий мы просматриваем множество веб-сайтов в Интернете и получаем быстрые ответы на любые вопросы. Но пытались ли вы когда-нибудь узнать, как каждая часть приложения работает вместе и как обрабатывает ваш запрос за пределами браузера? Если вы хоть немного знакомы с технологиями, у вас может быть длинный и обобщенный ответ, что ваш запрос отправляется на веб-сервер, а затем веб-сервер обрабатывает запрос и выполняет всю внутреннюю логику. После этого он отправляет ответ обратно в браузер, а затем вы видите результат на экране.  

Что ж, это правильный ответ, но если вы пойдете на более глубокий уровень, вы обнаружите, что ваше веб-приложение имеет сложную архитектуру из различных компонентов и слоев. Ваш запрос проходит через эти разные уровни и компоненты, а затем вы получаете ответ со стороны сервера. Это довольно долгий процесс, но понимание основ архитектуры веб-приложений действительно важно, если ваша цель - стать хорошим разработчиком веб-приложений. Во-первых, давайте разберемся с некоторыми вещами о веб-приложениях.

Когда вы создаете приложение, вы должны помнить три принципа:

  • С точки зрения клиента, приложение не должно быть сложным, оно должно быть приятным и решать большинство его проблем.
  • С точки зрения бизнеса, ваше веб-приложение должно соответствовать своему продукту / рынку.
  • С точки зрения инженера, приложение должно быть масштабируемым, функциональным и выдерживать высокие нагрузки трафика.

Мы обсудим вышеупомянутые моменты в архитектуре веб-приложений, и подробно рассмотрим основную концепцию, как работает архитектура, ее компоненты и типы.

Что такое архитектура веб-приложений?

Вы знаете, что есть разница между веб-сайтами и веб-приложениями? Веб-приложение - это программа, которая запускается в браузере и имеет в основном три формальных характеристики. 

  • Решает конкретную проблему, даже если это просто поиск информации.
  • Такая же интерактивная, как настольное приложение.
  • Работает с системой управления контентом.

Если говорить о веб-сайте, то традиционно это просто комбинация статических страниц. Веб-сайт становится веб-приложением, когда он состоит как из статических, так и из динамических страниц ( да, это правда, что все современные веб-сайты являются примером веб-приложений). 

Архитектура веб-приложения - это механизм, который дает нам разъяснение того, как устанавливается соединение между клиентом и сервером. Она определяет, как компоненты в приложении взаимодействуют друг с другом. Неважно, каков размер и уровень сложности приложения, все они следуют одному и тому же принципу, только детали могут отличаться. 

С технической точки зрения, когда пользователь делает запрос на веб-сайте, различные компоненты приложений, пользовательские интерфейсы, системы промежуточного программного обеспечения, базы данных, серверы и браузер взаимодействуют друг с другом. Архитектура веб-приложений - это структура, которая связывает эти компоненты вместе и поддерживает взаимодействие между ними. 

Когда пользователь взаимодействует с веб-сайтом и получает ответ от сервера, весь процесс выполняется в течение нескольких секунд. Самое важное, на что нам нужно обратить внимание, - это код, переданный браузеру. Этот код может содержать или не содержать конкретные инструкции, указывающие браузеру, как реагировать на различные типы пользовательского ввода. Вот почему архитектура веб-приложения включает в себя все под-компоненты и обмены данными с внешними приложениями для всего программного приложения. Архитектура веб-приложения должна быть надежной, масштабируемой, безопасной и устойчивой из-за большого объема глобального сетевого трафика. 

Как работает веб-запрос?

Возьмем в пример ситуацию, который вы хотите посетить progler.ru:

  • Вы вводите progler.ru в своем браузере: когда вы вводите URL-адрес в своем веб-браузере и нажимаете Enter, веб-браузеру необходимо знать адрес сервера, на котором расположена страница. Таким образом, он отправляет запрос в DNS (сервер доменных имен, который является хранилищем доменных имен и их IP-адресов). После этого браузер отправляет запрос на найденный IP-адрес по протоколу HTTPS. Если вы уже заходили на progler.ru ранее из того же браузера, он извлечет адрес из кеша.
  • Веб-сервер обрабатывает запрос: на следующем шаге веб-сервер отправляет запрос в область хранения, чтобы найти страницу и все данные, которые следуют за ней. Здесь появляется бизнес-логика (также называемая логикой домена и логикой приложения). Бизнес логика берет на себя ответственность за маршрутизацию, что означает доступ к каждой части данных. Она регулирует этот рабочий процесс специально для каждого приложения. По мере того как БЛ обрабатывает запрос, она отправляет его в хранилище, чтобы найти искомые данные.
  • Вы получаете ответ: когда ответ возвращается, он отображается на вашем экране. Веб-страница (графический интерфейс) любого веб-сайта, отображаемого на вашем экране, называется внешним интерфейсом приложенияЗдесь вы видите все компоненты UI и UX для доступа к информации.

Как работает архитектура веб-приложений?

Все веб-приложения работают как на стороне клиента, так и на стороне сервера. Когда пользователь делает запрос, с обеих сторон в основном запускаются две программы.

  • Код, который запускается в браузере и работает в соответствии с вводом пользователя.
  • Код на сервере, который отвечает на HTTP-запросы.

Работая над веб-приложением, веб-разработчик определяет функции кода на сервере и функции кода в браузере. Они также определяют, как эти функции будут работать по отношению друг к другу. Серверный код может быть написан с использованием языков Python, JavaScript, C#, PHP, Ruby on Rails и т. д. Любой код может иметь возможность запускаться на сервере, если он может отвечать на HTTP-запросы. Серверный код в основном отвечает за создание страницы, запрошенной пользователем. Он также хранит различные типы данных, такие как профили пользователей, твиты, страницы и т. д. Серверный код не может быть виден конечным пользователем (за исключением редкой неисправности).

Клиентская часть включает комбинацию языков HTML, CSS и JavaScript. Этот код анализируется браузером, и пользователь может его видеть и редактировать. Только через HTTP-запросы клиентский код может связываться с сервером. Кроме того, он не может напрямую читать файлы с сервера.

Компоненты архитектуры веб-приложений

Архитектура веб-приложения работает на различных компонентах. Эти компоненты можно разделить на две части.

1. Компоненты приложения с пользовательским интерфейсом: как следует из названия, эта категория в большей степени связана с пользовательским интерфейсом / опытом. В этой категории роль веб-страницы связана с отображением, информационными панелями, журналами, уведомлениями, статистикой, настройками конфигурации и т. д. И не имеет ничего общего с функциональностью или работой веб-приложения. 

2. Структурные компоненты: эта категория в основном связана с функциональностью веб-приложения, с которым взаимодействует пользователь, элементами управления и хранилищем базы данных. Как следует из названия, это больше касается структурной части веб-приложения. Эта структурная часть состоит из:

  • Веб-браузер или клиент.
  • Сервер веб-приложений.
  • Сервер базы данных.

Трехуровневая архитектура веб-приложений

Архитектурные шаблоны веб-приложений разделены на множество различных уровней или под-уровней, которые называются много- или трехуровневой архитектурой. Вы можете легко заменять и обновлять каждый уровень независимо друг от друга. 

Уровень представления: этот уровень доступен клиенту через браузер и включает компоненты пользовательского интерфейса и компоненты процесса пользовательского интерфейса. Как мы уже обсуждали, эти компоненты пользовательского интерфейса созданы с помощью HTML, CSS и JavaScript (и его фреймворков или библиотеки), где каждый из них играет свою роль в создании пользовательского интерфейса.

Бизнес-уровень: он также называется бизнес-логикой, логикой домена или уровнем приложения. Он принимает запрос пользователя от браузера, обрабатывает его и регулирует маршруты, через которые будет осуществляться доступ к данным. В этом слое закодирован весь рабочий процесс. Вы можете взять пример бронирования отеля на сайте. Путешественник будет проходить через последовательность событий, чтобы забронировать номер в отеле, и весь рабочий процесс будет возложен на бизнес-логику. 

Уровень сохраняемости: его также называют уровнем хранения или доступа к данным. Этот уровень собирает все вызовы данных и обеспечивает доступ к постоянному хранилищу приложения. Бизнес-уровень тесно связан с уровнем хранилища, поэтому логика знает, с какой базой данных разговаривать, и процесс получения данных становится более оптимизированным. Сервер и программное обеспечение системы управления базами данных существуют в инфраструктуре хранения данных, которая используется для связи с самой базой данных, приложениями и пользовательскими интерфейсами для извлечения данных и их анализа. Вы можете хранить данные на аппаратных серверах или в облаке.

Некоторые другие части веб-приложения, которые отделены от основных слоев, существующих в архитектуре:

  • Сквозной код: эта часть обеспечивает связь, оперативное управление и безопасность. Он влияет на все части системы, но никогда не должен смешиваться с ними.
  • Сторонние интеграции: используя сторонние API, мы можем интегрировать платежные шлюзы, социальные сети, GDS на туристических веб-сайтах и ​​т. д.

Типы архитектуры веб-приложений

1. Одностраничные приложения. Сегодня многие современные веб-приложения разработаны как одностраничные веб-приложения, которые включают только самые необходимые элементы и информацию для создания интуитивно понятного и интерактивного взаимодействия с пользователем. В одностраничном приложении содержимое или информация обновляется на текущей странице, а не загружает с сервера новую страницу для каждого действия, выполняемого пользователем. 

  • Приложение запрашивает только необходимые сведения о контенте и предотвращает перебои в работе пользователя. 
  • AJAX, асинхронный JavaScript и XML в основном используются для взаимодействия страниц.
  • Пользователи могут продолжать взаимодействие со страницей, пока ее содержимое обновляется (более быстрое взаимодействие).

2. Микросервисы. Эти маленькие и легкие сервисы, которые выполняют конкретную, единую функциональность. Компоненты в приложениях не зависят друг от друга, поэтому нет необходимости разрабатывать каждый компонент с использованием одного и того же языка программирования. Это дает разработчикам возможность выбирать язык или стек технологий по своему усмотрению. Это повышает продуктивность разработчиков и ускоряет процесс разработки. 

3. Бессерверная архитектура. При таком подходе разработчики передают управление серверами и инфраструктурой стороннему поставщику услуг облачной инфраструктуры. Преимущество этого подхода заключается в том, что он позволяет приложению выполнять требуемую или настраиваемую логику, не беспокоясь о задачах, связанных с инфраструктурой. Этот подход в основном предпочитают компании, которые не хотят управлять или поддерживать серверы и оборудование, для которого они разработали веб-приложение.

Заключение

Надеемся, эта статья было полезной для понимания полной архитектуры веб-приложений. Веб-приложения постоянно развиваются, и многие современные приложения для веб-разработки заменили предыдущую устаревшую структуру и ее основные компоненты. Многие функции веб-приложений, такие как надежность, безопасность, масштабируемость, скорость отклика, зависят от архитектуры веб-приложения, на которой оно работает. Правильная архитектура веб-приложения открывает путь для будущих планов расширения и масштабируемости. Так что всегда полезно изучить требования и цели, прежде чем начинать процесс разработки приложения.