Открыть сервис

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 может использоваться с двумя основными оркестраторами:

  1. Amazon ECS: Нативный для AWS оркестратор. Наиболее простая интеграция, полная поддержка всех возможностей Fargate (автомасштабирование, Service Discovery, интеграция с AWS CloudWatch).
  2. 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 FargateAmazon 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 →