Тип запуска EC2 и Fargate
Сравните самостоятельное управление экземплярами контейнеров EC2 с использованием Fargate для бессерверного запуска контейнеров и разберитесь в различиях стоимости.
«Тип запуска EC2 и Fargate» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.
Два способа запуска задач ECS
ECS предлагает два типа запуска, определяющих, где работают контейнеры: тип запуска EC2 запускает контейнеры на экземплярах EC2, которые Вы подготавливаете и которыми управляете в кластере; тип запуска Fargate — это бессерверный вычислительный механизм, в котором AWS полностью управляет базовыми серверами. Определение задачи и конфигурация службы почти одинаковы в обоих случаях. Основное различие заключается в ответственности за управление инфраструктурой и модели стоимости.
Тип запуска EC2: полный контроль
При использовании типа запуска EC2 Вы регистрируете экземпляры EC2 как экземпляры контейнеров в кластере с помощью агента контейнеров ECS, предварительно установленного в оптимизированных для ECS AMI. Вы выбираете типы экземпляров, управляете настройками уровня OS, применяете собственные базовые политики безопасности и используете экземпляры Spot для снижения затрат. ECS размещает задачи на зарегистрированных экземплярах согласно стратегиям размещения с упаковкой или распределением. Вы отвечаете за установку исправлений, масштабирование и обслуживание базового парка EC2.
# Launch an ECS-optimised EC2 instance that joins the cluster
# User data for ECS container agent
#!/bin/bash
echo ECS_CLUSTER=MyAppCluster >> /etc/ecs/ecs.config
echo ECS_ENABLE_CONTAINER_METADATA=true >> /etc/ecs/ecs.configFargate: бессерверные контейнеры
С помощью Fargate Вы указываете CPU и объём памяти для каждой задачи, а AWS незаметно подготавливает базовые вычислительные ресурсы. Вам не нужно регистрировать, обновлять или масштабировать экземпляры EC2 — AWS управляет всем этим. Каждая задача получает собственное изолированное ядро (с помощью Firecracker microVMs), что обеспечивает более надёжную изоляцию, чем контейнерные экземпляры EC2, где несколько задач используют один хост. Для Fargate требуется сетевой режим awsvpc, то есть каждая задача получает собственные ENI и IP-адрес VPC.
aws ecs run-task \
--cluster 'MyAppCluster' \
--task-definition 'myapp-task:5' \
--launch-type FARGATE \
--network-configuration '{
"awsvpcConfiguration": {
"subnets": ["subnet-aaa111"],
"securityGroups": ["sg-xyz"],
"assignPublicIp": "ENABLED"
}
}'Сравнение моделей оплаты
Модели оплаты принципиально различаются. Тип запуска EC2: Вы платите за базовые экземпляры EC2 независимо от того, запущены ли задачи, но можете использовать зарезервированные экземпляры или Savings Plans для получения скидки, а также Spot Instances, экономя до 90 % на рабочих нагрузках, допускающих прерывание. Fargate: Вы платите только за фактически использованные каждой задачей vCPU и память за каждую секунду — простои между задачами не тарифицируются. Для нестабильных или пакетных рабочих нагрузок Fargate часто обходится дешевле; для стабильно высоких нагрузок EC2 с зарезервированными экземплярами может быть выгоднее.
Fargate Spot для экономии средств
Fargate Spot предоставляет вычислительные ресурсы Fargate по значительно сниженной цене (со скидкой до 70 %) в обмен на возможность прерывания, когда AWS потребуется вернуть ресурсы. Fargate Spot идеально подходит для пакетной обработки, конвейеров CI/CD и сред разработки или тестирования. Настройте стратегию поставщиков ресурсов, чтобы сочетать Fargate (по запросу) и Fargate Spot: используйте base=1 для Fargate, чтобы гарантировать как минимум одну задачу, и значения weight, чтобы распределить оставшиеся ресурсы между обоими вариантами.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'BatchService' \
--task-definition 'batch-task:1' \
--desired-count 10 \
--capacity-provider-strategy \
'capacityProvider=FARGATE,weight=1,base=1' \
'capacityProvider=FARGATE_SPOT,weight=4'Когда выбирать тип запуска EC2
Выбирайте тип запуска EC2, если Вам нужны: экземпляры с GPU (поддержка GPU в Fargate ограничена), определённые типы экземпляров, недоступные в Fargate, пользовательская конфигурация OS (настройка ядра, пользовательские драйверы), сетевая производительность, требующая групп размещения или улучшенной работы сети, контейнеры Windows (EC2 поддерживает контейнеры Windows Server; Fargate также поддерживает Windows, но с ограничениями) или стабильно высокое использование ресурсов, при котором зарезервированные экземпляры EC2 дают значительную экономию по сравнению с посекундной оплатой Fargate.
Когда выбирать Fargate
Выбирайте Fargate, если хотите: избавиться от накладных расходов на управление EC2 (не устанавливать исправления OS и не масштабировать кластер), платить только за фактическое использование с посекундной тарификацией, запускать нестабильные или пакетные рабочие нагрузки, для которых нецелесообразно постоянно оплачивать простаивающие ресурсы EC2, обеспечить более надёжную изоляцию задач с помощью Firecracker microVMs или ускорить разработку, сосредоточившись исключительно на коде приложения. На экзамене SAA-C03 Fargate рекомендуется по умолчанию для новых рабочих нагрузок ECS, если не указано конкретное требование к EC2.
Поставщики ресурсов ECS
Поставщики ресурсов абстрагируют вычислительный уровень от сервисов ECS. Для EC2 поставщик ресурсов связывается с группой автоматического масштабирования — ECS автоматически масштабирует ASG, когда задачи невозможно разместить из-за нехватки ресурсов. Для Fargate встроенными поставщиками ресурсов являются FARGATE и FARGATE_SPOT. Определение стратегии поставщиков ресурсов для сервиса позволяет сочетать ресурсы по запросу и Spot/Fargate Spot, обеспечивая точный контроль компромисса между стоимостью и доступностью для каждой рабочей нагрузки.
Сравнение эксплуатационных накладных расходов
Эксплуатационные накладные расходы существенно различаются в зависимости от типа запуска. Тип запуска EC2 требует: выбора и обновления AMI, настройки автоматического масштабирования EC2, установки исправлений OS через SSM или пользовательские сценарии, управления ёмкостью экземпляров контейнеров и усиления безопасности на уровне экземпляров. Fargate устраняет всё перечисленное: AWS обновляет платформу Fargate, экземплярами не нужно управлять, а планирование ёмкости кластера не требуется. Однако Fargate предоставляет меньше возможностей для настройки OS и оптимизации производительности сети.
Выбор CPU и памяти задачи для Fargate
Определения задач Fargate должны указывать CPU и память из фиксированного набора сочетаний. Допустимые значения CPU: 256, 512, 1024, 2048, 4096, 8192, 16384 (в единицах vCPU, где 1024 = 1 vCPU). Объём памяти должен находиться в допустимом диапазоне для выбранного значения CPU — например, при CPU 256 можно указать 512–2048 MB памяти. Контейнеры внутри задачи совместно используют ограничение CPU и памяти этой задачи. Правильный выбор размера важен: Fargate точно тарифицирует указанные ресурсы, поэтому избыточное выделение приводит к лишним расходам без реального прироста производительности, если рабочая нагрузка ограничена CPU.
# Valid Fargate combinations
# 256 CPU (.25 vCPU): 512, 1024, or 2048 MB
# 512 CPU (.5 vCPU): 1024 to 4096 MB
# 1024 CPU (1 vCPU): 2048 to 8192 MB
# 2048 CPU (2 vCPU): 4096 to 16384 MB
# 4096 CPU (4 vCPU): 8192 to 30720 MBECS Exec для отладки
ECS Exec позволяет открыть интерактивный сеанс оболочки непосредственно в работающем контейнере (как в EC2, так и в Fargate) без SSH или промежуточных хостов. Внутри он использует AWS Systems Manager Session Manager. Включите эту возможность для сервиса и используйте CLI execute-command, чтобы запустить сеанс bash. Это незаменимый инструмент для отладки проблем в рабочих контейнерах. Роли задачи требуются разрешения ssmmessages:CreateControlChannel и связанные с SSM разрешения.
aws ecs execute-command \
--cluster 'MyAppCluster' \
--task 'abc123def456' \
--container 'myapp' \
--interactive \
--command '/bin/bash'Быстрая проверка
Проверьте, насколько хорошо Вы усвоили концепции AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке Вы узнали, что тип запуска EC2 предоставляет полный контроль над типами экземпляров и конфигурацией OS, но требует управления базовым парком ресурсов — это оптимальный вариант для GPU, специализированного оборудования или стабильно высоких нагрузок; Fargate устраняет необходимость управления инфраструктурой, тарифицируя задачи посекундно и обеспечивая надёжную изоляцию Firecracker — это оптимальный вариант для большинства веб- и API-нагрузок, а также пакетных заданий; Fargate Spot снижает расходы до 70 % для рабочих нагрузок, допускающих прерывание. Далее Вы узнаете об Amazon ECR, предназначенном для хранения и получения образов контейнеров.
Часто задаваемые вопросы
Урок «Тип запуска EC2 и Fargate» бесплатный?
Да — полный текст урока «Тип запуска EC2 и Fargate» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.
Чему я научусь в уроке «Тип запуска EC2 и Fargate»?
Сравните самостоятельное управление экземплярами контейнеров EC2 с использованием Fargate для бессерверного запуска контейнеров и разберитесь в различиях стоимости. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AWS Solutions Architect?
Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Тип запуска EC2 и Fargate»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AWS Solutions Architect?
Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Кластеры ECS, определения задач и сервисы
- Тип запуска EC2 и Fargate
- ECR: хранение и извлечение образов контейнеров
- Автоматическое масштабирование сервисов ECS и балансировка нагрузки