GH GambleHub

Микросервис архитектурасы

1) Эмне үчүн микросервистер iGaming

Өзгөртүү ылдамдыгы: көз карандысыз релиздер fich командалар (төлөмдөр, мазмун, тобокелдик, турнирлер).
Ишенимдүүлүк: бир кызматтын иштебей калышы бүт продуктуну түшүрбөйт (баш тартуунун чеги).
Масштаб: горизонталдык скейл "ысык" домендер (капчык, лобби, агымдар).
Комплаенс: региондор/юрисдикциялар боюнча маалыматтарды сегрегациялоо.

кереги жок болгондо: чакан командасы/көлөмү, эч кандай DevOps-практиктер, алсыз автоматташтыруу тесттер - андан кийин модулдук монолит жакшы.

2) Домендер, чек аралар жана командалар (DDD + Team Topologies)

Домендик контурлар: Эсеп/Профиль, CUS/Комплаенс, Төлөмдөр/Капчык, Оюн мазмуну/Агрегация, Бонустар/Миссиялар, Турнирлер, Маркетинг/CRM, Отчеттуулук/BI.
Bounded Context = маалыматтар модели жана тил жөнүндө келишим.
Команданын өзгөрүү агымдары: бир команда = бир контур + алардын SLO.
BFF (Backend for Frontend): кардарга "оркестрди" чогултуу үчүн эмес, Web/Mobile/Partner үчүн өзүнчө фасаддар.

3) Байланыш: Synchron vs асинхрон

Synchron (REST/gRPC): дароо жооп керек болгондо (депозиттик лимиттерди текшерүү).
Asinhron (Kafka/NATS/SQS): окуялар жана арткы процесстер (кэшбэк эсептөө, жөнөтүү, рейтингдерди жаңылоо).

Эрежелер:
  • Критикалык жол = минималдуу тармактык хоп.
  • Үй аралык интеграция - окуялар жана келишимдик API аркылуу.
  • онлайн "5 + синхрондуу чалуулар чынжыр" куруу эмес → EDA/сагаларды колдонуу.

4) Келишимдер жана версиялоо

Биринчи келишим: OpenAPI/AsyncAPI + Schema Registry (Euro/JSON Schema).
SemVer + шайкештик: талааларды кошуу кардарларды бузбайт.
Consumer-driven contracts (CDC): CI автопроверки (регрессияга каршы).
Deprecation саясат: колдоо терезе (12-18 ай), эски версия боюнча телеметрия.

5) Окуялар, дастандар жана туруктуулук

Outbox/Transaction Log Tailing: атомдук жазуу "маалыматтар + окуя".

Сага-үлгүлөрү:
  • Төлөмдөр/корутундулар үчүн оркестр (борбордук координатор).
  • Хореография (окуяларга реакция) бонустар/миссиялар үчүн.
  • Демпотенттик: ачкычтар боюнча 'entityId + action + nonce', сактоо dedup-реестри.
  • Консистенттүүлүк: "тышкы" - окуялар аркылуу; "ички" - кызматтын чегинде бүтүмдөр.

6) Маалыматтар жана сактоо

"Өз стор" принциби: ар бир кызмат өзүнүн БДсына ээ (схемаларды изоляциялоо).

Кирүү үлгүсү боюнча кампаны тандоо:
  • Транзакциялар/баланстар - катуу инварианттар менен реляциялык (PostgreSQL).
  • Events/log - append-only (Kafka/Redpanda).
  • Кэш/сессиялар - Redis/KeyDB; алдыңкы такталар - Redis Sorted Sets.
  • Издөө - OpenSearch/Elastic.
  • Материалдаштырылган окуу проекциялары (CQRS) - тез тизмелер/отчеттор.

7) Ишенимдүүлүк жана туруктуулук

Timeouts/Retry with jitter/Retry-budget гана демпотенттик иш үчүн.
Circuit-breaker/Outlier-ejection кызматтардын ортосунда.
Bulkhead: жеке пулдар "ызы-чуу" агымдарына.
Rate limits per-client/route, backpressure (503 + Retry-After).
Dead-letter + poison-message handling кезек.

