Обробка сигналів в реальному часі
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), кеш провайдерів (санкції/КУС).
- Алерт-топіки/к'ю (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 (рекомендовані)
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 для кейсів.
- Каталог сигналів, автогенерація документації, симулятор «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. Дотримуючись цих практик, ви отримуєте швидкі і надійні детектори ризиків, стійкі персоналізаційні тригери і оперативні дашборди, які масштабуються економно і комплаєнтно.