Бессерверная архитектура относится к шаблону проектирования программного обеспечения, в котором задачи управления инфраструктурой и вычислительные услуги выполняются сторонними поставщиками облачных услуг через функции. Эти функции вызываются и масштабируются индивидуально в процессе разработки программного обеспечения. Поставщик обрабатывает их полностью:
- Проблемы, связанные с физическим оборудованием
- Несколько инфраструктурных и операционных задач
Бессерверная архитектура отличается от бессерверных вычислений. Бессерверные вычисления могут использоваться для написания функций, которые включают изменения конфигурации ресурсов, необходимые для выполнения определенных индивидуальных задач управления инфраструктурой.
Типы ПО безсерверной архитектуры
Программное обеспечение, разработанное с использованием бессерверной архитектуры, предлагает три основных услуги:
Функционировать как услуга
В сфере предварительно упакованных сервисов функция как услуга, иногда известная как FaaS или framework as, находится между программным обеспечением как услугой и платформой как услугой.
Думайте о FaaS как о готовой к внедрению структуре, которую можно легко адаптировать к потребностям корпоративной компании. Чтобы было ясно:
- SaaS готов к использованию из коробки, а FaaS — нет.
- Однако для реализации FaaS не требуются ресурсы, которые вам понадобились бы, если бы вы использовали PaaS.
FaaS может предоставляться в виде настраиваемых шаблонов, например, по отраслевым вертикалям. FaaS использует контейнеры для запуска для быстрого развертывания приложений на всех платформах. Например, разработчики могут складывать контейнеры для масштабируемости или писать один контейнер для разработки iOS, а другой — для настольных приложений.
Потребители приобретают FaaS у сторонних поставщиков, занимающихся управлением серверами. Затем они оплачиваются за фактическое время выполнения, а не за заранее выделенные единицы. Компании, использующие FaaS, получают выгоду от повышения эффективности, поскольку меньше ресурсов тратится на быструю разработку приложений.
Backend как услуга
Подобно FaaS, серверная часть как услуга (BaaS) — еще одна бессерверная технология. Некоторые утверждают, что BaaS делает еще один шаг вперед, предлагая NoOps. NoOps по сути относится к инфраструктуре, которая была автоматизирована до такой степени, что внутренние разработчики не участвуют в ее эксплуатации.
Вот простой способ взглянуть на BaaS: представьте, что ваша корпоративная организация разрабатывает мобильное приложение для предоставления сотрудникам важной информации на ходу. Вы можете разработать базовую структуру приложения собственными силами, а затем передать ее на аутсорсинг. Сюда входят такие серверные процессы, как:
- Доступ к облачному хранилищу
- Синхронизации
- Социальное сотрудничество
Способность компании предлагать серверные службы, связывающие мобильное приложение с облаком, называется BaaS.
База данных
Бессерверные структуры баз данных получают доступ к вашим функциям базы данных и автоматизируют их. Это функции, которые пишут и читают из базы данных, а также могут предоставлять ответ.
Фреймворки бессерверных баз данных дают компаниям возможность расти в глобальном масштабе, поскольку в разных регионах можно разрабатывать несколько приложений. Тем не менее, все они работают из одного места на основе технологии FaaS.
Принципы бессерверного проектирования
Общие принципы проектирования приложений безсерверной архитектуры включают в себя:
- Простота и скорость. Напишите краткие функции, предназначенные для выполнения уникальных транзакционных операций — завершение вычислительных задач, выполняемых над одним или несколькими объектами. Эти транзакции имеют ограничения по времени и емкости и поэтому предназначены для быстрого выполнения.
- Оптимизирован для параллелизма. Разрабатывайте запросы функций на основе ограничений параллелизма бессерверной архитектуры. Общее количество запросов может достигать пика реже по сравнению с ограничениями емкости одновременных запросов, и оптимизация общего количества запросов может не быть оптимальным подходом к проектированию для бессерверных приложений.
- Склад временного хранения. Когда используются функции, базовые ресурсы предоставляются или доступны в течение ограниченного времени. Выполнение функции может включать изменение состояний среды, в том числе емкости хранилища, и поэтому использование постоянства может быть предпочтительным для удовлетворения требований к долговременному хранилищу.
- Независимость от оборудования. Поскольку ресурсы предоставляются на время выполнения функции, важно устранить зависимости, связанные с оборудованием, от бессерверных приложений.
- Итеративная оркестровка конечного автомата и события. Архитектура приложения должна быть организована на основе результатов итеративных транзакционных операций. Рабочие процессы жесткого кодирования вводят потенциальные зависимости, которые приводят к сильной связи бессерверного приложения.
- Резервирование. Дизайн на неудачу. В особенности для нисходящих вызовов, один сбой может направить сбой на последующие запросы и помешать рабочему процессу приложения.
Преимущества бессерверной архитектуры
Обладая этими характеристиками, бессерверная архитектура предлагает следующие преимущества:
- Развернуть и запустить. Ресурсы инфраструктуры управляются поставщиком облака. Таким образом, внутренняя ИТ-служба может сосредоточиться на бизнес-сценарии использования программных приложений, а не на управлении базовым оборудованием. Функции позволяют пользователям развертывать сборки приложений и файлы конфигурации, необходимые для предоставления требуемых аппаратных ресурсов.
- Отказоустойчивой. Поскольку кодирование бессерверных приложений логически отделено от базовой инфраструктуры, сбои оборудования имеют минимальное влияние на процесс разработки программного обеспечения. Пользователи не обязаны самостоятельно управлять приложениями.
- Низкие эксплуатационные расходы. В задачах инфраструктуры и управления операциямиуправляются поставщиками облачных, позволяя организации сосредоточить свои усилия на создание программных функций. Приложения выпускаются быстрее, что приводит к более быстрой обратной связи с конечными пользователями и, следовательно, к дальнейшим улучшениям в течение следующих циклов выпуска программного обеспечения.
- Оптимизированный биллинг на основе использования. Модель выставления счетов с оплатой по мере использования особенно хорошо подходит для малых и средних (SMB) организаций, которым не хватает капитала для создания локальных центров обработки данных и управления ими. Текущая модель OpEx дополнительно оптимизирована функции настроены против потенциального чрезмерного выделения ресурсов и недостаточного использования ресурсов.
- Встроенные интеграции. Большинство поставщиков облачных услуг предлагают интеграцию с различными службами, которые позволяют пользователям сосредоточиться на создании высококачественных приложений, а не на их настройке.
Когда следует избегать бессерверной архитектуры
Когда дело доходит до создания облачных приложений, бессерверная архитектура — не всегда лучший выбор. Фактически, вы можете вообще отказаться от бессерверной архитектуры, когда дело касается следующих ситуаций:
- Приложения с фиксированной архитектурой. Программное обеспечение, которое требует явной поддержки и неизменности базовой архитектуры. Сценарии использования чувствительного к безопасности и автономного программного обеспечения в оборонной и финансовой отраслях часто сталкиваются с этими требованиями, чтобы обеспечить высокую надежность приложений.
- Жестко контролируемая среда. Сценарии использования, требующие жесткого контроля над оборудованием и нижними уровнями ИТ-сети, например, установка определенных компонентов, исправлений и изменение конфигурации жесткого кодирования.
- Приложения с низкой задержкой. Хотя функции бессерверной архитектуры предназначены для обеспечения скорости на системном уровне, не все входящие запросы и транзакционные операции обрабатываются эффективно.
- Предварительно перенесенные приложения. Для устаревших приложений, которым еще предстоит перейти в облачную среду, использование бессерверной архитектуры предлагает ограниченную ценность для бизнеса, поскольку внутренняя ИТ-служба должна управлять оборудованием независимо от выбора архитектуры приложения.
- Ограничения производительности приложения. Бессерверные функции сталкиваются с ограничениями с точки зрения емкости, скорости и времени выполнения. Производительность бессерверных функций должна соответствовать или превышать ограничения емкости бессерверных сервисов, таких как тайм-аут AWS Gateway.
Из-за этих проблем бессерверная архитектура обычно не идеальна для высокопроизводительных сложных сборок приложений.