Бессерверная архитектура

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 00:32, 26 ноября 2016.

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

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

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

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

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

Пример работы бессерверной архитектуры

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

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

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

Bssrvr.png

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

Bssrvr1.png

Это достаточно упрощённый вариант, но даже здесь видно, что произошло множество изменений. Задачи аутентификации теперь решает BaaS-сервис (BaaS – Backend-as-a-Service). Через BaaS-сервис также происходит обращение к базе данных, которая хостится «на стороне».

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

Географическая составляющая при переходе на бессерверную архитектуру

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

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

Результаты перехода на бессерверную архитектуру

Экономия затрат
  • Гибкое масштабирование вычислительных ресурсов в соответствии с возникающими потребностями.
  • Снижение совокупной стоимости владения инфраструктурой (без скрытых затрат на содержание персонала, расходов на электричество и охлаждение ЦОД).
Повышение инновационного потенциала
  • Возможность приобретения дополнительных вычислительных ресурсов для тестов и экспериментов по требованию.
  • Неограниченное пространство для экспериментов (стоимость которых значительно ниже по сравнению с моделью on-premise).
Сокращение времени выхода на рынок
  • Вычислительные ресурсы могут быть приобретены по требованию без необходимости планирования производственных мощностей.
  • Перенос инфраструктуры по требованию для тестирования, проигрывания сценариев или при выходе на новые рынки.

Достоинства и недостатки бессерверной архитектуры

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

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

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

Будущее бессерверных архитектур

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

Ссылки