Эмне үчүн казинолор модулдук архитектурага өтүүдө
Эмне үчүн казино модулдук
Тарыхый монолит өсүштү жайлатат: ар бир өзгөртүү бүт системанын бошотулушун тартат, провайдерлердин интеграциясы жана PSP SLO, комплаенс-апдейттер - бүт код боюнча. Модулдук архитектура (домен-айдоо + келишимдик API + окуялар) мүмкүндүк берет:- Fich тез жана "баары менен" макулдашуу жок провайдерлерди туташтыруу;
- Масштабдоо тандап (Live-Video кассадан өзүнчө, капчык оюн каталогу өзүнчө);
- Тобокелдиктерди обочолонтуу (промо ката капчыкты түшүрбөйт);
- Лицензияларды сактоо (домендик чектерде логика/версиялар/саясат);
- Так келишимдер, кайра пайдалануу жана автоматташтыруу аркылуу TCO азайтуу.
Домен картасы
Wallet/Ledger - акча, акча хедж, бонустук баланстар, PITR, аудит.
Cashier/Payments - PSP, On-Rampa/Off-Rampa, KYT, Idempotent Webhucks.
Gaming Bridge - провайдерлердин адаптерлери, round/bet нормалдаштыруу.
Catalog/Лобби - оюндар, провайдерлер, фичеринг жана көрсөтүү эрежелери.
Promo/Bonus - акциялардын эрежелери, ваучерлер, wager.
KYC/AML/RG - инсандыгын текшерүү, санкциялар/РР, лимиттер жана өзүн-өзү жоюу.
Experience - frontend, CDN, i18n, A/B, Telegram WebApp.
Telemetry/Analytics - окуялар, дүкөндөр, ML/AI.
Compliance & Audit - MGA/UKGC отчеттору, WORM архиви.
Модулдук архитектура принциптери
1. DDD чек (bounded context). Маалыматтарды жана логиканы так билүү.
2. API-биринчи + окуялар. OpenAPI/AsyncAPI, JSON-схемасы, келишимдик тесттер.
3. Версиялоо жана шайкештик. 'v1 → v1. 1 → v2` (expand→migrate→contract).
4. Idempotency & Exactly-once-intent. Суроо-талаптын ачкычтары, окуялардын дедупликациясы.
5. демейки коопсуздук. mTLS, HMAC кол, кыска JWT, RBAC/ABAC.
6. Көз карандысыз релиздер. Канар/көк-жашыл деплой, "эки жазгыч" көчүүгө тыюу салынат.
7. Байкоо. аркылуу 'traceId', модулу боюнча SLO метрика.
8. Фича желектери. Traffic/гео/колдонуучу-сегменттер, коопсуз кайра.
Интеграция катмары: провайдерлерди жана PSPди кантип туташтыруу керек
Adapter/Bridge-үлгү: ар бир оюн/төлөм провайдери - бирдиктүү платформа келишими менен плагин.
Оюндар: нормалдаштыруу 'roundId/betId/status', mapping каталар, кэш лимиттери.
Төлөмдөр: бирдиктүү интерфейс 'authorize/capture/refund/payout', демпотенттик менен Webhuke.
Өчүрүү: туура эмес адаптер башкаларга таасир этпестен maintenance которулат.
Келишимдин мисалы (OpenAPI үзүндүсү):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 }
"Кан айлануу системасы" сыяктуу окуялар
Шина (Kafka/NATS) → окуялар:- `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`.
- Окуялар өткөн жокко чыгарбайт; түзөтүүлөр - айрым компенсациялык окуялар менен.
- Ар бир модуль өзүнүн баштапкы окуяларын гана жазат, туундулары - жаңы темалар сыяктуу.
Маалыматтар: катмарлар жана шайкештик
ALTP модулуна: Postgres/MySQL/KeyDB - обочолонгон транзакциялар.
OLAP/Showrooms: ClickHouse/BigQuery окуялар курулган; OLTP жана аналитика аралашпайт.
Feature Store/ML: fich жана TTL версиялары менен OLTP көз карандысыз катмар.
Ырааттуулук: модулдардын ортосундагы стратегиялык eventual, ал эми акча үчүн - жергиликтүү ACID + чек арадагы демпотенттик аракеттер.
Деплой жана масштабдоо
Контейнерлер (Docker/K8s): Autoscale модулу (wallet - CPU/IO; Live-Video - тармак; bridge — RPS).
Изоляция периметри: тармактык саясат, жеке сырлар/модулдун ачкычтары, ар кандай PII/акча/телеметрия сактагычтары.
Трафик-шейпинг: фича-желектер, канарейка үлүшү, аймактык маршруттар.
DR/HA: Multi-AZ; акча үчүн актив-пассив, окуу/медиа үчүн актив-актив.
Комплаенс модулдарга "тигилет"
KYC/AML/RG - саясатчылар жана чечимдер журналы менен өз модулу ('policyVer').
Audit/WORM - акча/раунд/төлөмдөрдүн өзгөрүлбөс сактагычы.
Отчеттуулук - юрисдикциялар боюнча экспорт (MGA/UKGC), толук/өз убагында SLA.
Агымдардын үлгүсү
Коюм → эсептөө → төлөм
1. 'gaming-bridge' жөнөтөт 'bet. placed` (idempotent).
2. 'wallet' кылат 'hold' жана жарыялайт 'wallet. hold`.
3. 'gaming-bridge' → 'round. settled`.
4. 'wallet' settle '(release/payout) →' wallet деп эсептейт. settled`.
5. 'promo' иш-чараларды керектейт жана бонус → 'bonus чегерет. issued`.
Касса (депозит)
1. 'cashier' 'payment' түзөт. intent` с `Idempotency-Key`.
2. PSP вебхук чакырат → 'cashier. webhook. received`.
3. `wallet. credit 'факт → аналитика жана RG үчүн окуя.
токтоосуз өзгөртүү (expand → migrate → contract)
1. Expand: 'v1 үчүн талаалар/пункту кошулду. 1 ', эски кардарлар сынган жок.
2. Migrate: керектөөчүлөр жаңы окуп, эки нускада жазуу (акча эмес үчүн гана dual-write).
3. Contract: EOL 'v1 жарыялады. 0 ', план боюнча N жумадан кийин алынып салынды.
Платформа инженериясы
Golden Paths: модулдардын үлгүлөрү (repo-аскелеон, CI/CD, Алерт, SLO, сырлар).
Контракттык тесттер: CI боюнча Pact/AsyncAPI тесттер; фейк-провайдерлер менен интеграция чөйрөсү.
Кызматтардын каталогу (Backstage): ким ээси, SLA, API версиялары, окуя-кол китепчелер.
Модулдук ийгиликтин метриктери
прод-релизине идеядан Lead time ↓ X жолу.
модулу боюнча релиздер жыштыгы ↑ (күн/жума), change-fail rate ↓.
MTTR окуялар ↓ (байланыштуу обочолонуу).
Infra cost/GGR туруктуу же ↓ трафиктин өсүшү менен (шайлоо скейли).
Провайдердин/PSP интеграциясынын убактысы (брифингден прод.) ↓.
Анти-үлгүлөрү
"Микросервис үчүн микросервис". Маалыматтардын так чектери жок байланыш жана татаалдык өсөт.
Модулдардын ортосундагы жалпы БД/схемалар. Изоляцияны жана көз карандысыз релиздерди өлтүрөт.
Версиясы/келишими жок окуялар. Керектөөчүлөрдү "тынч" сындырышат.
акча үчүн Dual-write. Макулдашылбаган тобокелдик - бир жазуучу аркылуу гана демпотенттик кадамдар.
Глобалдык "утилит катмары" катары менен бардык. Жашыруун монолитке айланат.
Эч кандай фич-желектер жана kill-switch жок. Ар бир ката дароо баарына тийет.
OLTP/OLAP аралаштыруу. Отчеттор коюмдарды/капчыкты жайлатат.
байкоо жок. SLO өлчөө жана окуяларды байланыштыруу үчүн эч нерсе жок.
Модулдук архитектурага өтүү чек тизмеси
Стратегия жана домендер
- bounded contexts аныкталган, ээлери жана KPI модулу боюнча.
- өз ара карта: API/окуялар, сын жана SLO.
Келишимдер жана коопсуздук
- OpenAPI/AsyncAPI + JSON-Schema; версия жана жашоо цикли.
- mTLS/HMAC, кыска JWT, чек RBAC/ABAC.
Маалыматтар
- Бөлүнгөн OLTP; окуялар - OLAP үчүн булак.
- API/вебхуктарда Idempotency, билдирүүлөрдү дедупликациялоо.
CI/CD жана релиздер
- Канарейка/көк-жашыл, Ficha желектери, модулу боюнча autoscale.
- Контракттык тесттер CI; фейк-провайдерлер менен чөйрө.
Байкоо
- 'traceId' менен Логи/метрика/соода; SLO-дашборд.
- Бизнес-метрика боюнча алерталар (VOID, reject, payout lag).
Комплаенс
- WORM-акча/раунд архиви, жөнгө салуучу отчеттуулукту экспорттоо.
- KYC/AML/RG чечим журналы менен өзүнчө модулу болуп саналат.
Мини-мисалдар
Иш-чара '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"
}
Идемпотенттик капчык:
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"}]
}
Модулдук архитектура казино платформасын "назик комбайндан" ишенимдүү домендердин композициясына айландырат: ар бири өзүнүн келишимдери, маалыматтары жана SLO менен. Бул интеграцияны жана релиздерди тездетет, тандалма масштабды берет, комплаенсти жөнөкөйлөтөт жана инциденттердин коркунучун азайтат. Домендик чектерди, контракттарды жана окуяларды белгилөөдөн баштаңыз, коопсуздукту жана байкоону "токуңуз" - ошондо сиз аны жайлатпай, продукт менен бирге өскөн платформаны аласыз.