GH GambleHub

Обробка сигналів в реальному часі

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

Real-time потік потрібен, щоб реагувати «тут і зараз»:
  • Антифрод/AML: структурування депозитів, «мулювання», velocity-атаки.
  • Responsible Gaming (RG): перевищення лімітів, ризик-патерни поведінки.
  • Ризик/Комплаєнс: санкційний скринінг при реєстрації/транзакції в онлайні.
  • Персоналізація: тригери бонусів/місій, реактивні кампанії.
  • Операції/SRE: деградації SLA, шквали помилок, аномалії метрик.

Ключові цілі: низька затримка (p95 0. 5-5 с), висока повнота (≥99. 5%), стійкість до сплесків.

2) Таксономія сигналів

Транзакційні: `payment. deposit/withdraw/chargeback`.
Ігрові: `game. bet/payout`, `game. session_start/stop`.
Автентифікація: `auth. login/failure', зміна пристроїв/гео.
Поведінкові: швидкість ставок, експоненціальне зростання суми, нічна активність.
Операційні: `api. latency`, `error. rate', «шторму» перезапусків подів.

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

3) Еталонна архітектура real-time контуру

1. Ingest і шина: HTTP/gRPC → Edge → Kafka/Redpanda (партіонування по'user _ id/tenant').
2. Streaming-движок: Flink/Spark Structured Streaming/Beam; stateful-оператори, CEP.
3. Онлайн-збагачення: lookup-таблиці (Redis/Scylla/ClickHouse Read-Only), кеш провайдерів (санкції/КУС).

4. Синки:
  • Алерт-топіки/к'ю (case-менеджмент, SOAR).
  • Фічестор онлайн (скоринг моделей).
  • Gold-стрім-вітрини (оперативні дашборди).
  • «Тепле» сховище для швидкої аналітики (ClickHouse/Pinot/Druid).
  • 5. Архів/форензика: незмінне складання в Lake (Parquet, time-travel).
  • 6. Спостережуваність: трейсинг/метрики/логи + lineage.

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

Види вікон:
  • Tumbling: фіксовані вікна (напр., 1 хв) - прості агрегати.
  • Hopping: перекриваються (наприклад, крок 30 с, вікно 2 хв) - «гладкі» метрики.
  • Session: розриви по неактивності - поведінковий аналіз.
  • Watermarks: межа «знання про час» для event-time; допускаємо запізнення (allowed lateness, напр., 2 хв).
  • Стратегії запізнілих: доемісія коригувань, приписка «late = true», DLQ.

5) Stateful-оператори та дедуплікація

Ключування: по `user_id`, `payment. account_id`, `device_id`.
Стан: суматори, ковзні лічильники, bloom-фільтри для idempotency.
Дедуп: зберігання «(event_id, seen_at)» в state/kv; TTL = 24-72 год.
Exactly-Once: транзакційні sink'і (2-phase), ідемпотентні upsert-операції.

6) Збагачення потоку

Lookup-джойни: ліміти RG, ризик-швидкість користувача, рівень KYC, гео/ASN.
Асинхронні виклики: санкційний реєстр/антифрод-провайдери (async I/O, таймаути і fallback).
Нормалізація валют/таймзон: уніфікація до UTC і базової валюти; фіксувати'fx _ source'.

7) CEP: виявлення складних патернів

Приклади правил:
  • Structuring: ≥3 депозиту за 10 хв, кожен <порогу звітності, сумарно> X.
  • Device-switch: 3 різних пристрої за 15 хв + зміна IP/ASN.
  • RG-fatigue: сумарні ставки за 1 годину> ліміту + програш ≥ Y.
  • Ops-storm: p95 latency> 2 × базової, 5xx> 3% в 5-хв вікні.

CEP зручно виразити в Flink CEP/SQL або бібліотеках шаблонів подій.

8) Онлайн-фічі та моделі

Feature pipelines: лічильники, velocity-метрики, «час з останньої події», share-of-wallet.
Узгодженість online/offline: одна кодова база трансформацій; тести репрохідності.
Скоринг: лайт-моделі (логіт/GBDT) синхронно; важкі - асинхронно через чергу.
Контроль дрейфу: PSI/KS і алерти; «темні запуски» для нових моделей.

9) Гарантії доставки та порядок

At-least-once в шині + ідемпотентність на прийомі.
Партіонування за ключем забезпечує локальний порядок.
Retries & backpressure: експоненціальні ретраї з jitter, автоматичний контроль тиску.

10) SLO/SLI (рекомендовані)

ПоказникМета
p95 end-to-end latency (ingest → alert)≤ 2 с (крит.) , ≤ 5 с (некрит.)
Completeness за вікно T≥ 99. 5%
Помилки схем/валідаторів≤ 0. 1% подій
Частка подій з trace_id≥ 98%
Alert precision/recall (цілі по домену)≥ 0. 8 / ≥ 0. 7
Доступність стрім-сервісу≥ 99. 9%

