Когда нужен batch ETL, а когда streaming
Когда стоит использовать классический batch ETL, а когда streaming для рекомендаций, аналитики или ML-фичей?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Batch проще и дешевле, если допустима задержка и нужны backfills. Streaming нужен, когда свежесть в секунды или минуты меняет продуктовое действие: real-time personalization, fraud/risk, counters, triggers или online features.
Полный разбор
Batch ETL подходит для регулярных training datasets, offline recommendations, отчетов, агрегатов, периодических feature tables и задач, где freshness в часы или день приемлема. Он проще для отладки, дешевле в эксплуатации и лучше поддерживает backfill.
Streaming оправдан, когда задержка прямо влияет на продукт или риск: свежие клики в ленте, fraud/rate-limit реакции, near-real-time counters, notifications, online features, мониторинг эксперимента или события, которые быстро устаревают. Но streaming добавляет ordering, late events, replay, state management, exactly-once/at-least-once semantics и сложный monitoring.
В production часто нужен hybrid: streaming обновляет свежие фичи и реакции, batch пересчитывает canonical datasets, чинит late data и обучает модели. Выбор надо делать по freshness SLA, correctness requirements, объему, команде и цене эксплуатации.
Теория
Batch versus streaming - это trade-off freshness против complexity/cost, а не выбор “старой” или “новой” технологии.
Типичные ошибки
- Использовать streaming для данных с daily freshness.
- Забыть про late events и replay.
- Считать, что streaming отменяет batch backfills.
Как отвечать на собеседовании
- Сначала спросите freshness SLA и product impact.
- Дайте hybrid batch плюс streaming как типичный ответ.