iGaming-платформа — не «сайт с играми», а финансовая система с регуляторикой. Ядро: wallet/ledger, game integration layer, risk, compliance.

Core domains
- Player account & KYC
- Wallet / ledger (double-entry)
- Casino aggregator + sportsbook feed
- Bonus & CRM
- Affiliate & reporting
Integration layer
Adapter per provider (SoftSwiss, EveryMatrix, etc.). Unified bet/settle API inward.
Non-functional
- Latency для live betting
- Audit trail immutable
- Geo / license restrictions

Чеклист
- Bounded contexts documented
- Event bus for bet lifecycle
- Separate PCI-ish payment scope
Слои платформы
Presentation (web/mobile) → BFF/API → domain services (wallet, bonus, KYC) → integration adapters (games, PSP) → data (Postgres, Redis, event store).
Критично не смешивать ledger logic с UI и не хранить баланс одним float-полем.
Event-driven границы
Bet placed / settled / voided — доменные события в bus. Reporting и CRM подписываются асинхронно; wallet остаётся source of truth синхронно в транзакции accept bet.
Модули и команды
Команда wallet/payments не правит bonus rules напрямую — только через published API или events. Game integration — отдельный adapter layer с sandbox per provider.
Reporting читает replica или CDC, не нагружает OLTP wallet. Affiliate и CRM — eventual consistency допустима; bet accept — только strong consistency в транзакции.
License geo: enforcement на edge (CDN/WAF) и в API — двойная проверка, иначе VPN обходит только UI block.
С чего начать декомposition
- Нарисуйте bounded contexts: wallet, games, KYC, bonus
- Выделите adapter layer на одного провайдера как образец
- Event bus для bet lifecycle — один flow end-to-end
- Reporting на replica, не на OLTP wallet