Stream vs Batch аналіз
1) Коротка суть
Stream - безперервна обробка подій за секунди: антифрод/AML, RG-тригери, SLA-алерти, оперативні панелі.
Batch - періодичний перерахунок з повною відтворюваністю: регуляторна звітність (GGR/NGR), фінсверки, ML-датасети.
Орієнтири: Stream p95 e2e 0. 5-5 с, Batch D + 1 до 06:00 (лок.) .
2) Матриця вибору (TL; DR)
Правило 80/20: все, що не вимагає реакції <5 хвилин - в Batch; решта - в Stream, з нічною валідацією Batch.
3) Архітектури
3. 1 Lambda
Stream для онлайну + Batch для консолідації. Плюс: гнучкість. Мінус: дві логіки.
3. 2 Kappa
Все як потоки; Batch = «реплей» через лог. Плюс: Єдиний код. Мінус: складність реплеїв/вартість.
3. 3 Lakehouse-Hybrid (рекомендовано)
Stream → оперативні OLAP-марти (хвилини) і Bronze/Silver; Batch перезбирає Gold (D + 1) і публікує звіти.
4) Дані та час
Stream
Вікна: tumbling/hopping/session.
Watermarks: 2-5 хв; late data позначається і доемітиться.
Stateful: CEP, дедуп, TTL.
Batch
Інкременти/CDC: 'updated _ at', лог-реплікація.
SCD I/II/III: Історія атрибутів.
Снапшоти: денні/місячні шари для «as-of».
5) Патерни застосування в iGaming
AML/Антифрод: Stream (velocity/структурування) + Batch звірки і кейси.
Responsible Gaming: Stream контроль лімітів/самовиключень; Batch звітні реєстри.
Операції/SRE: Stream алерти SLA; Batch пост-аналіз інцидентів і тренди.
Продукт/маркетинг: Stream персоналізація/місії; Batch когорти/LTV.
Фінанси/звіти: Batch (Gold D + 1, WORM-пакети), Stream - оперативні панелі.
6) DQ, відтворюваність, реплей
Stream DQ: валідація схем, дедуп'( event_id, source)', completeness вікна, late-ratio, dup-rate; критичне → DLQ.
Batch DQ: унікальність/FK/range/temporal, звірки з OLTP/провайдерами; критичне → fail job + звіт.
- Stream: реплей топіків за діапазоном + deterministic трансформації.
- Batch: time-travel/версії логіки ('logic _ version') + снапшоти Gold.
7) Приватність і резидентність
Stream: псевдонімізація, online-маскування, регіональні конвеєри (EEA/UK/BR), таймаути на зовнішні PII-lookups.
Batch: ізоляція PII-маппінгів, RLS/CLS, DSAR/RTBF, Legal Hold, WORM-архіви.
8) Cost-інжиніринг
Stream: уникати «гарячих» ключів (salting), обмежувати async lookups, TTL стану, предагрегація.
Batch: партиціонування/кластеризація, компакція small files, матеріалізація стабільних агрегатів, квоти/вікна запуску.
9) Приклади
9. 1 Stream - Flink SQL (10-хв velocity депозитів)
sql
SELECT user_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS sum_10m
FROM stream. payments
GROUP BY user_id, TUMBLE(event_time, INTERVAL '10' MINUTE);
9. 2 Stream - CEP (псевдокод AML)
python if count_deposits(10MIN) >= 3 and sum_deposits(10MIN) > THRESH \
and all(d. amount < REPORTING_LIMIT for d in window):
emit_alert("AML_STRUCTURING", user_id, snapshot())
9. 3 Batch - MERGE (інкремент Silver)
sql
MERGE INTO silver. payments s
USING stage. delta_payments d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
9. 4 Batch — Gold GGR (D+1)
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) event_date,
b. market, g. provider_id,
SUM(b. stake_base) stakes_eur,
SUM(p. amount_base) payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
10) Метрики та SLO
Stream (орієнтири)
p95 ingest→alert ≤ 2–5 c completeness окна ≥ 99. 5%
schema-errors ≤ 0. 1%
late-ratio ≤ 1%
доступність ≥ 99. 9%
Batch (орієнтири)
Gold. daily готове до 06:00 лок.
completeness ≥ 99. 5%
validity ≥ 99. 9%
MTTR DQ-інциденту ≤ 24-48 год
11) Тестування та релізи
Контракти/схеми: consumer-driven tests; back-compat CI.
Stream: канарні правила, темний запуск, replay-симулятор.
Batch: dry-run на вибірках, порівняння метрик, контрольне підсумовування (reconciliation).
12) Анти-патерни
Дублювання логіки: різні розрахунки Stream і Batch без вирівнювання формул.
Синхронні зовнішні API в гарячому шляху Stream без кешу/таймаутів.
Full reload «про всяк випадок» замість інкрементів.
Відсутність watermarks/late-політик.
PII в аналітичних шарах; відсутність CLS/RLS.
Gold-вітрини, які «мутують» заднім числом.
13) Рекомендований гібрид (плейбук)
1. Stream-контур: ingest → шина → Flink/Beam (watermarks, дедуп, CEP) →
OLAP (ClickHouse/Pinot) для 1-5-хв панелей + Bronze/Silver (append).
2. Batch-контур: інкременти/CDC → Silver нормалізація/SCD → Gold добові вітрини/звіти (WORM).
3. Узгодження: єдиний семантичний шар метрик; nightly звірки Stream↔Batch; розбіжності> порогу → тікети.
14) RACI
R (Responsible): Streaming Platform (Stream-інфра), Data Engineering (Batch моделі), Domain Analytics (метрики/правила), MLOps (фічі/Feature Store).
A (Accountable): Head of Data / CDO.
C (Consulted): Compliance/Legal/DPO, Finance (FX/GGR), Risk (RG/AML), SRE (SLO/вартість).
I (Informed): BI/Продукт/Маркетинг/Операції.
15) Дорожня карта
MVP (2-4 тижні):1. Kafka/Redpanda + 2 критичних топіка ('payments','auth').
2. Flink-джоба: watermark + дедуп + 1 CEP-правило (AML або RG).
3. OLAP-вітрина 1-5 хв + дашборди lag/late/dup.
4. Lakehouse Silver (ACID), перша Gold. ggr_daily (D + 1 до 06:00).
Фаза 2 (4-8 тижнів):- Інкременти/CDC по доменах, SCD II, семантичний шар метрик.
- Потокова DQ і nightly звірки Stream↔Batch.
- Регіоналізація (EEA/UK/BR), DSAR/RTBF, Legal Hold.
- Реплей-симулятор, canary/A-B релізи правил/метрик.
- Cost-дашборди і квоти; tiered storage; DR-навчання.
- Автогенерація документації вітрин/метрик і lineage.
16) Чек-лист впровадження
- Схеми/контракти в Registry; back-compat тести зелені.
- Stream: watermarks/allowed-lateness, дедуп, DLQ; OLAP-панелі в проді.
- Batch: інкременти/CDC, SCD II, Gold D + 1 з WORM-експортами.
- Єдиний семантичний шар метрик; nightly звірки Stream↔Batch.
- DQ-дашборди Freshness/Completeness/Validity; алерти lag/late/dup.
- RBAC/ABAC, шифрування, резидентність; DSAR/RTBF/Legal Hold.
- Вартість під контролем (cost/GB, cost/query, state size, реплеї квотовані).
17) Підсумок
Stream і Batch не конкуренти, а дві шестерні одного приводу. Stream дає реакцію «тут і зараз», Batch - перевіряється істину «на ранок». Гібрид Lakehouse-підхід, єдиний шар метрик і дисципліна DQ/lineage дозволяють будувати швидкі, відтворювані і комплаєнтні аналітичні контури, оптимальні по SLA і вартості.