«Архитектуры Приложений»: Немного О Бессерверных Архитектурах

Стандартный И??? 1471 термин «архитектура» определенный как базовая организация системы, описывающая связи между компонентами этой системы и внешней средой, а также определяющая принципы ее проектирования и развития.

В одной из предыдущих статей мы уже обдуманный несколько видов архитектура программное обеспечение.

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

Бессерверная архитектура означает, что разработчикам больше не нужно настраивать и управлять серверами, на которых работают общесистемные демоны.

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



«Архитектуры приложений»: немного о бессерверных архитектурах

/ Фото Джон Ву СС Бессерверные приложения широко используют сторонние сервисы, которые выполняют задачи, обычно выполняемые серверами.

При этом эти сервисы могут представлять собой целые экосистемы (например, Azure и AWS) или быть независимыми решениями (например, Parse или Firebase).

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

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

В случае бессерверной архитектуры контроллеры на стороне сервера заменяются процессами динамической генерации контента.

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

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

После обработки запроса компонент переходит в режим сна.

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



Несколько примеров

Представим себе классическую трехуровневую клиент-ориентированную систему с серверной логикой.

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

Она [система] состоит из уровня представления, логического уровня и уровня данных.

Уровень представления — это компонент, с которым непосредственно взаимодействуют пользователи (веб-страница, интерфейс приложения и т. д.).

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

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

Структура выглядит следующим образом:

«Архитектуры приложений»: немного о бессерверных архитектурах

В этом случае вся логика находится на сервере (аутентификация, навигация, поиск), поэтому клиентская часть может оставаться «тупой».

А вот один из вариантов структуры того же приложения при переходе на бессерверную архитектуру:

«Архитектуры приложений»: немного о бессерверных архитектурах

Это достаточно упрощенная версия, но даже здесь видно, что произошло много изменений.

Задачи аутентификации теперь решает сервис BaaS (BaaS – Backend-as-a-Service).

Через сервис BaaS также происходит доступ к базе данных, которая размещается «на стороне».

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

А за обработку базы данных покупок теперь отвечает функция FaaS (FaaS — Function-as-a-Service), которая в целях безопасности хранится на сервере.

Давайте посмотрим на другой пример.

Предположим, пользователь кликает по рекламному баннеру.

В этом случае вам необходимо быстро перенаправить клиента на целевой сайт, одновременно сохранив информацию о совершенном переходе, чтобы выставить счет рекламодателю.

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



«Архитектуры приложений»: немного о бессерверных архитектурах

В случае бессерверной архитектуры получается следующая диаграмма:

«Архитектуры приложений»: немного о бессерверных архитектурах

Здесь пользовательское приложение заменяется функцией FaaS, которая выполняется в управляемом событиями контексте, предоставленном поставщиком.

При этом среда FaaS может параллельно обрабатывать несколько кликов пользователя, создавая копии кода функции.



Плюсы и минусы бессерверного решения

Передача контроля над частью систем третьей стороне также создает свои недостатки.

Например это Может быть привести к некоторой потере контроля и, например, к непредвиденным обновлениям API. Также разделение одного приложения на несколько частей с вплетенными в структуру различными сервисами приводит к увеличению «количества точек перегиба», что может усложнить процедуру тестирования.

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

Самым большим преимуществом этого подхода является оценю компании, которым приходится сталкиваться с нестабильной структурой потребления трафика.

При использовании бессерверной архитектуры серверная мощность не будет простаивать в ожидании всплесков активности.

Бессерверные системы также намного проще обслуживать.

Сторонние компании, предоставляющие облачные сервисы, прилагают много усилий для обеспечения их доступности и масштабируемости.

Более того, любая оптимизация производительности приложения FaaS автоматически снижает эксплуатационные расходы.

Например, если выполнение действия заняло 1 секунду, а после внесения изменений стало занимать 200 мс, это приведет к снижению стоимости услуги на 80% без изменений в инфраструктуре.



Заключение

Большинство приложений FaaS на данный момент представляют собой обычные приложения, завернутые в новую оболочку.

Команды разработчиков выбрасывают новые решения и смотрят, как они ведут себя в контексте бессерверных платформ.

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

P.S. Со своей стороны, мы также предлагаем несколько интересных материалов из нашего блога о корпоративная IaaS :

Теги: #Разработка для Интернета вещей #Разработка сайтов #Тестирование IT-систем #Разработка для электронной коммерции #архитектура приложений #it city
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.