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

Почему AWS Lambda

AWS Lambda - это управляемая событиями платформа бессерверных вычислений, то есть она запускает ваш код в ответ на события и автоматически управляет базовыми вычислительными ресурсами за вас.

  • Бессерверный
  • Широко поддерживается и проста в настройке
  • Журнал, метрики и информационные панели доступны из коробки
  • Автоматическое масштабирование и высокая доступность без дополнительных усилий
  • Консоль самообслуживания
  • Поддерживает Java, Python, Node.js и др.
  • Простая интеграция с другими сервисами AWS
  • Сравнительно низкая стоимость при использовании в небольших масштабах
  • Ограничения на конфигурацию функций, такие как память, параллелизм и т. Д.
  • Проблема с холодным запуском

Почему именно AWS Fargate

AWS Fargate - это бессерверный вычислительный движок для контейнеров, который работает как с AWS ECS, так и с AWS EKS. Fargate позволяет вам сосредоточиться на разработке и создании приложений, а не на управлении инфраструктурой, которая их запускает.

  • Запускайте контейнеры без подготовки, настройки и управления серверами или кластерами.
  • Автоматическое масштабирование на основе показателей использования ЦП / памяти, которые генерируются автоматически.
  • Высокая доступность
  • Не поддерживает графические процессоры
  • Поддержка рабочих нагрузок, требующих менее 10 ГБ дискового пространства на контейнер
  • Поддержка рабочих нагрузок, требующих менее 4 виртуальных ЦП или 30 ГБ памяти на контейнер
  • Дорогостоящее решение
  • Нет готовой настройки для журналов, сигналов тревоги и информационных панелей

Когда выбирать лямбда

  • Когда у вас есть управляемые событиями рабочие нагрузки, то есть когда приложение должно инициировать действие по событию.
  • Когда вашему приложению требуется способность обрабатывать неизвестный спрос.
  • Когда вам нужны управляемые операционные и административные действия, такие как мониторинг состояния парка машин, применение исправлений безопасности к базовым вычислительным ресурсам, мониторинг и регистрация вашего кода и т. Д.
  • Когда вам нужно управляемое выделение ресурсов, масштабирование емкости, высокая доступность и использование.
  • При размере пакета развертывания приложения ≤ 50 МБ и времени выполнения ≤ 15 минут.
  • Когда вы сосредоточены на оптимизации затрат.

Lambda разработана для вычислительных приложений, запускаемых событием. Например, полученное сообщение SNS, вызов API, при обновлении объекта S3, задание cron и т. Д.

Когда выбирать Fargate

  • Когда ваше приложение чувствительно к задержке.
  • Когда вашему приложению требуется межконтейнерная связь или требуется много места для хранения.
  • Когда вам нужна поддержка для длительных запланированных заданий (›15 минут).
  • Когда ваше приложение обслуживает предсказуемо высокий клиентский трафик.
  • Когда вам нужен больший выбор в среде выполнения.
  • Когда у вас большая / пакетная рабочая нагрузка и вы ищете меньшую рабочую нагрузку.
  • Когда вам не нужен полный контроль над вычислительными экземплярами, но нужен контроль над вычислительной средой - конфигурациями ЦП и памяти.

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

Спасибо за чтение! Если вы нашли это полезным, вы можете предпринять следующие шаги:

  1. Этот блог является частью серии Выбор системного дизайна. Загляните в другие блоги этой серии.
  2. Пошли мне хлопки в ладоши!
  3. Свяжитесь со мной на Medium, LinkedIn и Twitter, чтобы увидеть больше технических блогов!

Больше контента на plainenglish.io