Airflow vs Prefect vs Dagster на собеседовании Data Engineer
price_text хранит цены как текст: 2, 10, 100. Аналитик написал WHERE price_text > '10' и получил неожиданный набор строк. Как сделать сравнение числовым?Оркестратор — это система, которая запускает пайплайны по расписанию, следит за зависимостями задач, ретраит упавшие шаги и даёт наблюдаемость. На собесе Data Engineer про оркестраторы спрашивают почти всегда, и в последние годы вопрос всё чаще звучит как «Airflow или что-то новее — что выберешь и почему». Ниже разбор трёх главных игроков и того, как обосновать выбор.
Airflow
Apache Airflow — де-факто стандарт индустрии и самый частый оркестратор в вакансиях DE. Пайплайн описывается как DAG (направленный ациклический граф) задач на Python: вы явно задаёте, какие таски и в каком порядке выполняются.
- Плюсы: зрелость и огромная экосистема — сотни готовых провайдеров и операторов под любые системы, большое сообщество, много специалистов на рынке. Если сомневаетесь, что выбрать в проде, Airflow — безопасный дефолт.
- Минусы: дизайн исторически тяжёлый и многословный, динамические пайплайны (циклы, ветвления по данным) делаются неудобно. В старых версиях планировщик был узким местом, хотя в Airflow 2.x его серьёзно ускорили, а TaskFlow API упростил передачу данных между тасками.
Prefect
Prefect — Python-native оркестратор с упором на простоту и динамику. Пайплайн описывается обычными функциями с декораторами, без отдельного DSL, поэтому код читается как обычный Python.
- Плюсы: динамические флоу из коробки — циклы, условия и параметризация задаются естественно; API проще и ближе к чистому Python; ниже порог входа.
- Минусы: экосистема и число готовых интеграций меньше, чем у Airflow, а специалистов на рынке — заметно меньше.
from prefect import flow, task
@task
def process(item):
return item * 2
@flow
def my_flow(items):
return [process(i) for i in items] # динамика: число тасок зависит от данныхDagster
Dagster построен вокруг другой идеи — asset-centric. Вы описываете не задачи-джобы, а data-ассеты (таблицы, датасеты, модели) и зависимости между ними. Оркестратор сам понимает, что нужно пересчитать при изменении.
- Плюсы: строгая типизация входов и выходов, встроенный lineage (граф происхождения данных), нативное партиционирование и понимание того, из чего собран каждый ассет. Это удобно для аналитической платформы и data-качества.
- Минусы: другая парадигма — переход с «мыслить джобами» на «мыслить ассетами» требует времени и перестройки привычек команды.
from dagster import asset
@asset
def raw_data(): ...
@asset
def cleaned_data(raw_data): ... # зависит от raw_data
@asset
def aggregated(cleaned_data): ... # зависит от cleaned_dataСравнение
| Airflow | Prefect | Dagster | |
|---|---|---|---|
| Парадигма | DAG из задач | Флоу (функции) | Ассеты (data products) |
| Типизация | Слабая | Лучше | Строгая |
| Динамика | Ограничена | Нативная | Нативная |
| Распространённость | Огромная | Растёт | Растёт |
| Облако / managed | MWAA, Astronomer | Prefect Cloud | Dagster Cloud |
В РФ Airflow — стандарт: его знает большинство команд и ищут в вакансиях. Prefect и Dagster чаще встречаются в новых проектах и у команд, которые сознательно уходят от тяжести Airflow. Поэтому на собесе безопаснее всего глубоко знать Airflow, а Prefect и Dagster — понимать концептуально и уметь сказать, чем они лучше в конкретных сценариях.
Как это спрашивают на собесе
Вопрос про оркестраторы почти никогда не сводится к «перечисли инструменты». Интервьюер проверяет инженерное мышление:
- Обоснование выбора. «Почему Airflow, а не Prefect для нашего пайплайна?» Сильный ответ опирается на зрелость экосистемы, наличие специалистов и требования к динамике, а не на «он популярнее».
- Понимание парадигм. Ждут, что вы объясните разницу между task-centric (Airflow, Prefect) и asset-centric (Dagster) подходами и когда второй выигрывает.
- Боли Airflow. Часто спрашивают, что в Airflow неудобно: динамические DAG, тяжёлый бэкфилл, передача больших данных через XCom, нагрузка на планировщик.
- Идемпотентность и ретраи. Независимо от инструмента, спрашивают, как сделать таск переисполняемым без побочных эффектов и как настраивать ретраи и алерты.
Типичная ошибка — говорить «Prefect лучше, потому что новее» без разбора trade-off'ов. Другой промах — не знать, что Airflow 2.x давно решил часть старых проблем, и критиковать его по устаревшим тезисам. Показывайте, что выбор оркестратора зависит от зрелости команды, требований к динамике и наличия готовых интеграций.
Связанные темы
- Airflow на собесе DE
- Airflow Sensors для DE
- Airflow XCom для DE
- dbt на собесе DE
- Подготовка к собесу Data Engineer
FAQ
Что учить в первую очередь — Airflow, Prefect или Dagster?
Airflow. Это стандарт индустрии и самый частый оркестратор в вакансиях DE. Prefect и Dagster полезно понимать концептуально, но глубина в Airflow даст больше на собесе и на реальной работе.
В чём главное отличие Dagster от Airflow?
Парадигма. Airflow оркеструет задачи (task-centric): вы описываете, что и в каком порядке запускать. Dagster оркеструет ассеты (asset-centric): вы описываете data-продукты и зависимости между ними, а система понимает, что нужно пересчитать. Dagster даёт lineage и типизацию из коробки.
Правда ли, что Airflow устарел?
Частично это миф по старым версиям. Airflow 2.x серьёзно ускорил планировщик и добавил TaskFlow API, упростивший код. Airflow остаётся многословным и слабым в динамических пайплайнах, но для большинства продовых задач это по-прежнему надёжный дефолт.
Когда стоит выбрать Prefect?
Когда важны динамические пайплайны (число задач зависит от данных, много ветвлений) и хочется писать на чистом Python с низким порогом входа. Минус — меньше готовых интеграций и специалистов на рынке, чем у Airflow.
Это официальная информация?
Нет. Статья основана на документации Airflow, Prefect и Dagster и на опыте прохождения собеседований. Конкретный стек и предпочтения зависят от компании.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.