GH GambleHub

Analyse en temps réel

1) La destination et la valeur commerciale

L'analyse en temps réel (RTA) fournit des réactions en secondes plutôt que des heures :
  • AML/Antifrod : structuration des dépôts, attaques de velocity, transactions à risque.
  • Jeu responsable (RG) : dépassement des limites, schémas de risque, auto-exclusion.
  • SRE/Opérations : détection précoce des dégradations de SLA, éclats d'erreur, surchauffe des clusters.
  • Produit et marketing : déclencheurs de personnalisation, missions/quêtes, segmentation temps réel.
  • Rapports opérationnels : GGR/NGR, dashboards de salles/fournisseurs.

Repères cibles : p95 end-to-end 0. 5–5 с, completeness ≥ 99. 5 %, disponibilité ≥ 99. 9%.


2) Architecture de référence

1. Ingest/Edge — `/events/batch` (HTTP/2/3), gRPC, OTel Collector; validation des circuits, anti-doublage, géo-routage.
2. Bus d'événements - Kafka/Redpanda (lot par 'user _ id/tenant/market', DLQ, rétention 3-7 jours).
3. Traitement stream - Flink/Spark Structured Streaming/Beam : opérateurs stateful, CEP, watermarks, allowed lateness, dedup.
4. Enrichissement en ligne - Redis/Scylla/ClickHouse lookups (limites RG, KYC, BIN→MCC, IP→Geo/ASN), appels asynchrones avec temporisation et fallback.
5. Serving - ClickHouse/Pinot/Druid (vitrines opérationnelles de 1 à 5 minutes), Feature Store (signes en ligne), webhooks/tiketing/SOAR.
6. Lakehouse - Bronze/Argent/Or pour la consolidation à long terme, le repli et la sverka.
7. L'observation est des métriques de piplines, de tracing (OTel), de logs, de lineage et de cost-dashboards.


3) Signaux et taxonomie

Paiements : 'payment. deposit/withdraw/chargeback`.
Jeux : 'jeu. bet/payout ', sessions.
Authentification et comportement : 'auth. login/failure`, device-switch, velocity.
Opérations : latency, error-rate, redémarrage des pods, saturation.
Conformité : dépistage des sanctions, drapeaux RG, événements DSAR.

Chaque type a un propriétaire (domain owner), un schéma, un SLO de fraîcheur et une politique de données late.


4) Fenêtres, watermarks et données lattes

Fenêtres : tumbling (fix.) , hopping (chevauchement), session (par inactivité).
Watermark : limite de la « connaissance du temps » (généralement 2-5 min).
Événements tardifs : pré-émission des ajustements, drapeau 'late = true', DLQ en cas de retard important.

Exemple de Flink SQL (dépôts velocity 10 min) :
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) PPE et stateful-agrégation

Clé : 'user _ id', 'device _ id', 'payment. account_id`.
État : compteurs glissants/montants, filtres bloom pour le dédupit, TTL.
Modèles PPE : Structuring (<seuil, pour la ≥N fois, par la fenêtre T), device-switch, RG-fatigue.

Pseudo-code 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, ordre et idempotence

Livraison at-least-once dans le bus + dedup par 'event _ id'sur le traitement (TTL 24-72 h).
Ordre : lot par clé (ordre local garanti).
Sink : commits transactionnels (2-phase) ou idempotent upsert/merge.
Outbox/Inbox : publication transactionnelle d'événements de domaine à partir d'OLTP.


7) Online-Enrichissement et Feature Store

Lookup : limites RG, statuts KYC, BIN→MCC, IP→Geo/ASN, marchés/taxes, FX au moment de l'événement.
Appels asynchrones : API de sanction/RER avec temporisation ; en cas d'erreur - 'unknown' + retray/cache.
Feature Store : négociation en ligne/hors ligne ; une base de code pour les transformations.


8) Vitrines en temps réel et serving

ClickHouse/Pinot/Druid : unités de secondes/minutes, vues materialized, SLA pour un retard de 1-5 min.
API/GraphQL : faible latence pour les dashboards/widgets.
Alert : webhooks/Jira/SOAR avec contexte enrichi (trace_id, derniers événements).

Exemple de ClickHouse (GGR par minute) :
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) Métriques, SLI/SLO et dashboards

Recommandations SLI/SLO :
  • p95 ingest→alert ≤ 2 s (règles critiques), ≤ 5 s (autres).
  • Fenêtre complète T ≥ 99. 5%; Schema validity ≥ 99. 9%; Trace coverage ≥ 98%.
  • Disponibilité du service de stream ≥ 99. 9%; late-ratio ≤ 1%.
Dashboards (minimum) :
  • Par lots/points de repère ; busy time opérateurs ; taille de l'état.
  • Entonnoir « sobytiye→pravilo→keys », precision/recall par domaine.
  • Caloricarta late/completeness ; carte des clés « chaudes ».

10) Streaming DQ (qualité)

Validation d'Ingest : schema/enums/size-limits, anti-doublures.
Sur le flux : completeness/dup-rate/late-ratio, correct des fenêtres (sans double comptage).
Politiques de réaction : Critique → DLQ + pager ; major/mineur → tag + rapport.

Exemple de 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) Vie privée, sécurité et résidence

Minimisation PII : pseudonyme ID, masquage des champs sensibles, tokenisation PAN/IBAN.
Résidence de données : convoyeurs régionaux (EEE/UK/BR), clés KMS séparées.
DSAR/RTBF : édition sélective sur les vitrines downstream ; Legal Hold pour les cas/rapports.
Audit : logs d'accès/modifications de règles immuables, journalisation des versions.


12) Économie et productivité

Charding/clés : éviter les clés « chaudes » (salting/composite), équilibre des lots.
État : TTL, compact snapshots, tuning RocksDB/state backend.
Préagrégation : reduce dans les premières étapes pour les sujets bruyants.
Sampling : seulement pour les mesures non critiques (pas de transaction/conformité).
Chargeback : Budgets par thème/jobs, quotas de relais et demandes lourdes.


13) Processus et RACI

R : Streaming Platform (infra/releases), Domain Analytics (règles/fiches), MLOps (scoring/Feature Store).
A : Head of Data/Risk/Compliance par domaine.
C : DPO/Legal (PII/retraite), SRE (SLO/incidents), Architecture.
I : Produit, Support, Marketing, Finance.


14) Feuille de route pour la mise en œuvre

MVP (2-4 semaines) :

1. Kafka/Redpanda + 2 axes critiques (par exemple « payments », « auth »).

2. Flink-joba avec watermark, dedup et 1 CEP (AML ou RG).

3. Vitrine opérationnelle à ClickHouse/Pinot (1-5 min), dashboards lag/completeness.

4. Canal incident (webhooks/Jira), SLO de base et alertes.

Phase 2 (4-8 semaines) :
  • Enrichissement en ligne (Redis/Scylla), Feature Store, lookups asynchrones.
  • Gérer les règles en tant que code, canary/A-B, streaming DQ.
  • Régionalisation des convoyeurs, procédures DSAR/RTBF, Legal Hold pour les cas.
Phase 3 (8-12 semaines) :
  • Multi-région active-active, simulateur « replay & what-if », auto-calibrage des seuils.
  • Vitrines Gold-stream (GGR/RG/AML), rapports en temps quasi réel.
  • Cost-dashboards, chargeback, exercice DR.

15) Exemples (fragments)

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 est un filtre idempotent :
java if (seenStore.putIfAbsent(eventId, now()) == null) {
context.forward(event);
}

16) Chèque-liste avant la vente

  • Régimes/contrats dans Registry, back-compat tests sont verts.
  • Inclus watermark/allowed lateness, dedup et DLQ.
  • Les SLO et les alertes (lag/late/dup/state size) sont configurés.
  • Enrichissement avec les caches et les temporoutes ; fallback «unknown».
  • RBAC/dual-control sur les règles/modèles ; le journal des modifications est inclus.
  • Documentation des règlements/vitrines ; runbook 'et repli/retour.

17) Erreurs fréquentes et comment les éviter

Ignorer l'event-time : sans watermarks, les métriques « flottent ».
Pas de grand-père : faux alertes, double comptage.
Clés chaudes : distorsion des lots → salting/resharding.
API externes synchrones dans le chemin chaud : async + cache uniquement.
Coût non gérable : préagrégations, TTL d'état, quotas, cost-monitoring.
Absence de simulateur : jeté sans « replay » → régression.


18) Résultat

L'analyse en temps réel n'est pas une « BI rapide », mais une boucle gérée avec des contrats, de la logique stateful, des CPE, des watermarks, de l'enrichissement en ligne et des SLO stricts. En suivant ces pratiques, la plate-forme reçoit des signaux et des solutions précis en quelques secondes, en maintenant la conformité, les scénarios de produits et la durabilité opérationnelle à un coût contrôlé.

Contact

Prendre contact

Contactez-nous pour toute question ou demande d’assistance.Nous sommes toujours prêts à vous aider !

Commencer l’intégration

L’Email est obligatoire. Telegram ou WhatsApp — optionnels.

Votre nom optionnel
Email optionnel
Objet optionnel
Message optionnel
Telegram optionnel
@
Si vous indiquez Telegram — nous vous répondrons aussi là-bas.
WhatsApp optionnel
Format : +code pays et numéro (ex. +33XXXXXXXXX).

En cliquant sur ce bouton, vous acceptez le traitement de vos données.