11) Спостережуваність real-time контуру

Метрики пайплайну: throughput, lag per partition, busy time, checkpoint duration.
Якість сигналів: completeness, duplication rate, late ratio.
Дашборди: теплова карта лагів по топіках, алерт-воронка (sobytiye→pravilo→keys), карта гарячих ключів.
Трейсинг: пов'язувати алерт з вихідними подіями (trace_id).

12) Безпека і приватність

PII-мінімізація: токенізація ідентифікаторів, маскування чутливих полів.
Geo-residency: регіональні конвеєри (EEA/UK/BR).
Аудит: незмінні логи рішень (хто, що, чому), Legal Hold для кейсів.
Доступ: RBAC до правил/моделей, подвійний контроль на викати.

13) Вартість і продуктивність

Гарячі ключі: перерозподіл (key salting), composite keys.
Стан: розумні TTL, інкрементальна матеріалізація, RocksDB-тюнінг.
Вікна: оптимальні розміри і allowed lateness; шари pre-aggregation для «галасливих» потоків.
Семплювання: на некритичних потоках і на рівні метрик (не на транзакціях/комплаєнсі).

14) Приклади (спрощено)

Flink SQL - structuring депозитів (10-хв вікно, step 1 хв):
sql
CREATE VIEW deposits AS
SELECT user_id, amount, ts
FROM kafka_deposits
MATCH_RECOGNIZE (
PARTITION BY user_id
ORDER BY ts
MEASURES
FIRST(A. ts) AS start_ts,
SUM(A. amount) AS total_amt,
COUNT() AS cnt
ONE ROW PER MATCH
AFTER MATCH SKIP PAST LAST ROW
PATTERN (A{3,})
WITHIN INTERVAL '10' MINUTE
) MR
WHERE total_amt > 500 AND cnt >= 3;
Псевдокод анти-velocity за ставками:
python key = event. user_id window = sliding(minutes=5, step=30)   # hopping window count = state. counter(key, window)
sum_amt = state. sum(key, window)
if count > 30 or sum_amt > THRESH:
emit_alert("RG_VELOCITY", key, snapshot(state))
Дедуп по event_id (Kafka Streams):
java if (!kvStore.putIfAbsent(event. getId(), now())) {
forward(event); // unseen -> process
}

15) Процеси і RACI

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

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

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

1. 2-3 критичних сигнали (наприклад,'payment. deposit`, `auth. login`, `game. bet`).

2. Kafka + Flink, базовий дедуп і watermark; одна CEP-правила для антифроду і одна - для RG.

3. ClickHouse/Pinot для оперативних вітрин; дашборди lag/completeness.

4. Інцидент-канал (webhook/Jira) і ручний triage.

Фаза 2 (4-8 тижнів):
  • Онлайн-фічестор, скоринг лайт-моделі; асинхронні lookups (санкції/КУС).
  • Управління правилами як кодом, канарські викати, A/B правил.
  • Регіоналізація і PII-контролі, Legal Hold для кейсів.
Фаза 3 (8-12 тижнів):
  • Каталог сигналів, автогенерація документації, симулятор «replay & what-if».
  • Автокалібрування порогів (Bayesian/quantile), метрики precision/recall в онлайні.
  • DR-навчання, multi-region active-active, chargeback моделей за командами.

17) Чек-лист якості перед продом

  • Схеми і контракти, валідація в ingest.
  • Налаштовані вікна, watermarks, allowed lateness + DLQ.
  • Дедуп і ідемпотентні sink'і.
  • Метрики lag/throughput/state size, алерти SLO.
  • Безпека: RBAC на правила/моделі, маскування PII.
  • Документація: owner, SLO, приклади, карти залежностей.
  • Процедури rollback і фриз-кнопка.

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

Ігнор event-time: використовуйте watermarks, інакше «сповзуть» метрики.
Немає дедупа: дублікати дадуть помилкові алерти → введіть idempotency.
Гарячі ключі: перекіс партій → salting/resharding.
Занадто жорсткі вікна: втрата запізнілих → allowed lateness + коригувальні емісії.
Змішування PII: поділяйте токенізацію та аналітичний потік.
Немає симулятора: тестуйте правила на «реплеї» перед викочуванням.

19) Глосарій (коротко)

CEP - Complex Event Processing, виявлення патернів.
Watermark - поріг часу для готовності вікна.
Allowed Lateness - допуск запізнілих подій.
Stateful Operator - оператор зі стійким станом.
Feature Store - сховище онлайн/офлайн ознак для ML.

20) Підсумок

Real-time обробка сигналів - це керований конвеєр з чіткими схемами, вікнами і watermark'ами, stateful-логікою, онлайновим збагаченням і строгими SLO. Дотримуючись цих практик, ви отримуєте швидкі і надійні детектори ризиків, стійкі персоналізаційні тригери і оперативні дашборди, які масштабуються економно і комплаєнтно.

Contact

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

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

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

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

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

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