GH GambleHub

Mikroservis arxitekturasi

1) Nima uchun iGaming-da mikroservislar

O’zgarish tezligi: mustaqil relizlar (to’lovlar, kontent, xavf, turnirlar).
Ishonchlilik: bitta xizmatning nosozligi butun mahsulotni pasaytirmaydi (nosozlik chegarasi).
Masshtab: «issiq» domenlarning gorizontal skayli (hamyon, lobbi, oqim).
Komplayens: hududlar/yurisdiksiyalar bo’yicha ma’lumotlarni segregatsiya qilish.

Agar kerak bo’lmasa: kichik buyruq/hajm, DevOps amaliyoti yo’q, testlarni avtomatlashtirish zaif bo’lsa, modulli monolit yaxshiroq bo’ladi.

2) Domenlar, chegaralar va buyruqlar (DDD + Team Topologies)

Domen konturlari: Akkaunt/Profil, KUS/Komplayens, To’lovlar/Hamyon, O’yin Kontenti/Agregatsiya, Bonuslar/Missiyalar, Turnirlar, Marketing/CRM, Hisobot/BI.
Bounded Context = maʼlumotlar modeli va til toʻgʻrisidagi shartnoma.
Buyruqning oʻzgarish oqimlari: bitta buyruq = bitta kontur + ularning SLOlari.
BFF (Backend for Frontend): mijozga «orkestr» yig’maslik uchun Web/Mobile/Partner uchun alohida fasadlar.

3) Kommunikatsiyalar: sinxron vs asinxron

Sinxron (REST/gRPC): darhol javob kerak boʻlganda (depozitda limitlarni tekshirish).
Asinxron (Kafka/NATS/SQS): voqealar va fon jarayonlari (keshbekni hisoblash, tarqatish, reytinglarni yangilash).

Qoidalar:
  • Kritik yoʻl = tarmoq xoplarining minimumi.
  • Uylararo integratsiya - voqealar va shartnomaviy API orqali.
  • «5 + sinxron qoʻngʻiroqlardan iborat zanjirlarni» yaratish

4) Kontraktlar va versiyalash

Birinchi kontrakt: OpenAPI/AsyncAPI + Schema Registry (Euro/JSON Schema).
SemVer + moslashuvchanlik: maydonlarni qoʻshish mijozlarni buzmaydi.
Consumer-driven contracts (CDC): C (regressiyalarga qarshi) avtoproveralari.
Deprecation policy: qo’llab-quvvatlash oynasi (12-18 oy), eski versiyalar bo’yicha telemetriya.

5) Voqealar, dostonlar va konsistentlik

Outbox/Transaction Log Tailing: «maʼlumot + hodisa» atom yozuvi.

Saga-patternlar:
  • To’lovlar/xulosalar uchun orkestrlash (markaziy muvofiqlashtiruvchi).
  • Bonuslar/missiyalar uchun xoreografiya (voqealarga munosabat).
  • Idempotentlik:’entityId + action + nonce’kalitlari, dedup-reyestrni saqlash.
  • Konsistentlik: «tashqi» - voqealar orqali; «ichki» - servis doirasidagi tranzaksiyalar.

6) Ma’lumotlar va saqlash

«O’z stori» tamoyili: har bir xizmat o’z DBsiga ega (sxemalarni izolyatsiya qilish).

Kirish patterni tanlash:
  • Tranzaksiyalar/balanslar - qat’iy invariantli relyasion (PostgreSQL).
  • Voqealar/log - append-only (Kafka/Redpanda).
  • Kesh/sessiyalar - Redis/KeyDB; yetakchi bordlar - Redis Sorted Sets.
  • Qidirish - OpenSearch/Elastic.
  • Oʻqish uchun materiallashtirilgan proyeksiyalar (CQRS) - tezkor roʻyxatlar/hisobotlar.

7) Ishonchlilik va barqarorlik

