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

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

Можно очень долго рассказывать про многочисленные компоненты веб-приложений. Их количество и состав будут зависеть только от сложности сервиса. Глобально же можно выделить три ключевых компонента, которые присутствуют всегда:

1. Инфраструктурная часть

Для веб-приложения нужен сервер. Это может быть как свой собственный сервер, так и какое-то публичное облако (в простонародье ― “хостинг”). В нашем случае Yandex.Cloud является публичным облаком, где вы можете размещать свои веб-приложения.

2. Фронтенд

Клиентская сторона веб-приложения, которая обрабатывает запросы пользователя (будь то обычные HTTP-запросы из браузера или обращение к API сервиса). Самый простой пример фронтенда ― веб-сервер, который обрабатывает запросы пользователя, передает их в бэкенд, а затем отдает от бэкенда данные, которые отображаются у пользователя в браузере или в мобильном приложении. Один из самых распространенных фронтенд веб-серверов ― nginx (реже Apache). Фронтенд ―это то, с чем взаимодействует пользователь.

3. Бэкенд

Все что обрабатывается непосредственно на сервере (т.е. не в браузере пользователя). Простейший пример бэкенда ― база данных (MySQL, PostgreSQL и т.д.) или любой другой скрипт/сервис обработки данных, написанный на одном из множества языков программирования (Ruby, PHP, Python, Java, JavaScript / Node, bash и т.д.). Бэкенд ― это то, что хранит, обрабатывает или передает данные во фронтенд.

Естественно, это сильно упрощенная архитектура. Современные веб-приложения могут быть расположены на гибридной инфраструктуре (часть в “облаке”, часть на своих серверах), фронтенд может насчитывать десятки сервисов, а бэкенд ― содержать сотни технологий. Однако логика приложения все та же.

Мы перечислили ключевые компоненты веб-приложения. Их реализация может быть разной. Вот три самых распространенных варианта:

1. Все внутри одной виртуальной машины/сервера

Данный вариант подходит для небольших, слабо нагруженных систем. Яркий пример подобной реализации ― сайты на популярных CMS (Joomla, Wordpress), где все приложение разворачивается в рамках одной виртуальной машины.

2. Все компоненты разнесены по разным виртуальным машинам/серверам

Подходит для средненагруженных систем. Все компоненты веб-приложения разносятся по разным виртуальным машинам. Фронтенд может насчитывать десятки виртуальных машин, а для распределения нагрузки применяются балансировщики (network load balancer или application load balancer). При этом кол-во виртуальных машин может динамически меняться в зависимости от нагрузки. Аналогично с бэкендом. Базы данных могут использовать множество
реплик для ускорения сервиса.

3. Все компоненты реализованы по микросервисной модели

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

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

Больше учебных материалов по ИБ и ИТ направлениям вы найдете на учебном портале TS University . После регистрации вам станут доступны статьи, курсы и вебинары о решениях Кода Безопасности, UserGate, Positive Technologies, Check Point и других вендоров.
Alt text

Не ждите, пока хакеры вас взломают - подпишитесь на наш канал и станьте неприступной крепостью!

Подписаться