Как устроен backend у игровых платформ
Игровая платформа — это «оркестр» десятков сервисов: от авторизации и кошелька до интеграций с игровыми серверами (RGS), антифрода, маркетинга и отчётности. Задача бэкенда — обеспечить честность, скорость, масштабирование и соответствие регуляторике при удобном опыте для игрока и оператора. Ниже — практическая карта компонентов, потоков и решений.
1) Референс-архитектура
Канальный слой
API Gateway/Edge: TLS/MTLS, WAF, rate limits, идемпотентность, версия API, канареечные маршруты.
BFF (Backend for Frontend): REST/GraphQL для веб/мобайла/партнёров, агрегация данных, кэш ответов.
Доменные сервисы
Identity & Access: регистрация, SSO/OAuth, MFA, сессии/токены, управление устройствами.
Profile & KYC/AML: анкеты, документы, санкционные списки/PEP, адреса, возраст/гео-гейты.
Wallet & Payments: мультивалюта/деноминации, lock→settle, PSP/банки, возвраты/чарджбеки.
Catalog & Entitlements: список игр, фич-флаги по юрисдикциям, лицензии/доступы.
Game Session Broker: запуск/завершение сессий, прокси к RGS/провайдерам, подписи запросов.
Promo/CRM: бонусы, фрибеты/фриспины, миссии, сегментация, лимиты промо-бюджета.
Tournaments/Leaderboards: рейтинги, анти-статпаддинг, призовые фонды.
RG (Responsible Gaming): лимиты времени/депозитов/потерь, реалити-чеки, паузы/самоисключение.
Risk & Fraud: поведенческий скоринг, граф мультиаккаунтов, устройства/платежи/арбитраж, кейс-менеджмент.
Content & CMS: баннеры, страницы, локализация, A/B-опции.
Notifications: e-mail/SMS/push/WebSocket, частотные капы, «тихие часы».
Reporting & Compliance: выгрузки в регуляторы, игровые/финансовые отчеты, аудиторские журналы.
Платформа
Event Bus (Kafka/Pulsar): события ставок/платежей/фич, CDC, аудит-трейлы.
Data Platform: DWH/Lakehouse, стриминговая ETL, фичестор для ML (риск/рекомендации).
Observability: логи/метрики/трейсы (ELK/OTel/Prometheus), алёрты, SLO.
Secrets & Config: KMS/Vault, конфиги по средам, фичефлаги.
CI/CD: build/test/scan, blue-green/canary, миграции схем, «4-глазый» релиз рисковых модулей.
2) Ключевые потоки данных
2.1 Логин → сессия
1. BFF → Identity: аутентификация, устройство/гео.
2. KYC/AML: проверка возраста/документов, санкции.
3. RG: применение лимитов и статуса самоисключения.
4. Выдача токена, открытие игрового лобби (каталог по юрисдикции).
2.2 Ставка/игровой раунд (слоты/ставки)
1. Клиент → API Gateway → Game Session Broker.
2. Broker подписывает запрос, вызывает RGS: `bet → outcome`.
3. Wallet: `lock(bet)` → после outcome `settle(net)` идемпотентно.
4. Audit: неизменяемая запись `(req, outcome, walletTxId, mathVersion, hash)`.
5. Telemetry: события в Kafka, обновления миссий/турниров.
2.3 Платежи и выводы
PSP-адаптеры (карты, open banking, локальные методы), SCA/3DS.
Антифрод/AML: скоринг транзакций, источники средств, холды/ручная проверка.
Идемпотентность на уровне ордеров и коллбеков PSP.
3) Аккаунты, KYC/AML и доступ
Модель профиля: основные данные, документы, адреса, предпочтения, согласия (GDPR).
Версионирование и «следы» изменений (кто/когда/какое поле).
KYC-процессы: ассинхронные Webhook-и от провайдеров, ретраи/эскалации.
Geo/age-gates: стоп-правила на уровне gateway и BFF (не показывать запрещённые продукты).
4) Кошелёк и денежные потоки
Схема баланса: cash / бонусный / заблокированный / в пути.
Контракт ставки: `lock → outcome → settle` с TTL и повторяемостью до успеха.
Валюты/деноминации: точность, округления, курс/фиксация на время транзакции.
Антикоррупция/журналы: неизменяемые движения, сверки, двойная запись (двухсторонний учёт).
5) Каталог игр и интеграции с RGS
Слой адаптеров к провайдерам, маппинг методов/сигнатур/ошибок.
Юрисдикционные флаги: авто-спины, buy-feature, min RTP/скорость, возрастные ограничения.
Health-check игр, автоматическое выключение при SLA < порога.
Реплеи раундов по `(seed, step, mathVersion)` — через RGS.
6) Промо, миссии, турниры
Промо-кошелёк: списание бонусных средств с приоритетом, wagering-правила, капы.
Миссионный движок: декларативные условия (события → правила → награды), антиабьюз (дубликаты/бот-паттерны).
Турниры: real-time лидерборды, анти-статпаддинг, прозрачные критерии, призовые выплаты идемпотентны.
7) Responsible Gaming (RG)
Лимиты (депозиты/ставки/время), реалити-чеки с интервалами, тайм-аут/самоисключение.
Принцип «RG-сигнал старше промо»: любые маркетинговые события игнорируются для игроков в паузе/самоисключении.
Отчётность и журнал вмешательств (кто/когда/основание/результат).
8) Риск и антифрод
Данные: устройства, поведение, платежи, граф связей (телефоны, карты, IP, адреса).
Модели: аномалии депозитов/выводов, мультиаккаунты, бонус-карусель, арбитраж устаревших котировок.
Реакции: скоринг → лимиты/холды/2FA/ручная проверка; reason-codes и обжалование.
9) Данные и аналитика
Стриминговая ETL (Kafka → Flink/Spark) + DWH/Lakehouse (BigQuery/Snowflake/Redshift).
Фичестор для ML (риск/рекомендации/прогноз LTV).
Каталог данных, владельцы, SLA датасетов.
Privacy by Design: псевдонимизация, минимизация PII, права субъекта данных (запрос/удаление).
10) Наблюдаемость и SRE
Метрики: p95/p99 API, TPS по играм, ошибка сеттла, latency PSP, отклонение RTP/частот, нагрузка брокера.
Логи/Трейсы: корреляция `requestId`/`roundId`, распределённые трейсы через OTel.
SLO/алёрты: целевые пороги (например, Spin p95 ≤ 120 мс, ошибка сеттла < 0.01%), «тихие часы» уведомлений.
Инциденты: плейбуки, «war room», постмортемы с action items.
11) Масштабирование и регионы
Stateless-сервисы + горизонтальный автоскейл; sticky-sessions — только для live-игр/сложных бонусов.
Multi-AZ как минимум; Multi-Region: актив-актив для чтений/каталога/телеметрии, актив-пассив для кошелька/джекпотов.
Квоты и backpressure: лимиты per-tenant/ per-game TPS, пулы соединений к PSP/RGS.
DR-план: RPO/RTO цели, регулярные учения switchover.
12) Безопасность и комплаенс
Доступы: Zero-Trust, MTLS/JWT, short-lived токены, RBAC/ABAC, Just-in-Time доступы.
Секреты: KMS/Vault, ротация, подписанные артефакты, supply-chain сканирование.
Данные: шифрование «в покое» и в канале, маскирование/токенизация, мониторинг эксфильтрации.
Аудит: WORM-журналы, меркл-цепочки, контроль изменений.
Регуляторика: отчёты (GLI/eCOGRA/BMM, локальные регуляторы), хранение логов по срокам, гео-локализация данных.
13) Технологический стек (типичные варианты)
Ядро: Go/Java/Kotlin/Node.js; REST/gRPC/WebSocket.
Хранилища: PostgreSQL/MySQL (транзакции), Redis/Memcached (кэш/idempotency), ClickHouse/Druid (аналитика в реальном времени).
Очереди/шина: Kafka/Pulsar; CDC (Debezium).
CDN/Edge: CloudFront/Fastly/Cloudflare для ассетов/виджетов.
ML/Фичестор: Feast/Tecton/Vertex/Featureform.
14) CI/CD и качество
Пайплайн: build → линтеры/тесты → SCA/DAST → e2e в среде → canary/blue-green.
Миграции БД: Liquibase/Flyway + «двухступенчатые» изменения (добавь→наполни→переключи→удали).
Контрактные тесты между сервисами, тестовые контейнеры, хаос-тестирование (latency/отказы).
Feature-flags, фейлы безопасны по умолчанию (fail-closed).
15) Мини-потоки и псевдосхемы
Ставка (идемпотентность):
Client → API Gateway → BFF → Game Broker
↘ idempotencyKey store (Redis)
Broker → Wallet.lock → RGS.spin → Wallet.settle
↘ Audit(WORM) ↘ Telemetry(Kafka)
← Outcome (checksum/signature)
Вывод средств:
Client → Payments API → Risk/AML → PSP Adapter
↘ Wallet.hold → PSP webhook → Wallet.settle/release
↘ Notifications/CRM → Reporting
16) Частые ошибки и как их избежать
Решение исхода на клиенте → споры и провал сертификации ⇒ только server-authoritative.
Нет идемпотентности в ставках/платежах ⇒ двойные списания ⇒ idempotency keys + retry-safe.
`%N` при маппинге RNG ⇒ bias ⇒ alias/rejection sampling.
Смешение телеметрии и аудита ⇒ слабая доказательная база ⇒ разделяйте каналы и хранилища.
Отсутствие RG-стопов в промо ⇒ регуляторные риски ⇒ RG-флаги старше маркетинга.
Тяжёлые внешние RPC в критическом пути ⇒ высокие p95 ⇒ кэш/батч/асинхрон.
Без DR/мультирегиона ⇒ длительные простои ⇒ план switchover и учения.
17) Большой чек-лист платформы
Честность и деньги
- Server-authoritative исходы, WORM-аудит
- Wallet lock→settle, идемпотентность, мультивалюта
- Отчёты для регуляторов, сверки
Игры и интеграции
- Каталог по юрисдикциям, health-чек игр
- Надёжные адаптеры RGS/PSP, подписи/MTLS
- Реплеи раундов, SLA/авто-выключение
Пользователь и RG
- KYC/AML, гео/возраст гейты
- Лимиты/паузы/самоисключение, приоритет RG над промо
- Прозрачные правила бонусов
Надёжность
- SLO p95/p99, алёрты, постмортемы
- Автоскейл, квоты, backpressure
- Multi-AZ/Region, DR-план
Безопасность
- Vault/KMS, ротация ключей, supply-chain сканы
- RBAC/ABAC, short-lived токены, Zero-Trust
- Шифрование, мониторинг эксфильтрации
Данные
- Стриминговая ETL, DWH/Lakehouse, каталог данных
- Фичестор и ML-инференс
- GDPR/PII-политики и права субъектов
Процессы
- CI/CD canary/blue-green, миграции БД
- Контрактные/хаос-тесты, нагрузка
- Фичефлаги и канареечные выкладки
Бэкенд игровой платформы — это не один «толстый» сервис, а координация многих строго определённых модулей со своими SLO и контролями. Успешная архитектура:
1. держит исходы и деньги честными и идемпотентными, 2. интегрируется с RGS/PSP через надёжные контракты, 3. масштабируется и выдерживает сбои, 4. уважает регуляторику и Responsible Gaming, 5. обеспечивает прозрачную наблюдаемость и быстрые релизы.
Именно такой фундамент позволяет безопасно расти, быстро запускать контент и поддерживать доверие игроков и регуляторов.