Timeouts/Retry with jitter/Retry-budget faqat idempotent operatsiyalari uchun.
Xizmatlar oʻrtasida Circuit-breaker/Outlier-ejection.
Bulkhead: «shovqinli» apstrimlarga alohida pullar.
Rate limits per-client/route, backpressure (503 + Retry-After).
Dead-letter + poison-message handling.

8) Kuzatuvchanlik (Observability)

Trastirovka: OpenTelemetry (’trace _ id’shluzi orqali → servislar → DB).
Metrika: RPS, p50/p95/p99, error rate 4xx/5xx, saturation (CPU/mem/queue), biznes metrika (TTP, TtW).
Logi: tarkibiy JSON, PII/PAN/IBAN kamuflyaj qilish,’trace _ id’bilan korelatsiya qilish.
SLO/alertlar: yo’nalish/funksiya uchun (masalan,’Deposit p95 ≤ 300 ms’,’success ≥ 98. 5%`).

9) Xavfsizlik va komplayens

Zero-Trust: mTLS servisi (SPIFFE/SPIRE), qisqa umr ko’rish sertifikatlari.
AuthN/Z: OAuth2/JWT (aud/scope/exp).
Sirlar: KMS/Secrets Manager/Sealed Secrets, kalitlar rotatsiyasi.
GDPR/ma’lumotlarni mahalliylashtirish: mintaqaviy klastyerlar, API-shlyuzda geo-fencing.
Audit: o’zgarmas jurnallar (WORM), ma’muriy harakatlarni izlash.

10) Tarqatish va relizlar

Konteynerlar/K8s: bitta xizmat = bitta deploy; resurslar/limitlar; PodDisruptionBudget.
CI/CD: linterlar, unit/contract/integ-testlar, security scan, SBOM.
Relizlar: canary/blue-green/shadow, expand-and-contract orqali sxemalarni koʻchirish.
Avtoskeyl: CPU + RPS + p95 + queue-depth bo’yicha HPA; qisqartirilganda drain.

11) Unumdorlik va qiymat

Profillash: p95/99 «servislar va usullar bo’yicha», flame-grafalar.
Keshlash: read-through/write-through; TTL/hodisalar bo’yicha nogironlik.
Data locality: issiq maʼlumotlarni hisoblashga yaqin saqlash.
FinOps: 60-70% yuklash targeti, «warm pools», harakatsiz vorkerlarning avto pauzasi.

12) Domen namunalari (iGaming)

12. 1 To’lovlar/Hamyon

Xizmatlar:’payments-gw’(fasad),’wallet’,’psp-adapters-’,’fraud-check’.
Oqim:’init → reserve → capture/rollback’(saga).
События: `PaymentInitiated`, `PaymentAuthorized`, `PaymentSettled/Failed`.
Idempotentlik:’Idempotency-Key’, dedup’wallet’.

12. 2 KTS/Komplayens

Сервисы: `kyc-flow`, `doc-storage`, `sanctions-check`, `pep-screening`.
События: `KycSubmitted/Approved/Rejected`, `RiskScoreUpdated`.
Audit va ETA: vazifalar navbati, taym-line keys, post-actions.

12. 3 Bonuslar/Missiyalar

Services:’bonus-engine’,’wallet-bonus’,’eligibility’.
Xoreografiya:’BetPlaced → BonusEngine → BonusGranted → WalletCredited’.
Suiiste’molliklardan himoya qilish: idempotent grantlar, limitlar, qoidalar simulyatori.

12. 4 Turnir/Peshqadamlar

Services:’tournament-svc’,’scoring’,’leaderboard’.
Saqlash: Redis ZSET + OLAPda davriy «tashlash».
События: `ScoreUpdated`, `TournamentClosed`, `RewardIssued`.

13) «kontrakt + hodisa» misoli (soddalashtirilgan holda)

OpenAPI (parcha) - Wallet

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 (parcha) - hodisa

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

14) Test sinovlari

Domen qoidalari uchun Unit/Property-based.
CDC (Pact/Assertible) - provayderlar/iste’molchilarning kontrakt-testlari.
Mahalliy brokerlar (Testcontainers) bilan integratsiya.
Tanqidiy flou E2E (ro’yxatdan o’tish → depozit → o’yin boshlanishi → chiqish).
Chaos/Failover testlari: PSP o’chirilishi/brokerning yiqilishi/zonaning yo’qolishi.

15) Metrika va SLO (minimal)

Xizmatlardan foydalanish imkoniyati:’99 ≥. 9% to’lov/hamyon uchun.
Latency p95: Kritik yo’lning API ≤ 300-500 ms.
Error budget: 0. 1–0. har chorakda 5%, burn-alerts.
Navbatlar: lead time hodisalar (produce → consume), DLQ ≤ 0. 1%.
Biznes: TTP, TtW, FTD-success, KYC-TtV.

16) Chek varaqlari

Servisni loyihalashtirish

  • Aniq domen chegarasi va ma’lumotlar egasi.
  • OpenAPI/AsyncAPI shartnomalari + Registry sxemalari.
  • SLO/alertlar aniqlangan; metriklar/treyslar/loglar o’rnatilgan.
  • Taymaut/retraj/idempotentlik siyosati.
  • Sxemalar koʻchirilishi: expand-and-contract.

Chiqarishdan oldin

  • Unit/CDC/integratsiya testlari yashil.
  • Kanar yo’nalishi va qaytish rejasi.
  • Rate-limits/og’irlik yo’nalishlari sozlangan.
  • Sirlar/kalitlar/sertifikatlar aylanadi.
  • Ficha bayroqlari va folbeklar tayyorlandi.

17) Anti-patternlar

Tarmoq maʼlumot shiniga oʻxshaydi: voqealar oʻrniga chuqur sinxron zanjirlar.
Barcha xizmatlar uchun umumiy «xudo» -DD.
Idempotentlik yo’qligi → ikki baravar hisobdan chiqarish/hisoblab chiqarish.
Telemetriyasiz qorong’u relizlar va kill-switch.
Yashirin sessiya (tashqi holat o’rniga hamma joyda yopishqoqlik).
CDC va versiyasiz «kodda» kontraktlar.
Servislar o’rniga API-shlyuzda mantiq (shlyuz = yupqa).

18) Monolitdan migratsiya (Strangler Fig)

1. Fasad-shlyuzni va birinchi konturni tanlash (masalan, toʻlovlar).
2. Monolitdan voqealarga ikkilik logirovkani (outbox) olib tashlash.
3. Endpoyntlarni asta-sekin yangi xizmatga o’tkazish (yo’naltirish/kanar vazni).
4. Monolitni «yadro» gacha siqish va oʻchirish.

19) Stek va infratuzilma (misol)

Kommunikatsiyalar: REST/gRPC, Kafka/NATS; Schema Registry.
Saqlovchilar: PostgreSQL, Redis, OpenSearch, S3/MinIO; OLAP — ClickHouse/BigQuery.
Konteynerlar/orkestr: Docker, Kubernetes (Ingress/Gateway), Service Mesh (Istio/Linkerd).
Shlyuz: Envoy/Kong/Traefik/NGINX.
CI/CD: GitHub Actions/GitLab CI + ArgoCD/Flux; Pact/OWASP/ZAP.
Observability: OpenTelemetry, Prometheus, Tempo/Jaeger, Loki.

20) Yakuniy shpargalka

Chegaralarni domen va maʼlumot javobgarligi boʻyicha loyihalashtiring.
Sinxron - faqat hozir javob kerak bo’lgan joyda; qolganlari - voqealar.
Kontraktlar/sxemalar/CDC - regressiyalardan sug’urta qilish.
Sagi + outbox + idempotentlik - ishonchlilik poydevori.
Kuzatuv va SLO - variant emas, balki «tayyor» mezoni.
Relizlar canary/blue-green orqali, migratsiyalar - expand-and-contract.
Xavfsizlik/komplayens: mTLS, JWT, KMS, mintaqaviy maʼlumotlar.
Avval modulli monolit, keyin evolyutsiya - agar kattalik va jamoa tayyor bo’lsa.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.