Airflow vs Prefect vs Dagster на собеседовании Data Engineer

Проверь себя · 1/3разбор после ответа
Поле 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
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Сравнение

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 давно решил часть старых проблем, и критиковать его по устаревшим тезисам. Показывайте, что выбор оркестратора зависит от зрелости команды, требований к динамике и наличия готовых интеграций.

Связанные темы

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+ вопросами для собесов.