GH GambleHub

Аналітика в реальному часі

1) Призначення та бізнес-цінність

Аналітика в реальному часі (RTA) забезпечує реакції в секунди, а не години:
  • AML/Антифрод: структурування депозитів, velocity-атаки, ризик-транзакції.
  • Responsible Gaming (RG): перевищення лімітів, патерни ризику, самовиключення.
  • SRE/Операції: раннє виявлення деградацій SLA, сплесків помилок, перегріву кластерів.
  • Продукт і маркетинг: тригери персоналізації, місії/квести, real-time сегментація.
  • Операційна звітність: near-real-time GGR/NGR, дашборди залів/провайдерів.

Цільові орієнтири: p95 end-to-end 0. 5–5 с, completeness ≥ 99. 5%, доступність ≥ 99. 9%.


2) Еталонна архітектура

1. Ingest/Edge — `/events/batch` (HTTP/2/3), gRPC, OTel Collector; валідація схем, анти-дублі, гео-маршрутизація.
2. Шина подій - Kafka/Redpanda (партіонування по'user _ id/tenant/market', DLQ, ретеншн 3-7 днів).
3. Stream-обробка - Flink/Spark Structured Streaming/Beam: stateful-оператори, CEP, watermarks, allowed lateness, дедуп.
4. Online-збагачення - Redis/Scylla/ClickHouse lookups (RG-ліміти, KYC, BIN→MCC, IP→Geo/ASN), асинхронні виклики з таймаутами і fallback.
5. Сервінг - ClickHouse/Pinot/Druid (оперативні вітрини 1-5 хвилин), Feature Store (онлайн ознаки), webhooks/тікетинг/SOAR.
6. Lakehouse - Bronze/Silver/Gold для довготривалої консолідації, реплея і звірок.
7. Спостережуваність - метрики пайплайнів, трейсинг (OTel), логи, lineage і cost-дашборди.


3) Сигнали і таксономія

