За кулисами: Argonaut и AWS Lambda

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

  • Kubernetes/контейнеры
  • Serverless

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

С Argonaut вы обнаружите, что обе облачные среды просты в установке, настройке и развертывании.

В этой статье блога вы узнаете о:

  • Что такое serverless
  • стек, созданный в Argonaut для развертывания приложений на базе AWS Lambda.

О настройке Kubernetes на AWS читайте в другом нашем блоге.

Что такое Serverless?

Прежде чем начать работу с Argonaut, вы можете задаться вопросом, что такое serverless?

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

Создание инфраструктуры → Приложение создается во время или до создания инфраструктуры → Развертывание приложения в инфраструктуре.

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

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

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

Популярные бессерверные сервисы

Хотя эта статья посвящена AWS Lambda, есть еще несколько бессерверных сервисов, о которых вам стоит подумать в зависимости от типа среды, в которой вы работаете:

  • Режимы выполнения приложений: Azure Functions, Azure Web Apps, AWS Elastic Beanstalk, Google Cloud Functions, Cloudflare workers и т. д.
  • Управляемые сервисы: AWS Lightsail (базы данных), MongoDB Atlas Serverless и т.д.

Все эти сервисы, так или иначе, делают одно и то же – они абстрагируются от инфраструктуры, чтобы инженеры могли сосредоточиться на функциональности.

Реализация Argonaut

Есть три основных элемента работы Argonaut с AWS Lambda. Эти части настроены так, чтобы обеспечить полноценную работу разработчиков.

Первый – это фреймворк SAM.

Фреймворк SAM

AWS Serverless Application Model (SAM) – это фреймворк с открытым исходным кодом для создания бессерверных приложений.

Преимущество фреймворка SAM в том, что с ним гораздо проще запустить бессерверное приложение.

Если вам интересно, как Argonaut сам создает функцию Lambda после того, как вы передаете код через браузер, то он использует фреймворк SAM.

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

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs14.x
Вход в полноэкранный режим Выход из полноэкранного режима

SAM с Argonaut используется не только для самой лямбда-функции, но и для развертывания API-шлюза.

API-шлюз

API-шлюз – это инструмент управления, который позволяет управлять соединением между клиентом и внутренними сервисами.

Причина, по которой Argonaut использует шлюз API, заключается в том, что функция Lambda может предоставить конечную точку HTTPS для функции Lambda. Argonaut использует эту конечную точку HTTPS для маршрутизации HTTPS-запросов к функции Lambda. Это также обеспечивает безопасный доступ к API с помощью аутентификации и авторизации.

Управление сертификатами TLS (HTTPS) автоматически выполняется Argonaut при указании пользовательских доменов.

Внутренний прокси

Внутренний прокси – это пользовательский код, написанный для того, чтобы код (из таких фреймворков, как Next.js, Django и т.д.) мог напрямую работать с AWS Lambda без внесения каких-либо изменений.

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

Когда использовать AWS Lambda

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

Однако есть и недостатки. Во-первых, если есть несколько сервисов, которым необходимо взаимодействовать друг с другом, парадигма Lambda будет неэффективной, а обращение к другим сервисам крайне обременительным. Более 2-3 сервисов практически непосильны для управления.

В таких случаях предпочтительнее развертывание на базе Kubernetes. Argonaut делает Kubernetes таким же простым в обращении, как и Lambdas.

Подведение итогов

Это пост из серии объяснений того, как Argonaut работает под капотом, для демистификации и обеспечения прозрачности. Мы также приводим плюсы и минусы, чтобы вы могли принять правильное решение для вашего случая использования. Посмотрите, как вы можете начать развертывание своего первого приложения на AWS Lambda менее чем за 5 минут на сайте https://ship.argonaut.dev.

Спасибо Майклу Левану за подготовку этой статьи.

Оцените статью
Procodings.ru
Добавить комментарий