[Перевод] Бессерверная архитектура или микросервисы — как выглядит будущее вычислительных технологий для бизнеса?

96c4f622afb2ad1b71efcb6da7517171.png

Введение

Бессерверные вычисления (или serverless-технологии, как их иногда называют) — это перспективная технологическая модель облачных вычислений, появившаяся на горизонте прикладной разработки и архитектуры в последние годы. Именно благодаря стремлению воспользоваться огромным потенциалом бессерверных фреймворков многие крупные рыночные игроки оказались увлечены общим бумом облачных сервисов. Такие гиганты программной отрасли, как Google, Microsoft, IBM и Amazon, уже предлагают своим клиентам перенести локальные бизнес-процессы и обеспечить операционную эффективность на флагманских бессерверных платформах, таких как AWS Lambda и Azure Functions.

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

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

14f83b433da106b28be358654d84db73.png

Бессерверная и микросервисная модели: в чем разница?

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

  • Микросервисы. Данное технологическое решение представляет собой более компактную разновидность сервис-ориентированной архитектуры (SOA), дающую программистам полный доступ к необходимым библиотекам, размещенным на облачных серверах. Оно позволяет развертывать множество функциональных модулей, а также ряд протоколов и API-интерфейсов, включая JSON, RESTful, AMQP, SOAP и другие.

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

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

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

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

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

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

Как работают бессерверные вычисления

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

  • бэкенд как услуга (BaaS);

  • функция как услуга (FaaS).

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

Платформы FaaS, такие как AWS Lambda, — это такие типы событийных архитектур разработки, в которых обеспечивается надежность сервисов хостинга в сочетании с моделью оплаты по мере использования. При этом ресурсы задействуются только в те моменты, когда конкретные функции или события, заданные пользователями, требуют осуществления действий. Чаще всего встречаются такие триггеры активации функций FaaS, как заранее запланированные события, загрузка файлов, новые коммиты в репозитории, получение писем по электронной почте, обновления баз данных, вызовы HTTP API и т. д. 

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

d3540355e41fa2dc8e44dc178b62de39.png

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

90eb6371523dfa688cefcbefd5775a2a.png

Бессерверные вычисления: ключевые сценарии использования

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

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

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

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

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

0bedeba027b488d0fcedd7a19ecee02f.png

Эффективность событийной архитектуры (event-driven architecture, EDA), которая лежит в основе бессерверных вычислений, не вызывает сомнений у профессионалов IT-индустрии. Эта архитектура дает следующие ценные преимущества:

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

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

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

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

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

В конечном счете вам решать, что выбрать: микросервисы или бессерверные фреймворки. Более того, вы можете легко «заточить» обе эти технологии под свои бизнес-потребности. Компания ByteAnt, в свою очередь, всегда готова помочь вам найти наиболее эффективное интеграционное решение. Напишите нам — и мы в индивидуальном порядке рассмотрим вашу проблему и поделимся своим практическим опытом.

П.С. От переводчика

Присоединяйтесь к сообществу Serverless в Telegram:  Yandex Serverless Ecosystem. Мы регулярно встречаемся в виртуальном пространстве и похоже созревает потребность в очной встрече. 

© Habrahabr.ru