Errors
Apache Airflow

Apache Airflow: Airflow versus AWS Step Functions for workflow

Ты сидишь и думаешь: запускать 10 тысяч параллельных задач через Airflow или смотреть в сторону AWS Step Functions. Голова уже болит от мыслей про масштабирован

Ты сидишь и думаешь: запускать 10 тысяч параллельных задач через Airflow или смотреть в сторону AWS Step Functions. Голова уже болит от мыслей про масштабирование и счета от AWS.

С одной стороны — Airflow, знакомый инструмент, где видишь каждую упавшую таску и можешь её перезапустить. С другой — Step Functions, который обещает быть «Airflow от AWS», но без головной боли с инфраструктурой.

Давай разложим по полочкам.

Масштабирование: монолит против сервиса

Твоя главная боль — 10k параллельных контейнеров на AWS Batch. Airflow на одном инстансе EC2 такое может не пережить. Ты прав.

Придётся поднимать Airflow в Kubernetes, настраивать auto-scaling executor (Celery или KubernetesPodOperator), балансировку. Это работа.

Step Functions здесь выигрывает. Это managed-сервис, он масштабируется автоматически и обеспечивает high availability из коробки. Запустил state machine — и пошло-поехало.

UI и observability: где искать поломки

Airflow даёт несколько представлений графа (Graph, Tree, Gantt). Видишь статус каждой задачи, логи, можешь перезапустить с любого места.

Step Functions показывает только DAG (state machine). Но отслеживание состояния шагов, входные/выходные данные, логи ошибок — всё там же. Retry политики настраиваются на уровне шага.

Разницы в отладке для твоего кейса почти нет. Оба позволяют найти упавший шаг и понять почему.

Деньги: сервер против шагов

Вот где интересно. Airflow требует сервер. Даже на зарезервированной инстанции t2.large это около $42 в месяц. Плюс стоимость нод для исполнителей.

Step Functions считает за шаги. Первые 4000 шагов в месяц — бесплатно. Дальше — $0.000025 за шаг.

Твой сценарий: 10k шагов (по одному на контейнер Batch) раз в день. Это 300k шагов в месяц. Итог: (300 000 - 4 000) * 0.000025 = $7.4 в месяц.

Разница налицо. Но не забывай, что AWS Batch в обеих схемах — отдельная статья расходов.

Интеграция и API

Airflow 2.0 получил стабильный REST API. Step Functions тоже имеет CLI и SDK для всех языков.

Интеграция с AWS Batch есть у обоих: в Airflow через AwsBatchOperator, в Step Functions — нативный вызов Batch:SubmitJob.

Что же выбрать?

Если проект живёт полностью в экосистеме AWS и не планирует мульти-клауд — Step Functions сильный кандидат. Меньше операционных затрат, встроенное масштабирование, предсказуемый биллинг.

Если в команде уже есть экспертиза по Airflow, а в будущем возможен перенос части процессов в GCP или Azure — оставайся с Airflow. Но готовься к настройке кластера Kubernetes и мониторингу его стоимости.

Главное — не пытайся запустить 10k PythonOperator на одном планировщике. Вынеси логику в один шаг-оркестратор, который через AWS SDK запустит и отследит все 10k джоб в Batch. Это архитектурно чище для любого из инструментов.