Недавно мы создали новое приложение с использованием Lambdas в AWS. Лямбда - это JavaScript, взаимодействующий с API и сегментами S3.

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

Мы начали с Terraform. Мы создали пользователя в AWS с разрешениями для Cloudwatch, S3, конечных точек API и Lambdas. Затем мы создали корзину для хранения состояния Terraform. Написание кода Terraform было относительно простым, но очень подробным. Этого можно избежать, используя абстракцию модуля, позволяющую повторно использовать код между проектами. Сообщения об ошибках Terraform иногда могут быть немного загадочными, особенно в отношении управления ролями. Другая основная проблема заключалась в том, чтобы включить ведение журнала с помощью Cloudwatch, поскольку это могло быть проще.

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

Я бы сказал, что команда предпочла Serverless для проблемной области, над которой мы работали. Это было лучше для команды приложений, желающей сосредоточиться больше на коде Lambda, чем на предоставляемой инфраструктуре. Основными преимуществами были:

  • Быстрее реализовать.
  • Простая настройка Cloudwatch.
  • Возможность читать сгенерированный шаблон Cloudformation
  • Управление ролями было более автоматизированным для взаимодействия между Lambda, S3 bucket и API.
  • Встроенная интеграция с Webpack позволяет использовать современный синтаксис Javascript в коде Lambda.

Если вас интересует код POC для упрощенной версии Lambda checkout, https://github.com/andyianriley/aws-image-server-serverless-poc и https://github.com/andyianriley/aws -image-server-serverless-poc .