Назад к подготовке

Когда нужен 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 как типичный ответ.