Что это такое
Apache Airflow — платформа оркестрации задач. Она нужна там, где есть цепочки операций: загрузить данные, преобразовать, проверить, выгрузить, уведомить команду и повторить это по расписанию.
Проект начался в Airbnb, затем стал проектом Apache. Его идея — описывать зависимости и расписание как код на Python, а не как набор разрозненных cron-команд и ручных инструкций.
Что внутри репозитория
В репозитории находятся планировщик, веб-интерфейс, исполнители задач, операторы, сенсоры, провайдеры интеграций, миграции базы, тесты и документация. Центральное понятие — DAG: направленный граф задач и зависимостей.
Airflow особенно силен там, где важна наблюдаемость: видно, какая задача упала, сколько она выполнялась, какие зависимости уже прошли и что можно перезапустить отдельно.
Как используют
Команды данных используют Airflow для ETL/ELT-процессов, регулярных отчетов, обучения моделей, загрузки файлов, синхронизации витрин и технических проверок. Python-код DAG хранится в репозитории и проходит обычное ревью.
Для совсем простых задач Airflow может быть тяжелым. Нужны база метаданных, планировщик, исполнители и дисциплина в написании DAG. Если задача одна и выполняется редко, cron или очередь могут быть проще.
Сильные стороны и ограничения
Сильная сторона Airflow — зрелая модель зависимостей и большой набор интеграций. Он дает команде общую панель для сотен регулярных задач.
Ограничение — эксплуатационная сложность. Платформу нужно обновлять, мониторить, настраивать права и следить, чтобы DAG не превращались в неуправляемый код.
Airflow особенно полезен, когда команда начинает мыслить не отдельными скриптами, а жизненным циклом данных: кто отвечает за задачу, когда она запускается, какие входы использует, как повторить сбой и где увидеть историю выполнения.
В зрелой установке важны не только DAG. Нужны правила именования, ограничения параллельности, секреты, алерты, управление провайдерами и понятная политика перезапусков. Без этого платформа быстро превращается в еще один источник ночных сбоев.
Для небольших команд полезно начинать с нескольких аккуратных DAG и правил сопровождения. Если сразу перенести в Airflow весь хаос старых скриптов, платформа лишь сделает этот хаос более видимым.
Пример
Минимальный DAG Airflow
Пример показывает ключевую идею: задачи описаны в Python, а зависимость задается оператором между ними.
from airflow.decorators import dag, task
from pendulum import datetime
@dag(start_date=datetime(2026, 1, 1), schedule="@daily", catchup=False)
def daily_report():
@task
def extract():
return {"rows": 120}
@task
def load(data):
print(f"loaded {data['rows']} rows")
load(extract())
daily_report()