8) Байкоо (Observability)

Tracking: OpenTelemetry ('trace _ id' шлюз аркылуу → кызматтар → DD).
Метрика: RPS, p50/p95/p99, error rate 4xx/5xx, saturation (CPU/mem/queue), бизнес-метрика (TTP, TtW).
Логи: структуралык JSON, PII/PAN/IBAN, 'trace _ id' боюнча кореляция.
SLO/Алерт: маршрут/функция (мисалы, 'Deposit p95 ≤ 300 ms', 'success ≥ 98. 5%`).

9) Коопсуздук жана комплаенс

Zero-Trust: mTLS кызматы (SPIFFE/SPIRE), кыска мөөнөттүү күбөлүктөр.
AuthN/Z: OAuth2/JWT (aud/scope/exp), ролдорду атрибуттук ажыратуу.
Secrets: KMS/Secrets Manager/Sealed Secrets, ачкычтарды айлантуу.
GDPR/маалыматтарды локалдаштыруу: аймактык кластерлер, API-шлюз боюнча geo-fencing.
Аудит: өзгөрүлбөс журналдар (WORM), башкаруу иш-аракеттерин издөө.

10) жайгаштыруу жана чыгаруу

Контейнерлер/K8s: бир кызмат = бир deploy; ресурстар/лимиттер; PodDisruptionBudget.
CI/CD: linters, unit/contract/integ-тесттер, security scan, SBOM.
Релиздер: canary/blue-green/shadow, expand-and-contract аркылуу схемаларды көчүрүү.
Autoscale: CPU + RPS + p95 + queue-depth боюнча HPA; бурулганда drain.

11) аткаруу жана наркы

Профилдөө: p95/99 "кызматтары жана ыкмалары боюнча", flame-графалар.
кэш: read-through/write-through; TTL/окуялар боюнча майып.
Data locality: эсептөө жакын ысык маалыматтарды сактоо.
FinOps: максаттуу жүктөп алуу 60-70%, "warm pools", auto-тыныгуу активдүү эмес воркерлер.

12) Домен үлгүлөрү (iGaming)

12. 1 Төлөмдөр/Капчык

Кызматтар: 'payments-gw' (фасад), 'wallet', 'psp-adapters-', 'fraud-check'.
Агым: 'init → reserve → capture/rollback' (сага).
События: `PaymentInitiated`, `PaymentAuthorized`, `PaymentSettled/Failed`.
Демпотенттик: 'Idempotency-Key', дедуп 'wallet'.

12. 2 КУС/Комплаенс

Сервисы: `kyc-flow`, `doc-storage`, `sanctions-check`, `pep-screening`.
События: `KycSubmitted/Approved/Rejected`, `RiskScoreUpdated`.
Аудит жана ETA: тапшырмалардын кезеги, тайм-лайн кейс, post-actions.

12. 3 бонустар/миссиялар

Кызмат көрсөтүүлөр: 'bonus-engine', 'wallet-bonus', 'eligibility'.
Хореография: 'BetPlaced → BonusEngine → BonusGranted → WalletCredited'.
Кыянатчылыктан коргоо: idempotent гранттар, лимиттер, эрежелердин симулятору.

12. 4 Турнирлер/Лидборддор

Кызматтар: 'tournament-svc', 'scoring', 'leaderboard'.
Сактоо: Redis ZSET + OLAP мезгил-мезгили менен "таштанды".
События: `ScoreUpdated`, `TournamentClosed`, `RewardIssued`.

13) Мисалы "келишим + окуя" (жөнөкөйлөштүрүлгөн)

OpenAPI

yaml paths:
/v1/wallet/{userId}/credit:
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreditRequest'
responses:
'202': { description: 'Enqueued' }
components:
schemas:
CreditRequest:
type: object required: [amount, currency, reason, idempotencyKey]
properties:
amount: { type: number }
currency: { type: string, example: UAH }
reason: { type: string, enum: [Deposit, Bonus, Adjustment] }
idempotencyKey: { type: string }

AsyncAPI (фрагмент) - окуя

yaml channels:
wallet. credit. applied:
publish:
message:
name: WalletCreditApplied payload:
type: object required: [userId, amount, currency, sourceEventId]

