#orchestration
За многие годы Airflow стал де-факто стандартом в области управления цепочками взаимосвязанных задач.
Хотя сам инструмент позиционируется как полноценное решение для построения пайплайнов данных, мною он всегда рассматривался только как оркестратор (дирижер, раздающий задачи). Решать эти задачи мною призывались специализированные инструменты:
— Processing: curl, jq, awk, sed
— File storage: S3, MinIO
— Transformations: dbt + DBMS (Clickhouse, Snowflake, ...)
— Alerts: Slack, Telegram
🔺 Дам пример: перед нами задача — регулярно получать выгрузки из REST-сервиса для аналитики в Clickhouse.
Вся соль DAG в том, какими инструментами и набором шагов мы решим эту задачу. Сравните
Подход #1:
— 20 разных endpoints (справочники, факты)
— DAG с PythonOperator на каждый endpoint, request с обработкой ответа
— Вставка результата (JSON) в MongoDB как документ
— Создание целевых таблиц в Clickhouse (SQL = CREATE TABLE ...)
— Предобработка данных (типы, название колонок, порядок), возможно в pandas
— Вставка в целевые таблицы (INSERT loop = медленно)
И подход #2:
— Однострочный bash-скрипт с параметрами
curl ${ENDPOINT} | jq | s3 copy ${S3_BUCKET_PATH} - — Конфиг в yaml с параметрами для 20 endpoints
— Генерация DAG по шаблону BashOperator на основе yaml config
— Запись результатов в стиле Extract - Load в S3
— Чтение из Clickhouse с использованием S3 table engine (с чтением схемы schema inference)
🔹 В качестве критериев для сравнения используйте:
— Простота конфигурации и гибкость (endpoint: добавить, убрать, применить фильтр, записать в другой S3 bucket, выполнить полный пересчет)
— Быстрота (скорость работы, устойчивость к росту объема данных)
— Принцип EL = все трансформации в DWH (никаких трансформаций вне DWH)
— Устойчивость к изменениям и проблемам (какие точки отказа? сколько их?)
— Поддержка Schema Evolution (меняются атрибуты, типы данных в выгрузке - будет ли ошибка? требуются ли ручные действия?)
Хочется разразиться целой публикацией на Хабр на этот счет: обзор возможностей, эволюция развития инструмента, лучшие практики (и плохие тоже) и их рационализация. Дайте реакций, и это случится.
🔻 А что вы думаете насчет Airflow и рецептов DAGs? Какого подхода придерживаетесь?
🌐 @data_apps | Навигация по каналу