Платежі: `payment. deposit/withdraw/chargeback`.
Ігрові: `game. bet/payout', сесії.
Автентифікація та поведінка: `auth. login/failure`, device-switch, velocity.
Операційні: latency, error-rate, перезапуски подів, saturation.
Комплаєнс: санкційний скринінг, RG-прапори, DSAR-події.

Кожен тип має власника (domain owner), схему, SLO свіжості і політику late data.


4) Вікна, watermarks і late data

Вікна: tumbling (фікс.) , hopping (перекриття), session (по неактивності).
Watermark: межа «знання за часом» (зазвичай 2-5 хв).
Запізнілі події: доемісії коригувань, прапор'late = true', DLQ при сильному запізненні.

Приклад 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);

5) CEP і stateful-агрегації

Ключування: `user_id`, `device_id`, `payment. account_id`.
Стан: ковзаючі лічильники/суми, bloom-фільтри для дедупа, TTL.
CEP-патерни: structuring (<поріг, ≥N разів, за вікно T), device-switch, RG-fatigue.

Псевдокод CEP:
python if cnt_deposits(last=10MIN) >= 3 and sum_deposits(last=10MIN) > THRESH and all(d.amount < REPORTING_THRESHOLD):
emit_alert("AML_STRUCTURING", user_id, snapshot())

6) Exactly-Once, порядок та ідемпотентність

At-least-once доставка в шині + дедуп по'event _ id'на обробці (TTL 24-72 год).
Порядок: партіонування за ключами (локальний порядок гарантований).
Sink: транзакційні коміти (2-phase) або idempotent upsert/merge.
Outbox/Inbox: транзакційна публікація доменних подій з OLTP.


7) Online-збагачення і Feature Store

Lookup: RG-ліміти, KYC-статуси, BIN→MCC, IP→Geo/ASN, ринки/податки, FX на момент події.
Асинхронні виклики: санкційні/РЕР API з таймаутами; при помилці -'unknown'+ ретрай/кеш.
Feature Store: узгодження online/offline; одна кодова база трансформацій.


8) Real-time вітрини і сервінг

ClickHouse/Pinot/Druid: секундні/хвилинні агрегати, materialized views, SLA на затримку 1-5 хв.
API/GraphQL: низька латентність для дашбордів/віджетів.
Алерти: вебхукі/Jira/SOAR зі збагаченим контекстом (trace_id, last events).

Приклад ClickHouse (щохвилинний GGR):
sql
CREATE MATERIALIZED VIEW mv_ggr_1m
ENGINE = AggregatingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), market, provider_id) AS
SELECT toStartOfMinute(event_time) AS ts_min,
market,
provider_id,
sumState(stake_base) AS s_stake,
sumState(payout_base) AS s_payout
FROM stream.game_events
GROUP BY ts_min, market, provider_id;

9) Метрики, SLI/SLO і дашборди

Рекомендовані SLI/SLO:
  • p95 ingest→alert ≤ 2 с (критичні правила), ≤ 5 с (інше).
  • Completeness вікна T ≥ 99. 5%; Schema validity ≥ 99. 9%; Trace coverage ≥ 98%.
  • Доступність стрім-сервісу ≥ 99. 9%; late-ratio ≤ 1%.
Дашборди (мінімум):
  • Лаг по партіях/топіках; busy time операторів; розмір стану.
  • Воронка «sobytiye→pravilo→keys», precision/recall по доменах.
  • Теплокарта late/completeness; карта «гарячих» ключів.

10) Потокова DQ (якість)

Ingest-валідації: schema/enums/size-limits, анти-дублі.
На потоці: completeness/dup-rate/late-ratio, коректність вікон (без подвійного обліку).
Політики реакції: critical → DLQ + pager; major/minor → тегування + звіт.

Приклад YAML:
yaml stream: payments rules:
- name: schema_valid type: schema severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
- name: dedup_window type: unique keys: [event_id]
window_minutes: 1440

11) Приватність, безпека і резидентність

PII-мінімізація: псевдонімізація ID, маскування чутливих полів, токенізація PAN/IBAN.
Data residency: регіональні конвеєри (EEA/UK/BR), окремі KMS-ключі.
DSAR/RTBF: селективні редагування на downstream вітринах; Legal Hold для кейсів/звітів.
Аудит: незмінні логи доступів/змін правил, журналізація релізів.


12) Економіка і продуктивність

Шардинг/ключі: уникайте «гарячих» ключів (salting/composite), баланс партій.
Стан: TTL, compact snapshots, тюнинг RocksDB/state backend.
Передагрегації: reduce на ранніх стадіях для гучних тем.
Sampling: тільки для некритичних метрик (не транзакції/комплаєнс).
Chargeback: бюджети на теми/джоби, квоти на реплеї і важкі запити.


13) Процеси і RACI

R: Streaming Platform (інфра/релізи), Domain Analytics (правила/фічі), MLOps (скоринг/Feature Store).
A: Head of Data/Risk/Compliance по доменах.
C: DPO/Legal (PII/retention), SRE (SLO/інциденти), Архітектура.
I: Продукт, Підтримка, Маркетинг, Фінанси.


14) Дорожня карта впровадження

MVP (2-4 тижні):

1. Kafka/Redpanda + 2 критичних топіка (наприклад,'payments','auth').

2. Flink-джоба з watermark, дедупом і 1 CEP-правилом (AML або RG).

3. Оперативна вітрина в ClickHouse/Pinot (1-5 хв), дашборди lag/completeness.

4. Інцидент-канал (вебхукі/Jira), базові SLO і алерти.

Фаза 2 (4-8 тижнів):
  • Online-збагачення (Redis/Scylla), Feature Store, асинхронні lookups.
  • Управління правилами як кодом, canary/A-B, потокова DQ.
  • Регіоналізація конвеєрів, DSAR/RTBF процедури, Legal Hold для кейсів.
Фаза 3 (8-12 тижнів):
  • Мульти-регіон active-active, симулятор «replay & what-if», авто-калібрування порогів.
  • Gold-stream вітрини (GGR/RG/AML), near-real-time звітність.
  • Cost-дашборди, chargeback, DR-навчання.

15) Приклади (фрагменти)

Flink CEP — device-switch:
sql
MATCH_RECOGNIZE (
PARTITION BY user_id
ORDER BY event_time
MEASURES
FIRST(A.device_id) AS d1,
LAST(B.device_id) AS d2,
COUNT()      AS cnt
PATTERN (A B+)
DEFINE
B AS B.device_id <> PREV(device_id) AND B.ip_asn <> PREV(ip_asn)
) MR
Kafka Streams - ідемпотентний фільтр:
java if (seenStore.putIfAbsent(eventId, now()) == null) {
context.forward(event);
}

16) Чек-лист перед продом

  • Схеми/контракти в Registry, back-compat тести зелені.
  • Включені watermark/allowed lateness, дедуп і DLQ.
  • Налаштовані SLO і алерти (lag/late/dup/state size).
  • Збагачення з кешами і таймаутами; fallback «unknown».
  • RBAC/dual-control на правила/моделі; журнал змін включено.
  • Документація правил/вітрин; runbook'і реплея/відкату.

17) Часті помилки і як їх уникнути

Ігнор event-time: без watermarks метрики «пливуть».
Немає дедупа: помилкові алерти, подвійний облік.
Гарячі ключі: перекіс партій → salting/resharding.
Синхронні зовнішні API в гарячому шляху: тільки async + кеш.
Некерована вартість: передагрегації, TTL стану, квоти, cost-моніторинг.
Відсутність симулятора: викати без «replay» → регресії.


18) Підсумок

Аналітика в реальному часі - це не «швидкий BI», а керований контур c контрактами, stateful-логікою, CEP, watermarks, online-збагаченням і строгими SLO. Дотримуючись цих практик, платформа отримує точні сигнали і рішення в межах секунд, підтримуючи комплаєнс, продуктові сценарії і операційну стійкість при контрольованій вартості.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.