Сотни Flink-джоб, десятки релизов в день: как мы убрали компиляцию Job Graph из рантайма и сократили downtime в 20 раз
Программный комитет ещё не принял решения по этому докладу
Целевая аудитория
Тезисы
В платформе потоковой обработки Яндекс Go живёт несколько сотен Apache Flink-джоб, принадлежащих десяткам команд. Суммарный поток — до 500 000 событий в секунду. Джобы крутятся на session-кластерах, и каждая релизится по несколько раз в день.
Проблема в том, что при обновлении джобу нужно остановить, а запустить заново она сможет только после того, как Flink Client скомпилирует из её кода JobGraph. Это занимает от 30 секунд до 10 минут и для одной джобы складывается в десятки минут простоя в сутки — с растущим консьюмер-лагом и нарушением SLA по свежести данных.
Мы вынесли компиляцию из рантайма в CI: JobGraph собирается один раз на сборке, а джоба запускается из готового графа, минуя Flink Client. Деплой стал занимать 5 секунд вместо 90 — в 20 раз быстрее. Разберём, где именно в пути от кода до JobGraph теряются минуты, как устроено наше решение и на какие грабли вы наступите, если решите повторить.
Руководитель группы развития потоковой обработки данных в Yandex Go.
Большую часть карьеры занимался разработкой различных ETL-систем. Разрабатывал NRT-процессинг в Belka Games. В Яндексе работает над развитием платформы по обработке потоковых данных на Apache Flink.
Видео
Другие доклады секции
Platform Engineering