Я использую Serverless Framework около 2 лет. Я использую его не только для развертывания Lambda-функций и API, полных наборов инфраструктуры, но и предпочитаю AWS’ SAM . Хотя под капотом он в основном использует CloudFormation (например, SAM), то, как он организует упаковку кода для Lambda, а затем автоматически соединяет точки для API Gateway (и других источников событий), делает развертывание бессерверных приложений невероятно простым.

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

В настоящее время доступно несколько компонентов с возможностью создания собственных, но давайте взглянем на кое-что относительно распространенное - развертывание веб-сайта на S3 и CloudFront. До появления бессерверных компонентов мне пришлось бы добавлять собственные ресурсы в свой шаблон, который выглядел примерно так:

Даже после 71 строки кода вам все равно нужно создать сертификат в ACM, создать приложение для реагирования, а затем развернуть его в корзине S3. То же самое с использованием новых бессерверных компонентов выглядит так:

С помощью компонентов мы можем создать такую ​​же инфраструктуру примерно на 6 линиях, на 92% меньше! Он даже создает наш сертификат, а также строит и развертывает наше веб-приложение. Если бы вы сделали еще один шаг вперед, вы могли бы развернуть базы данных DynamoDB всего в несколько строк или также RESTful API, что подводит меня к следующему пункту - Serverless говорит:

В бета-версии бессерверные компоненты еще не работают с существующими serverless.yml файлами. Вам нужно будет создать новый serverless.yml файл. Кроме того, бессерверные компоненты еще не интегрированы с панелью мониторинга Serverless Framework. Скоро у нас есть несколько интересных объявлений. Следите за обновлениями.

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

Другая часть компонентов, которые мне не очень нравятся, - это управление состоянием, которое в настоящее время осуществляется самими собственными сервисами (а не, скажем, CloudFormation). Я считаю, что это связано с тем, что вы можете распределить компоненты между поставщиками облачных услуг в одном шаблоне, однако я обнаружил, что из-за этого очистка серверов была не совсем такой, как ожидалось; Мне пришлось вручную удалить раздачу CloudFront, сертификаты и записи DNS, созданные компонентами, даже после запуска команды serverless remove .

РЕДАКТИРОВАТЬ 7 августа 2019 г .: Остин Коллинз и Эслам А. Хефнави связались со мной, чтобы сообщить, что распространение CloudFront и сертификат ACM не были удалены из-за намерения в зависимости от количества времени, которое может потребоваться на очистку этих ресурсов.

Заключение

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