Работали ли вы с Airflow и писали DAGи
Что проверяют
Понимаете ли вы модель выполнения и знаете ли главное требование к задачам.
Как отвечать
Граф задач это описание того, что и в каком порядке выполняется по расписанию. Узлы это задачи, рёбра это зависимости. Планировщик по расписанию создаёт запуски, а исполнитель раздаёт задачи рабочим процессам.
Что стоит назвать:
- описание графа: в современном стиле через декораторы, где зависимости выводятся из передачи результатов между функциями;
- операторы и сенсоры: готовые действия и ожидание внешнего условия, например появления файла;
- дата запуска: ключевое понятие. Задача получает интервал, за который считает данные, и именно на него опирается, а не на текущее время. Это то, что делает возможным перезапуск за прошлые периоды;
- повторные попытки, задержки, соглашение об уровне обслуживания;
- пулы для ограничения одновременных обращений к внешней системе.
Главное требование к задачам, ради которого вопрос и задают: идемпотентность. Задача обязана давать один и тот же результат при повторном запуске за тот же период. Иначе перезапуск после сбоя или пересчёт за прошлый месяц удвоят данные. На практике это означает перезапись партиции по дате вместо добавления строк.
Второе требование: атомарность. Задача либо полностью выполнилась, либо не оставила следов. Промежуточный результат пишут во временное место и переносят одной операцией.
Что делать нельзя: передавать между задачами большие данные через встроенный механизм обмена. Он для маленьких значений вроде идентификаторов и путей, а сами данные лежат в хранилище.
Из практики полезно упомянуть повторный запуск за прошлые периоды и связанный с ним параметр, определяющий, догонять ли пропущенные интервалы после включения графа. Забытая настройка приводит к лавине запусков сразу после развёртывания.
Где спотыкаются
Пишут неидемпотентные задачи, добавляющие строки вместо перезаписи.
Опираются на текущее время вместо даты интервала.
Передают через обмен между задачами крупные данные.
Не настраивают догоняющие запуски и получают сотни задач при старте.