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. Это архитектурно чище для любого из инструментов.