14) Сыноо

Unit/Property-based домен эрежелери үчүн.
CDC (Pact/Assertible) - провайдерлердин/керектөөчүлөрдүн келишим-тесттери.
жергиликтүү брокерлер менен бириктирүү (Testcontainers).
E2E маанилүү Flow (каттоо → депозиттик → оюн баштоо → чыгаруу).
Chaos/Failover-тесттер: PSP өчүрүү/брокердин кулашы/аймакты жоготуу.

15) Метрика жана SLO (минималдуу)

Кызматтардын жеткиликтүүлүгү: '99 ≥. 9% төлөм/капчык үчүн.
Latency p95: API критикалык жол ≤ 300-500 ms.
Error budget: 0. 1–0. 5% чейрек ичинде, burn-alerts.
кезек: lead time event (produce → consume), DLQ ≤ 0. 1%.
Бизнес: TTP, TtW, FTD-success, KYC-TtV.

16) Чек-баракчалар

Сервисти долбоорлоо

  • Так домен чек жана маалымат ээси.
  • OpenAPI/AsyncAPI келишимдер + Registry схемалар.
  • SLO/Алерт аныкталган; метриктер/соода/Логи камтылган.
  • Таймаут/Ретраун/Демпотенттик саясаты.
  • Схемаларды көчүрүү: expand-and-contract.

Чыгаруу алдында

  • Unit/CDC/интеграциялык тесттер жашыл.
  • Канар маршруту жана кайтаруу планы.
  • Rate-limits/салмак жолдору орнотулган.
  • Сырлар/ачкычтар/күбөлүктөр айланат.
  • Ficha желектер жана follbeky даярдалган.

17) Анти-үлгүлөрү

Маалымат шиналар катары тармак: окуялардын ордуна терең синхрондуу чынжырлар.
Жалпы "кудай" -БД бардык кызмат.
болбогон → кош эсептен чыгаруу/эсептер.
Телеметрия жана kill-switch жок кара релиздер.
Жашыруун сессия (тышкы абалы ордуна бардык жерде жабышчаак).
Келишимдер "коддо" версиясыз жана CDC.
Кызматтардын ордуна API-шлюздагы логика (шлюз = жука).

18) Монолиттен көчүрүү (Strangler Fig)

1. Фасад-шлюзду жана биринчи контурду бөлүп көрсөтүү (мисалы, төлөмдөр).
2. Экилик логиканы (outbox) монолиттен окуяларга алып салуу.
3. Акырындык менен эндпойнтторду жаңы кызматка которуу (багыттоо/канар салмагы).
4. Монолитти "ядрого" кысып, өчүрүңүз.

19) Стек жана инфраструктура (мисал)

Байланыш: REST/gRPC, Kafka/NATS; Schema Registry.
Сактоо: PostgreSQL, Redis, OpenSearch, S3/MinIO; OLAP — ClickHouse/BigQuery.
Контейнерлер/оркестр: Docker, Kubernetes (Ingress/Gateway), Service Mesh (Istio/Linkerd) керек болсо.
шлюз: Envoy/Kong/Traefik/NGINX.
CI/CD: GitHub Actions/GitLab CI + ArgoCD/Flux; Pact/OWASP/ZAP.
Observability: OpenTelemetry, Prometheus, Tempo/Jaeger, Loki.

20) Жыйынтыктоочу шпаргалка

Домендер жана маалыматтардын жоопкерчилиги боюнча чектерди долбоорлоо.
Synchron - азыр жооп керек жерде гана; калгандары - окуялар.
Келишимдер/схемалар/CDC - регрессияга каршы камсыздандыруу.
Сагалар + outbox + демпотенттик - ишенимдүүлүктүн пайдубалы.
Байкоо жана SLO - параметр эмес, критерийи "даяр".
Канар/көк-жашыл, көчүрүү аркылуу релиздер - expand-and-contract.
Коопсуздук/комплаенс: mTLS, JWT, KMS, аймактык маалыматтар.
Биринчи модулдук монолит, андан кийин эволюция - масштабы жана командасы даяр болсо.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.