De ce cazinourile trec la arhitectura modulară
De ce modularitate cazinou
Monolitul istoric încetinește creșterea: fiecare schimbare trage eliberarea întregului sistem, integrarea furnizorilor și SLO-urile lovite de PSP, actualizările de conformitate - pe tot parcursul codului. Arhitectura modulară (domain-driven + contract API + evenimente) permite:- Afișați rapid funcțiile și conectați furnizorii fără a coordona „toată lumea cu toată lumea”;
- Scalați selectiv (video live separat de casa de marcat, portofel separat de catalogul de joc);
- Izolați riscurile (o eroare în promo nu aduce în jos portofelul);
- Respectați licențele (logare/versiuni/politici în limitele domeniului);
- Reduceți TCO prin contracte clare, reutilizare și automatizare.
Harta domeniului (exemplu de defalcare)
Portofel/Ledger - bani, gard viu valutar, solduri bonus, PITR, audit.
Casier/Plăți - PSP, on-rampă/off-rampă, KYT, cârlige web idempotente.
Gaming Bridge - adaptoare furnizor, normalizare rundă/pariu.
Catalog/Lobby - jocuri, furnizori, caracteristici și reguli de afișare.
Promo/Bonus - reguli de stoc, vouchere, pariuri.
KYC/AML/RG - verificarea identității, sancțiuni/PEP, limite și autoexcludere.
Experiență - frontend, CDN, i18n, A/B, Telegram WebApp.
Telemetrie/Analytics - evenimente, vitrine, ML/AI.
Conformitate și audit - rapoarte MGA/UKGC, arhivă WORM.
Principii de arhitectură modulară
1. Limitele DDD (context delimitat). Cunoașterea clară a datelor și a logicii.
2. API-first + evenimente. OpenAPI/AsyncAPI, JSON-Schema, teste de contract.
3. Versioning și compatibilitate. "v1 → v1. 1 → v2 '(expand→migrate→contract).
4. Idempotență și intenție exactă. Chei de cerere, deduplicare eveniment.
5. Securitate implicită. mTLS, semnături HMAC, JWT scurt, RBAC/ABAC.
6. Lansări independente. Canare/albastru-verde desfășura, „doi scriitori” migrații sunt interzise.
7. Observabilitate. End-to-end "traceId', măsurători SLO pe modul.
8. Steaguri Ficha. Segmente de trafic/geo/utilizator, rollback-uri sigure.
Strat de integrare: cum să conectați furnizorii și PSP
Adaptor/Bridge model: fiecare joc/furnizor de plată este un plugin cu un singur contract de platformă.
Jocuri: normalization 'roundId/betId/status', error mapping, limit cache.
Plăți: o singură interfață „autorizare/captură/rambursare/plată”, cărți web cu idempotență.
Deconectabilitate - Adaptorul defect este mutat la întreținere fără a afecta pe alții.
Contract de probă (fragment OpenAPI):yaml post/portofel/debit:
requestBody:
conținut:
cerere/json:
schema:
$ ref: '#/components/schemas/DebitRequest @ v1'
răspunsuri:
'200': {$ ref: '#/components/schemas/DebitResult @ v1'}
'409': {descriere: IDEMPOTENT_REPLAY}
Evenimente ca „sistem circulator”
Bus (Kafka/NATS) → evenimentului:- "bet. plasat „,” rotund. decontate „,” plata. solicitat/aprobat „,” kyc. verificat/eșuat „,” rg. limit_set', bonusul. emis/consumat ", casier. webhook. a primit „,” portofel. țineți/eliberați „,” alertă. slo_breach'.
- Evenimentele nu anulează trecutul; ajustări - prin evenimente compensatorii separate.
- Fiecare modul scrie doar evenimentele sale originale, derivate - ca subiecte noi.
date: straturi și consistență
OLTP per modul: Postgres/MySQL/KeyDB - tranzacții izolate.
OLAP/storefronts: ClickHouse/BigQuery sunt construite din evenimente; OLTP și analytics nu se amestecă.
Feature Store/ML: strat independent OLTP cu caracteristică și versiuni TTL.
Coerența: strategic eventual între module, iar pentru bani - acțiuni locale ACID + idempotente la frontiere.
Implementare şi scalare
Containere (Docker/K8s): modul autoscale (portofel - CPU/IO; video live - rețea; pod - SPR).
Izolarea perimetrului: politici de rețea, secrete/chei individuale per modul, diferite magazine PII/money/telemetry.
Modelarea traficului: caracteristici steaguri, cota de canar, rute regionale.
DR/HA: Multi-AZ; activ-pasiv pentru bani, activ-activ pentru lecturi/mass-media.
Conformitatea este „cusută” în module
KYC/AML/RG este un modul de proprietate cu politici și un jurnal de soluții („policyVer”).
Audit/WORM - magazin imuabil de evenimente de bani/runde/plăți.
Raportare - export pe jurisdicții (MGA/UKGC), SLA pentru exhaustivitate/promptitudine.
Fluxuri de probă
Rata → calcul → plată
1. 'gaming-bridge' trimite 'bet. plasat' (idempotent).
2. „wallet” face „hold' și publică” portofel. hold'.
3. „gaming-bridge” primește rezultatul furnizorului rotund al →. stabilit ".
4. "wallet" consideră "soluționare" (eliberare/plată) → "portofel. stabilit ".
5. "promo" consumă evenimente și acumulează un bonus → ". eliberat ".
Casierie (depozit)
1. "casier" creează o "plată. intenție "с" Idempotency-Key ".
2. PSP apelează casieria → webhook. webhook. primit ".
3. portofel. credit "→ de fapt un eveniment pentru analiză și RG.
Modificări fără întreruperi (expand→migrate→contract)
1. Extindeți: Câmpuri/puncte finale adăugate la 'v1. 1 ', clienții vechi nu se rupe.
2. Migrați: consumatorii citesc lucruri noi, scriu în ambele versiuni (scriu dual numai pentru non-monetare).
3. Contract: anunțat EOL 'v1. 0 ', eliminat după N săptămâni conform planului.
Inginerie platformă
Trasee de aur: șabloane de modul (repo askeleon, CI/CD, alerte, SLO, secrete).
Teste de contract: Testele Pact/AsyncAPI în CI; mediu de integrare cu furnizori falși.
Catalog de servicii (Backstage): cine este proprietarul, SLA, versiuni API, cărți incidente.
Măsurători de succes ale modularității
Timp de plumb de la idee la eliberarea de producție ↓ X ori.
Frecvența de eliberare prin modul ↑ (pe zi/săptămână), ↓ ratei de schimbare-eșec.
MTTR privind incidentele ↓ (din cauza izolării).
Infra cost/GGR este stabil sau ↓ cu creșterea traficului (scară selectivă).
Timp de integrare furnizor/PSP (de la briefing la prod) ↓.
Anti-modele
Microservicii pentru microservicii. Fără limite clare de date, conectivitatea și complexitatea sunt în creștere.
DBs comune/diagrame între module. Omoară izolarea şi eliberările independente.
Evenimente fără versiune/contract. Rupe consumatorii „în liniște”.
Dual-scrie pentru bani. Riscul de inconsecvență este doar pași idempotenți printr-un singur scriitor.
Global „strat de utilitate” cu totul. Se transformă într-un monolit ascuns.
Nu există steaguri și kill-switch. Orice greşeală loveşte imediat pe toată lumea.
Amestec OLTP/OLAP. Rapoartele încetinesc tarifele/portofelul.
Fără observabilitate. Nu există nimic de măsurat SLO și de corelat incidente.
Lista de verificare tranziţie arhitectură modulară
Strategie și domenii
- Contexte mărginite, proprietarii și KPI-urile modulului sunt definite.
- Harta interacțiunii: API/evenimente, critică și SLO.
Contracte și securitate
- OpenAPI/AsyncAPI + JSON-Schema; versiune și ciclu de viață.
- mTLS/HMAC, JWT scurt, RBAC/ABAC la frontiere.
Date
- Split OLTP; evenimentele sunt sursa pentru OLAP.
- Idempotența pe API/webhooks, deduplicarea mesajelor.
CI/CD & Versiuni
- Canare/albastru-verde, caracteristică steaguri, autoscale modulo.
- Testele contractuale în CI; mediu cu furnizori falși.
Observabilitate
- Jurnale/metrici/trasee cu 'traceId'; Tablouri de bord SLO.
- Alerte de metrici de afaceri (VOID, respinge, payout lag).
Conformitate
- Arhiva WORM de bani/runde, exportul de raportare de reglementare.
- KYC/AML/RG ca un modul separat cu un jurnal de soluție.
Mini-exemple
Event 'round. settled @ v1 ':json
{
"eveniment ":" rundă. settled „,” v „:” 1 „,” roundId': „R-2025-10-17-evo-23”, „gameId':” evo _ blackjack _ 23 „,” pariuri „: [{” betId': „b _ 92f”, „playerId':” p _ 1 „,” stake „:” 10. 00 „, „plată”:” 15. 00 "," rezultat ":" WIN "}]," ts': "2025-10-17T14: 23:13. 120Z, „” traceId': „tr _ 5f1”
}
Portofel Idempotent:
http
POST/portofel/decontare
X-Idempotency-cheie: 9a7f-2b1c
{
"roundId':" R-2025-10-17-evo-23 "," operations ": [{" playerId': "p _ 1", "delta": "5. 00 ", "monedă":" EUR"}]
}
Arhitectura modulară transformă platforma cazinoului dintr-o „combinație fragilă” într-o compoziție de domenii de încredere: fiecare cu propriile sale contracte, date și SLO. Acest lucru accelerează integrările și eliberează, oferă scalare selectivă, simplifică conformitatea și reduce riscurile de incidente. Începeți prin a evidenția limitele domeniului, contractele și evenimentele, țeseți în securitate și observabilitate - și obțineți o platformă care crește odată cu produsul, nu îl încetinește.