AWS Fargate
AWS Fargate — это сервис бессерверных вычислений, предоставляемый компанией Amazon Web Services (AWS) и предназначенный для запуска контейнерных приложений без необходимости управления серверной инфраструктурой. Fargate является частью платформы оркестрации контейнеров AWS, работая в связке с сервисами Amazon Elastic Container Service (ECS) и Amazon Elastic Kubernetes Service (EKS). Основное отличие Fargate от традиционных моделей развёртывания контейнеров заключается в том, что он автоматически управляет выделением вычислительных ресурсов, изолируя пользователя от задач по настройке, масштабированию и обслуживанию кластеров виртуальных машин.
История и предпосылки создания
До появления Fargate в 2017 году основным способом запуска контейнеров в AWS было использование сервисов ECS и EKS с моделью EC2 Launch Type. В этой модели пользователь самостоятельно создавал и настраивал кластер из виртуальных машин Amazon EC2, на которых разворачивались контейнеры. Это требовало глубоких знаний в области администрирования операционных систем, управления группами безопасности, настройки автомасштабирования и мониторинга загрузки серверов. Для многих компаний, особенно стартапов и небольших команд, такой подход был избыточным и ресурсоёмким.
AWS Fargate был анонсирован на конференции re:Invent в ноябре 2017 года и стал доступен в ограниченном предварительном режиме (preview) в начале 2018 года. Полноценный запуск (General Availability) состоялся в конце 2018 года. Сервис был призван решить проблему «серверного мышления» в контейнерной среде, предоставив модель Fargate Launch Type, где пользователь указывает только необходимые ресурсы (CPU и память) для каждого контейнера, а AWS берёт на себя всю инфраструктурную часть.
Архитектура и принцип работы
Модель развёртывания
Fargate реализует модель «серверлесс» (serverless) для контейнеров. В отличие от традиционного подхода, где контейнеры работают на предварительно подготовленных узлах (виртуальных машинах), Fargate запускает каждый контейнер в изолированной среде выполнения. Эта среда предоставляется и управляется AWS, при этом пользователь не имеет доступа к операционной системе хоста, не может устанавливать дополнительное программное обеспечение на узел и не отвечает за его обновление.
Компоненты
Основными компонентами при работе с Fargate являются:
- Задача (Task): Базовая единица развёртывания. Задача — это один или несколько контейнеров, которые должны запускаться вместе на одном узле и совместно использовать сетевые и хранилищные ресурсы. Для Fargate задача определяется в формате JSON (или YAML) и содержит образы контейнеров, требуемые ресурсы, переменные окружения, порты и тома.
- Сервис (Service): Объект, который управляет долгоживущими задачами. Сервис обеспечивает запуск заданного количества экземпляров задачи, их автоматическое восстановление при сбоях, а также интеграцию с балансировщиками нагрузки (Application Load Balancer, Network Load Balancer).
- Кластер (Cluster): Логическая группа ресурсов, в которой запускаются задачи и сервисы. В контексте Fargate кластер не содержит физических узлов (EC2), а представляет собой набор задач, управляемых через ECS или EKS.
Управление ресурсами
При создании задачи в Fargate пользователь указывает точное количество vCPU и объём памяти (в мегабайтах). AWS гарантирует, что задача получит ровно столько ресурсов, сколько запрошено, и не будет конкурировать с другими задачами за вычислительную мощность. Доступны различные комбинации CPU и памяти, например, от 0,25 vCPU и 512 МБ памяти до 16 vCPU и 120 ГБ памяти. Оплата взимается за фактически выделенные ресурсы в секунду (с минимальным временем работы в 1 минуту).
Классификация и варианты использования
По типу оркестратора
Fargate может использоваться с двумя основными оркестраторами:
- Amazon ECS: Нативный для AWS оркестратор. Наиболее простая интеграция, полная поддержка всех возможностей Fargate (автомасштабирование, Service Discovery, интеграция с AWS CloudWatch).
- Amazon EKS: Управляемый сервис Kubernetes. Fargate позволяет запускать поды (аналог задач в Kubernetes) в бессерверном режиме. Это даёт возможность использовать стандартные инструменты Kubernetes (kubectl, Helm) без необходимости управлять узлами.
По сценариям применения
Fargate наиболее эффективен в следующих сценариях:
- Пакетная обработка и микросервисы: Для приложений с переменной нагрузкой, где требуется быстрое масштабирование (например, от 0 до сотен экземпляров) без простоя неиспользуемых серверов.
- CI/CD пайплайны: Запуск сборок, тестов и развёртываний в изолированных контейнерах, которые существуют только на время выполнения задачи.
- API-серверы и веб-приложения: Развёртывание stateless (без сохранения состояния) приложений, которые могут быть легко масштабированы горизонтально.
- Задачи с коротким временем жизни: Запуск одноразовых скриптов, миграций баз данных, обработки данных, где создание полноценного кластера EC2 нецелесообразно.
Преимущества и недостатки
Преимущества
- Отсутствие управления инфраструктурой: Пользователю не нужно настраивать, обновлять или патчить операционные системы узлов. AWS автоматически применяет обновления безопасности.
- Изоляция на уровне задачи: Каждая задача работает в собственной изолированной среде, что повышает безопасность и предотвращает «шумных соседей» (noisy neighbor problem).
- Точное масштабирование: Масштабирование происходит на уровне отдельных задач, а не целых серверов. Это позволяет более эффективно использовать ресурсы и снижать затраты.
- Быстрое развёртывание: Запуск новой задачи занимает от нескольких секунд до минуты, что значительно быстрее, чем запуск и настройка виртуальной машины.
Недостатки
- Ограниченная настройка: Пользователь не может влиять на параметры ядра операционной системы, устанавливать драйверы или использовать специфические модули ядра.
- Стоимость при постоянной высокой нагрузке: Для приложений, работающих 24/7 с предсказуемой нагрузкой, использование Fargate может оказаться дороже, чем аренда Reserved Instances (зарезервированных инстансов) EC2.
- Задержки при холодном старте: При первом запуске задачи или после длительного простоя может наблюдаться задержка (до нескольких секунд), связанная с подготовкой изолированной среды.
- Ограничения по ресурсам: Максимальные значения vCPU и памяти для одной задачи в Fargate ниже, чем для самых мощных инстансов EC2 (до 16 vCPU и 120 ГБ памяти).
Интеграция с другими сервисами AWS
Fargate тесно интегрирован с экосистемой AWS:
- AWS Identity and Access Management (IAM): Для каждой задачи можно назначить отдельную роль IAM, что позволяет гибко управлять доступом к другим сервисам (S3, DynamoDB, RDS).
- Amazon Virtual Private Cloud (VPC): Каждая задача получает собственный эластичный сетевой интерфейс (ENI) и приватный IP-адрес, что обеспечивает изоляцию на сетевом уровне.
- AWS CloudWatch: Автоматический сбор логов и метрик (загрузка CPU, использование памяти) для каждой задачи.
- AWS Secrets Manager и AWS Systems Manager Parameter Store: Безопасное хранение и передача конфиденциальных данных (паролей, ключей API) в контейнеры.
- Amazon Elastic File System (EFS) и Amazon Elastic Block Store (EBS): Возможность монтирования томов для хранения данных, сохраняющихся после перезапуска задачи.
Сравнение с альтернативами
| Характеристика | AWS Fargate | Amazon ECS (EC2 Launch Type) | Amazon EKS (с узлами) | Google Cloud Run |
|---|---|---|---|---|
| Управление узлами | Отсутствует | Полное управление | Полное управление | Отсутствует |
| Масштабирование | До 0, на уровне задачи | На уровне кластера | На уровне кластера | До 0, на уровне контейнера |
| Стоимость | За ресурсы задачи (секунда) | За ресурсы EC2 (час) | За ресурсы EC2 + управление | За запросы и ресурсы (100 мс) |
| Гибкость настройки | Низкая | Высокая | Высокая | Низкая |
| Сложность управления | Низкая | Высокая | Очень высокая | Низкая |
Интересные факты
- Fargate был одним из первых сервисов, предложивших бессерверную модель для контейнеров на крупных публичных облачных платформах, что стимулировало развитие аналогичных решений, таких как Azure Container Instances (ACI) и Google Cloud Run.
- В 2020 году AWS представила поддержку Fargate для Amazon EKS, что позволило пользователям Kubernetes полностью отказаться от управления узлами.
- Несмотря на название «бессерверный», Fargate всё же использует физические серверы, но полностью абстрагирует пользователя от работы с ними, что соответствует определению serverless computing.
Источники
- Официальная документация AWS: «Amazon ECS on AWS Fargate».
- Документация AWS: «Amazon EKS on AWS Fargate».
- Презентация AWS re:Invent 2017: «AWS Fargate: Run Containers Without Managing Servers».
- Книга: «Amazon Web Services in Action», 3rd Edition, Michael Wittig, Andreas Wittig.
- Статья: «A Comparative Analysis of Serverless Container Platforms», IEEE Cloud Computing, 2021.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →