Comment assurer l'évolutivité de la plate-forme de casino
Texte intégral de l'article
1) Exactement ce qui doit être mis à l'échelle
Trafic et sessions : sursaut de SEO/strims/tournois (dizaines de milliers de RPS en lecture, milliers de RPS en écriture).
Circuit d'argent : taux/settlements/dépôts/cache - priorité à l'intégrité et à la latence.
Paiements : routage PSP, cascades, géo et merchants différents.
Contenu : des centaines de fournisseurs, des dizaines de milliers de sessions de jeux en parallèle.
Données : vitrines en temps réel KPI et reporting sans bloquer OLTP.
Conformité : RG/AML/KYC en temps réel.
2) Bases architecturales de l'évolutivité
2. 1 Couches et partage des responsabilités
Edge : API-gateway, WAF/bot defense, rate-limit, geo-filtres.
Services de domaine : Wallet/Ledger, Cashier, Game Gateway, Bonus, RG, Risk/AML, PAM, Affiliés, CRM.
Couche de données : bus d'événements (Kafka/Pulsar), files d'attente (SQS/Rabbit), caches (Redis), OLTP (Postgres/Oracle), OLAP (ClickHouse/BigQuery).
Observability/SecOps : métriques/trajets/logs, SIEM/SOAR, Vault/HSM.
2. 2 Modèle d'événement + CQRS
Commandes (enregistrements) - strictement via les API de domaine ;
Lecture par projection (vues/caches/OLAP indexées).
Outbox/CDC : chaque événement est publié atomiquement avec une transaction ; l'analyste « écoute » le pneu, pas la BD de combat.
2. 3 Sagas et idempotence
Les longs processus (dépôt, cache, bonus, prix de tournoi) sont orchestrés par des sagas.
Toutes les commandes d'argent et de bonus sont idempotentes (Idempotency-Key + déduplication).
3) Mise à l'échelle des flux monétaires (n ° 1 par priorité)
3. 1 Ledger comme service séparé
ACID-OBD double écriture (debit/credit), câblage immuable, audit-log WORM.
p95 porte-monnaie <150 ms, « settlements perdus/dupliqués » = 0.
3. 2 Aides au cache, mais pas la « vérité »
Redis pour les limites, les bilans-projections, les locomotives sur de courtes zones ; le portefeuille reste la source de la vérité.
Protection cache stampede (TTL + jitter, single-flight).
3. 3 Mise à l'échelle horizontale
Chardonnages par player_id/brand_id/region, chardons chauds par nœuds séparés.
Read-replicas pour les projections/back-office ; OLTP ↔ OLAP sont séparés.
4) Paiements et orchestration PSP sur la croissance
Routing : par BIN/géo/scoring/coût ; réévaluation dynamique des canaux.
Cascade : échec PSP1 → PSP2 sans perte de panier (jetons idempotent).
3-DS/AVS/velocity-rules à l'entrée ; antifrod avec liens graphiques cartes/appareils.
Rapprochement : mise en correspondance automatique des registres PSP et ledger au quotidien ; alertes sur les divergences.
5) Game Gateway et « explosions » de charge
Une seule passerelle vers les fournisseurs (token-handshake, chèque santé, dégradation « no new sessions »).
Back-pressure et files d'attente sur le settlment pour empêcher les pics de fournisseur de coller le portefeuille.
Rate-limit au niveau joueur/table/fournisseur ; protection contre les « tricks du jeu ».
6) Données et analyses sans asphyxie de la production
Outbox/CDC → stream en DWH, SLA livraison vitrine ≤ 5 min.
Проекции KPI (FTD, NGR, ARPPU, Retention, LTV, Wager Progress, Risk flags) — в OLAP.
RLS/masquage PII dans le stockage ; Le PII est maintenu au niveau régional (data residency).
7) Multi-region / Multi-brand
7. 1 Résilience géographique
Actif/actif/passif par région, RPO ≤ 5 min, RTO ≤ 30 min.
Géo-chardonnage PII/argent (EU/UK/BR/...) ; l'interdiction des demandes intersectorielles à l'IPI.
7. 2 Multimarques
Intégrations générales (Game Gateway, Bonus, Affiliates) + Ledger/Cashier/PII par licence/région isolée.
Dans le bus d'événements, les clés « tenant _ id/brand _ id/license » sont obligatoires.
8) Observabilité, fiabilité, ingénierie chaos
Métriques : p95/p99 latency per service, error rate, saturation, métriques d'entreprise (bets/min, settle lag, deposit success).
Tracing : un seul 'trace _ id'via edge → domaines → bus → consumers.
Alerting par SLO : SLO budget erreurs et dégradations gérables (gel des bonus, stop-new-sessions).
Pratiques de chaos : fioles régulières PSP/fournisseurs/réseaux, vérification des cascades et des sagas.
9) RG/AML/KYC à l'échelle
Feux d'arrêt synchrones sur le taux (limites de dépôt/perte/temps, auto-exclusion).
Flux de signaux comportementaux (longues sessions, escalade des taux), notations proactives.
AML : sanctions/RER, source de fonds, SAR/STR - piplines automatisées.
10) Sécurité « par défaut »
Zero-trust : mTLS, jetons à courte durée de vie, RBAC/ABAC, le principe des moindres droits.
Secrets - Vault/HSM ; Cryptage KMS at-rest, Tokenization PAN (PCI DSS).
WAF/bot defense, device-fingerprinting, DLP ; audit immuable (WORM).
11) FinOps pour une évolutivité sans ruine
Auto-skate par métriques d'entreprise (bets/min, settle lag) et pas seulement par CPU.
Spot/interruptibles - pour les consumers asynchrones et ETL.
Limites des quotas, alertes budgétaires ; les coûts de service et de marque.
Profilage des demandes/index ; Stratégies TTL sur les logs/métriques.
12) Feuille de route de l'évolution (si vous commencez par un monolithe)
1. Entrez un bus d'événements et un dictionnaire unique ('bet. placed`, `bet. settled`, `wallet. debit/credit`, `deposit. succeeded`).
2. Emmenez Ledger dans un service séparé/OBD avec outbox et idempotence.
3. Séparer Cashier (orchestration PSP, cascades, rapprochements).
4. Mettez Game Gateway et dégradez « no new sessions ».
5. Convertir Bonus/RG en événements d'abonnement ; Interdire les modifications manuelles.
6. Séparez OLTP/OLAP et configurez les flux CDC dans DWH.
7. Inclure l'observabilité (SLO-dashboards, traçage) et les exercices de chaos.
8. Préparer la multi-région (données/clés/merchants/PII) - par priorité géographique.
13) SLO-minimum pour la plate-forme mature
Аптайм les noyaux (Wallet/Cashier/Game Gateway) ≥ 99,95 %.
p95 Ledger <150 ms ; autorisation Cashier <3 s ; succès du dépôt ≥ 85 % dans la géo cible.
« Réseaux perdus/dupliqués » = 0.
Livraison d'événements jusqu'à BI ≤ 5 min.
MTTR Incidents du noyau <30 min
14) Chèque de l'architecte de l'évolutivité
- Les domaines sont séparés ; l'argent est un Ledger séparé avec outbox/CDC.
- Les commandes sont idempotentes ; les clés de déduplication sont partout.
- Game Gateway avec back-pressure et mode de dégradation.
- Cashier : cascades PSP, retraits, rapprochements, télémétrie des pannes.
- CQRS/projections ; OLTP et OLAP sont physiquement séparés.
- Le bus des événements avec Schema Registry ; le versioning des contrats.
- RG/AML - feux stop synchrones ; les logs et les rapports sont automatisés.
- Observability : métriques/trajets/logs avec 'trace _ id'et étiquettes de marque/tenant.
- Plan DR : Actif/passif, RPO ≤ 5 min, RTO ≤ 30 min ; des exercices réguliers.
- Sécurité : mTLS, Vault/HSM, PCI/GDPR, WAF/bot-protection, audit WORM.
- FinOps : Scale automatique sur les métriques d'entreprise, budget-alertes, notes de coûts.
15) Anti-modèles (drapeaux rouges)
Une base de données unique « pour tout », BI frappe les tables de combat.
Édition manuelle des balances/bonus dans la base de données.
Publier les événements « contournant » la transaction (pas de outbox).
Pas de dégradation : « soit tout, soit on tombe ».
Pannes de paiement sans cascades et télémétrie.
Pas d'idempotence ; les retraits créent des prises de settlements.
L'absence de géo-isolation PII et de clés de merchants.
Trace zéro : les enquêtes durent des heures.
L'évolutivité de la plate-forme de casino n'est pas « plus de serveurs », mais les limites et le modèle opérationnel de l'événement sont les suivants : boucle monétaire isolée et rapide, couche de paiement durable, passerelle vers les jeux à dégradation contrôlée, séparation OLTP/OLAP, observation et discipline SRE/FinOps. Sur cette base, la plate-forme vivra tranquillement les sommets des tournois, de nouvelles géos et des dizaines de marques - sans risque pour l'argent des joueurs et la réputation.
