Зачем вам нужен Apache APISIX при использовании Amazon Lambda

Xiaolan Cheng

December 9, 2022

Ecosystem

Serverless и Amazon Lambda

Что такое Serverless?

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

Serverless-архитектура — это способ создания и запуска приложений без необходимости управления инфраструктурой. Она развертывает необходимую инфраструктуру в облачных провайдерах или на некоторых самостоятельно развернутых serverless-платформах для управления. Таким образом, инженеры могут сосредоточиться на бизнес-логике приложения, не тратя много усилий на создание, управление и масштабирование инфраструктуры. Крупнейшие облачные провайдеры (Amazon Web Services, Microsoft Azure и Google Cloud) проявляют огромный интерес к предоставлению лучших serverless-услуг. Например, Amazon Lambda — это основная serverless-вычислительная услуга для AWS (Amazon Web Services).

Как показано на рисунке ниже, в отличие от традиционного метода развертывания, используя Amazon Lambda, вам нужно только загрузить исходный файл, выбрать среду выполнения и выполнить его. Затем вы можете получить результат операции. Освобождая себя от шагов загрузки и компиляции на сервере. В этом процессе развертывание сервера, установка среды выполнения и компиляция управляются и выполняются платформой Amazon Serverless computing. Инженерам нужно только поддерживать свой исходный код и соответствующую конфигурацию среды выполнения.

Технология, связанная с этим, называется BaaS (Backend as a Service), что означает, что мы больше не пишем и не управляем серверными компонентами и полностью передаем на аутсорсинг все части приложения. Serverless — это новая среда хостинга, в которой выполняется код.

Диаграмма архитектуры

Зачем нам нужен Serverless?

Serverless имеет несколько преимуществ:

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

Зачем нам нужен API Gateway при использовании Serverless?

Serverless также имеет свои недостатки:

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

API Gateways могут решить эти проблемы по своей природе. В сочетании с serverless они могут стать надежной архитектурой. На рисунке ниже описано, как быстро собрать простой веб-сервис с использованием Amazon Serverless services. API gateway играет важную роль в предоставлении авторизации, определении маршрутов и проксировании запросов. В качестве примера можно привести Apache APISIX, который предлагает поддержку serverless для AWS и Azure. Вы можете определить маршрут для включения serverless-плагина вместо жесткого кодирования URL-адресов функций в приложениях. С гибкостью горячего обновления URI функций обновление до разных FaaS (Function as a service) облачных сервисов становится легким. Более того, этот подход облегчает боль от громоздкой авторизации и аутентификации.

Сборка веб-сервиса с использованием Amazon Serverless services

Apache APISIX

Apache APISIX — это облачный API-шлюз под эгидой Apache Software Foundation (ASF). Будучи динамичным, работающим в реальном времени и высокопроизводительным, APISIX предоставляет такие функции, как балансировка нагрузки, динамический апстрим, канареечное развертывание, разрыв цепи, аутентификация и наблюдаемость. Мы можем использовать Apache APISIX для обработки традиционного трафика между сервисами (север-юг и восток-запад). В то же время он также может использоваться как K8s Ingress Controller. APISIX расширяет свою экосистему через встроенные плагины, охватывая различные сценарии использования API-шлюзов, такие как аутентификация, безопасность, наблюдаемость, управление трафиком, доступ к множеству протоколов и т.д. Конечно, он также включает множество плагинов, связанных с serverless.

aws-lambda plugin

Плагин aws-lambda интегрирует AWS Lambda с APISIX в качестве динамического апстрима для проксирования всех запросов для определенного URI в облако AWS. При включении плагин завершает текущий запрос настроенного URI и инициирует новый запрос к URI шлюза AWS Lambda от имени клиента. Этот новый запрос несет ранее настроенные данные авторизации, включая заголовки запроса, тело и параметры (все три передаются из исходного запроса). Он возвращает ответ с заголовками, кодом состояния и телом клиенту, который инициировал запрос через APISIX. Этот плагин поддерживает авторизацию через ключ API AWS и секреты AWS IAM.

Для получения дополнительной информации обратитесь к APISIX или этому блогу.

Serverless-плагины в Apache APISIX

Помимо Amazon Lambda, Apache APISIX также поддерживает интеграцию с serverless-экосистемами, такими как Azure Function, Lua function и Apache OpenWhisk, и предоставляет соответствующие serverless-плагины.

Таблица 1 Serverless-плагины Apache APISIX

Название плагинаОписание
serverlessПользователи могут загружать пользовательские Lua-скрипты через плагин serverless и указывать фазу выполнения кода в соответствии с конфигурацией. Например, выполнять контроль доступа к запросам на фазе доступа, изменять заголовок ответа или тело ответа на фазах фильтрации заголовков и тела, печатать персонализированные логи на фазе логирования и т.д. Также, поскольку плагин serverless поддерживает горячую перезагрузку, изменения могут вступать в силу немедленно без перезапуска Apache APISIX.
azure-functionsИспользуется для интеграции APISIX с Azure Serverless Function в качестве динамического апстрима для проксирования всех запросов для определенного URI в облако Microsoft Azure. При включении плагин azure-functions завершает текущий запрос к настроенному URI и инициирует новый запрос к Azure Functions от имени клиента. Новый запрос несет ранее настроенные данные авторизации, включая заголовок запроса, тело и параметры (все три передаются из исходного запроса). Затем он возвращает ответ с заголовками, кодом состояния и телом клиенту, который инициировал запрос через APISIX.
openwhiskИспользуется для интеграции APISIX с открытой распределенной serverless-платформой Apache OpenWhisk. При включении плагин завершает текущий запрос к настроенному URI и инициирует новый запрос к конечной точке API Host OpenWhisk от имени клиента, и плагин openwhisk возвращает информацию о ответе клиенту.
openfunctionИспользуется для интеграции APISIX с открытой распределенной serverless-платформой CNCF OpenFunction в качестве динамического апстрима. При включении плагин завершает текущий запрос для настроенного URI и инициирует новый запрос к функции OpenFunction от имени клиента, а затем плагин openfunction возвращает информацию о ответе клиенту.

Связь между Apache APISIX и serverless-продуктами

Заключение

В последние годы с появлением микросервисной архитектуры все мигрирует в облако, и многие облачные провайдеры также запускают serverless-продукты. Разработка на основе serverless стала очень удобной моделью разработки. Следуя облачным трендам, APISIX поддерживает serverless-вычисления, предоставляя плагины serverless, azure-functions, openwhisk и openfunction.

Если вы хотите узнать больше об API-шлюзе и его serverless-функциях, свяжитесь с нами по адресу https://api7.ai/contact.

Tags: