Niyə kazinolar modul arxitekturasına keçir
Niyə Casino Modulity
Tarixi monolit böyüməyə mane olur: hər bir dəyişiklik bütün sistemin buraxılışını çəkir, provayderlərin inteqrasiyası və PSP SLO-nu vurur, uyğunluq yenilənməsi - bütün kodu əhatə edir. Modul memarlıq (domain-driven + müqavilə API + hadisələr) imkan verir:- «Hamı ilə» koordinasiyası olmadan fiş və provayderləri bağlamaq;
- Seçici şəkildə ölçmək (canlı video kassadan ayrı, cüzdan oyun kataloqundan ayrı);
- Riskləri təcrid edin (promosyonda səhv pul kisəsini yıxmır);
- Lisenziyalara riayət etmək (domen sərhədlərində loging/versiyalar/siyasət);
- Dəqiq müqavilələr, təkrar istifadə və avtomatlaşdırma ilə TCO-nun azaldılması.
Domen xəritəsi (bölünmə nümunəsi)
Wallet/Ledger - pul, valyuta hedciyi, bonus balansları, PITR, audit.
Cashier/Payments - PSP, on-rampa/off-rampa, KYT, idempotent webhucks.
Gaming Bridge - provayder adapterləri, round/bet normallaşması.
Catalog/Lobby - oyunlar, provayderlər, fiçerinq və nümayiş qaydaları.
Promo/Bonus - aksiyalar qaydaları, vauçerlər, wager.
KYC/AML/RG - şəxsiyyətin yoxlanılması, sanksiyalar/RER, limitlər və özünü istisna.
Experience - frontend, CDN, i18n, A/B, Telegram WebApp.
Telemetry/Analytics - hadisələr, vitrinlər, ML/AI.
Compliance & Audit - MGA/UKGC hesabatları, WORM arxivi.
Modul arxitekturasının prinsipləri
1. DDD sərhədləri (bounded context). Məlumatlara və məntiqə dəqiq sahib olmaq.
2. API-birinci + hadisələr. OpenAPI/AsyncAPI, JSON-Schema, müqavilə testləri.
3. Version və uyğunluq. 'v1 → v1. 1 → v2` (expand→migrate→contract).
4. Idempotency & Exactly-once-intent. Sorğu açarları, hadisələrin təkrarlanması.
5. Təhlükəsizlik default. mTLS, HMAC imzaları, qısa JWT, RBAC/ABAC.
6. Müstəqil buraxılışlar. Kanarya/mavi-yaşıl deploy, «iki abunəçi» miqrasiyası qadağandır.
7. Müşahidə. Keçid 'traceId', modul SLO metrika.
8. Fiç bayraqları. Trafik/geo/istifadəçi seqmentləri, təhlükəsiz geri dönüş.
İnteqrasiya təbəqəsi: provayderləri və PSP-ləri necə birləşdirmək olar
Adapter/Bridge-pattern: Hər oyun/ödəniş provayderi vahid platforma müqaviləsi ilə plugindir.
Oyunlar: normallaşma 'roundId/betId/status', mapping səhvlər, cache limitləri.
Ödənişlər: vahid interfeys 'authorize/capture/refund/payout', idempotentlik ilə webhucks.
Off: səhv adapter başqalarına təsir etmədən maintenance tərcümə olunur.
Müqavilə nümunəsi (OpenAPI fraqmenti):yaml post /wallet/debit:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DebitRequest@v1'
responses:
'200': { $ref: '#/components/schemas/DebitResult@v1' }
'409': { description: IDEMPOTENT_REPLAY }
«Qan dövranı sistemi» kimi hadisələr
Şina (Kafka/NATS) → hadisələr:- `bet. placed`, `round. settled`, `payout. requested/approved`, `kyc. verified/failed`, `rg. limit_set`, `bonus. issued/consumed`, `cashier. webhook. received`, `wallet. hold/release`, `alert. slo_breach`.
- Hadisələr keçmişi ləğv etmir; düzəlişlər - ayrı-ayrı kompensasiya tədbirləri.
- Hər bir modul yalnız öz başlanğıc hadisələrini yazır, törəmələri yeni mövzular kimi.
Məlumatlar: qatlar və uyğunluq
ALTP modul başına: Postgres/MySQL/KeyDB - təcrid olunmuş əməliyyatlar.
OLAP/vitrinlər: ClickHouse/BigQuery hadisələrdən qurulur; OLTP və analitika qarışıq deyil.
Feature Store/ML: fich və TTL versiyaları ilə ALTP müstəqil qat.
Uyğunluq: modullar arasında strateji eventual və pul üçün - yerli ACID + sərhədlərdə idempotent hərəkətlər.
Deploy və miqyas
Konteynerlər (Docker/K8s): modul üzrə avtoskeyl (wallet - CPU/IO; canlı video - şəbəkə; bridge — RPS).
Perimetr izolyasiyası: şəbəkə siyasətləri, modul üçün fərdi sirlər/açarlar, müxtəlif PII/pul/telemetriya anbarları.
Trafik-şeypinq: fiça bayraqları, kanareya payı, regional marşrutlar.
DR/HA: Multi-AZ; pul üçün aktiv-passiv, oxu/media üçün aktiv-aktiv.
Komplayens modullara «tikilir»
KYC/AML/RG siyasətçilər və həllər jurnalı ('policyVer') ilə öz moduludur.
Audit/WORM - pul/tur/ödəniş hadisələrinin dəyişməz anbarıdır.
Hesabat - yurisdiksiyalar üzrə ixrac (MGA/UKGC), tam/vaxtında SLA.
Nümunə axını
Mərc → Hesablaşma → Ödəniş
1. 'gaming-bridge' göndərir 'bet. placed` (idempotent).
2. 'wallet' hold 'edir və' wallet 'dərc edir. hold`.
3. 'gaming-bridge' → 'round provayderinin nəticəsini alır. settled`.
4. 'wallet' sayır 'settle' (release/payout) → 'wallet. settled`.
5. 'promo' hadisələri istehlak edir və bonus hesablayır → 'bonus. issued`.
Kassa (depozit)
1. 'cashier' payment yaradır. intent` с `Idempotency-Key`.
2. PSP vebhuk çağırır → 'cashier. webhook. received`.
3. `wallet. credit 'faktiki → analitika və RG üçün hadisə.
Fasiləsiz dəyişikliklər (expand → migrate → contract)
1. Expand: 'v1-də sahələr/end nöqtəsi əlavə edildi. 1 ', köhnə müştərilər qırılmaz.
2. Migrate: istehlakçılar yeni oxuyur, hər iki versiyada yazın (yalnız pul olmayan üçün dual-write).
3. Contract: EOL 'v1 elan etdi. 0 ', plan üzrə N həftə sonra silindi.
Platforma mühəndisliyi
Golden Paths: modul şablonları (repo-askeleon, CI/CD, alertlər, SLO, sirlər).
Müqavilə testləri: CI-də Pact/AsyncAPI testləri; saxta provayderlərlə inteqrasiya mühiti.
Xidmətlər kataloqu (Backstage): kimin sahibi, SLA, API versiyaları, rukbuk hadisəsi.
Modulluğun uğur metrikası
X dəfə Prod-Release ↓ ideyasından Lead time.
Modul üzrə buraxılış tezliyi ↑ (gün/həftə), change-fail rate ↓.
MTTR insidentləri ↓ (izolyasiyaya görə).
Infra cost/GGR sabit və ya ↓ artan trafik (seçici skeyl).
Provayder/PSP inteqrasiya vaxtı (brifinqdən prodə qədər) ↓.
Anti-nümunələr
«Mikroservislər üçün mikroservislər». Məlumatların dəqiq sərhədləri olmadan əlaqə və mürəkkəblik artır.
Modullar arasında ümumi DB/sxemlər. İzolyasiya və müstəqil buraxılışları öldürür.
Versiyası/müqaviləsi olmayan hadisələr. İstehlakçıları «sakitcə» sındırırlar.
Pul üçün Dual-write. Uyğunsuzluq riski yalnız bir yazıçı vasitəsilə idempotent addımlardır.
Qlobal «utility qat» ardıcıl hər şey ilə. Gizli monolitə çevrilir.
Heç bir fich bayraqları və kill-switch. Hər hansı bir səhv dərhal hər şeyi vurur.
OLTP/OLAP qarışdırılması. Hesabatlar bahisləri/cüzdanı yavaşlatır.
Müşahidə edilmir. SLO ölçmək və hadisələri əlaqələndirmək üçün heç bir şey yoxdur.
Modul arxitekturasına keçid yoxlama siyahısı
Strategiya və domenlər
- Modul tərəfindən bounded contexts, sahibləri və KPI müəyyən.
- Qarşılıqlı əlaqə xəritəsi: API/hadisələr, kritik və SLO.
Müqavilələr və təhlükəsizlik
- OpenAPI/AsyncAPI + JSON-Schema; versiyası və həyat dövrü.
- mTLS/HMAC, qısa JWT, RBAC/ABAC sərhədləri.
Məlumatlar
- Bölünmüş ALTP; hadisələr OLAP üçün mənbədir.
- API/vebhuklarda Idempotency, mesajların təkrarlanması.
CI/CD və buraxılışlar
- Kanarya/mavi-yaşıl, fiça bayraqları, modul üzrə avtoskeyl.
- CI-də müqavilə testləri; saxta provayderlərlə mühit.
Müşahidə
- 'traceId' ilə log/metrik/treys; SLO-daşbordları.
- Biznes metrik alertlər (VOID, reject, payout lag).
Komplayens
- WORM-pul arxivi/tur, tənzimləyici hesabat ixracı.
- KYC/AML/RG həll jurnalı ilə ayrı bir modul kimi.
Mini nümunələr
Hadisə 'round. settled@v1`:json
{
"event":"round. settled", "v":"1", "roundId":"R-2025-10-17-evo-23", "gameId":"evo_blackjack_23", "bets":[{"betId":"b_92f","playerId":"p_1","stake":"10. 00","payout":"15. 00","outcome":"WIN"}], "ts":"2025-10-17T14:23:13. 120Z", "traceId":"tr_5f1"
}
İdempotent pul kisəsi:
http
POST /wallet/settle
X-Idempotency-Key: 9a7f-2b1c
{
"roundId":"R-2025-10-17-evo-23", "operations":[{"playerId":"p_1","delta":"5. 00","currency":"EUR"}]
}
Modul arxitekturası kazino platformasını «kövrək kombayndan» etibarlı domenlərin kompozisiyasına çevirir: hər biri öz müqavilələri, məlumatları və SLO ilə. Bu, inteqrasiya və buraxılışları sürətləndirir, seçici miqyas verir, uyğunluğu sadələşdirir və insident riskini azaldır. Domen sərhədlərini, müqavilələri və hadisələri ayırmaqla başlayın, təhlükəsizlik və müşahidə qabiliyyətini «toxuyun» və məhsulu yavaşlatmaq əvəzinə böyüyən bir platforma əldə edəcəksiniz.