GH GambleHub

Mikroservis arhitekturasy

1) Näme üçin iGaming-de mikroservisler

Üýtgeşmeleriň tizligi: toparlaryň garaşsyz çykarylmagy (tölegler, mazmun, töwekgelçilik, ýaryşlar).
Ygtybarlylyk: bir hyzmatyň şowsuzlygy tutuş önümi ýykmaýar (şowsuzlygyň çäkleri).
Masştab: "gyzgyn" domenleriň gorizontal skeýli (gapjyk, lobbi, akym).
Ylalaşyk: sebitler/ýurisdiksiýalar boýunça maglumatlary bölmek.

Haçan-da: kiçijik topar/göwrüm, DevOps tejribesi ýok, synaglaryň gowşak awtomatlaşdyrylmagy - modully monolit has gowudyr.

2) Domenler, serhetler we toplar (DDD + Team Topologies)

Domen konturlary: Hasap/Profil, KUS/Complayens, Tölegler/Gapjyk, Oýun mazmuny/Agregasiýa, Bonuslar/Missiýalar, Ýaryşlar, Marketing/CRM, Hasabat/BI.
Bounded Context = Maglumatlar modeli we dil şertnamasy.
Buýruk üýtgemeleriniň akymlary: bir topar = bir kontur + SLO.
BFF (Backend for Frontend): müşderide "orkestr" ýygnamazlyk üçin Web/Mobile/Partner üçin aýratyn fasadlar.

3) Aragatnaşyk: sinhron vs asinhron

Sinhron (REST/gRPC): derrew jogap gerek bolanda (goýumda çäklendirmeleri barlamak).
Asinhron (Kafka/NATS/SQS): wakalar we fon prosesleri (nagt pul, poçta, reýtingleri täzelemek).

Düzgünler:
  • Kritiki ýol = iň az tor hop.
  • Domenara integrasiýa - wakalar we şertnamalaýyn API arkaly.
  • Internetde "5 + sinhron jaň zynjyrlaryny" gurmaň → EDA/saglary ulanyň.

4) Şertnamalar we wersiýalaşdyrmak

Birinji şertnama: OpenAPI/AsyncAPI + Schema Registry (Euro/JSON Schema).
SemVer + gabat gelmek: meýdan goşmak müşderileri bozmaýar.
Consumer-driven contracts (CDC): CI-de awtoprowerleme (regressiýalara garşy).
Deprecation policy: goldaw penjiresi (12-18 aý), köne wersiýalara görä telemetriýa.

5) Wakalar, dessanlar we yzygiderlilik

Outbox/Transaction Log Tailing: "Maglumatlar + Waka" atom ýazgysy.

Saga-pattern:
  • Tölegler/netijeler üçin orkestr (merkezi koordinator).
  • Bonuslar/missiýalar üçin horeografiýa (wakalara reaksiýa).
  • Idempotentlik: 'entityId + action + nonce' -de açarlar, dedup-reýestri saklamak.
  • Yzygiderlilik: "daşarky" - wakalar arkaly; "içerki" - hyzmatyň çägindäki amallar.

6) Maglumatlar we saklamak

Her hyzmatyň öz DB-si bar (shemalary izolirlemek).

Elýeterlilik patterni boýunça ammar saýlamak:
  • Geleşikler/balanslar - berk üýtgemeleri bolan relýasiýa (PostgreSQL).
  • Wakalar/log - append-only (Kafka/Redpanda).
  • Kesh/Sessiýalar - Redis/KeyDB; öňdebaryjy tagtalar - Redis Sorted Sets.
  • Gözleg - OpenSearch/Elastic.
  • Okamak üçin materiallaşdyrylan proýeksiýalar (CQRS) - çalt sanawlar/hasabatlar.

7) Ygtybarlylyk we durnuklylyk

Timeouts/Retry with jitter/Retry-budget diňe idempotent amallary üçin.
Hyzmatlaryň arasynda circuit-breaker/Outlier-ejection.
Bulkhead: "şowhunly" akymlara aýratyn howuzlar.
Rate limits per-client/route, backpressure (503 + Retry-After).
Dead-letter + poison-message handling nobatlarda.

8) Synlamak (Observability)

Tracking: OpenTelemetry ('trace _ id' şlýuz arkaly → hyzmatlar → DB).
Metrikler: RPS, p50/p95/p99, error rate 4xx/5xx, saturation (CPU/mem/queue), iş metrikleri (TTP, TtW).
Logy: gurluş JSON, gizlemek PII/PAN/IBAN, korelýasiýa 'trace _ id'.
SLO/alertler: marşrut/funksiýa (mysal üçin, 'Deposit p95 ≤ 300 ms', 'success ≥ 98. 5%`).

9) Howpsuzlyk we gabat gelmek

Zero-Trust: mTLS service service (SPIFFE/SPIRE), gysga ömürli şahadatnamalar.
AuthN/Z: OAuth2/JWT (aud/scope/exp), rollaryň atribut bölünişi.
Syrlar: KMS/Secrets Manager/Sealed Secrets, açarlaryň aýlanmagy.
GDPR/maglumatlaryň lokalizasiýasy: sebitleýin toparlar, API şlýuzynda geo-fencing.
Audit: üýtgemeýän magazinesurnallar (WORM), administratiw hereketleriň yzarlanmagy.

10) Ýerleşdirmek we goýbermek

Konteýnerler/K8s: bir hyzmat = bir deploy; çeşmeler/çäkler; PodDisruptionBudget.
CI/CD: linterler, unit/contract/integ-testler, security scan, SBOM.
Neşirler: canary/blue-green/shadow, expand-and-contract arkaly shemalaryň göçmegi.
Awtoskeýl: HPA CPU + RPS + p95 + queue-depth; Aýlanylanda drain.

11) Öndürijiligi we bahasy

Profillemek: p95/99 "hyzmatlar we usullar boýunça", flame-grafalar.
Kesmek: read-through/write-through; TTL/wakalar boýunça maýyplyk.
Data locality: gyzgyn maglumatlary hasaplamaga ýakyn saklaň.
FinOps: 60-70% ýüklemek maksady, "warm pools", hereketsiz workerleriň awto-arakesmesi.

12) Domen şablonlary (iGaming)

12. 1 Tölegler/Gapjyk

Hyzmatlar: 'payments-gw' (fasad), 'wallet', 'psp-adapters-', 'fraud-check'.
Akym: 'init → reserve → capture/rollback' (saga).
События: `PaymentInitiated`, `PaymentAuthorized`, `PaymentSettled/Failed`.
Idempotentlik: 'Idempotency-Key', 'wallet' sözbaşy.

12. 2 KUS/Complayens

Сервисы: `kyc-flow`, `doc-storage`, `sanctions-check`, `pep-screening`.
События: `KycSubmitted/Approved/Rejected`, `RiskScoreUpdated`.
Audit we ETA: wezipeleriň nobaty, wagt-line kazyýet, post-actions.

12. 3 Bonuslar/Missiýalar

Hyzmatlar: 'bonus-engine', 'wallet-bonus', 'eligibility'.
Koreografiýa: 'BetPlaced → BonusEngine → BonusGranted → WalletCredited'.
Hyýanatçylykdan goramak: idempotent grantlar, çäkler, düzgünleriň simulýatory.

12. 4 Ýaryşlar/Liderbordlar

Hyzmatlar: 'tournament-svc', 'scoring', 'leaderboard'.
Saklamak: Redis ZSET + OLAP-da wagtal-wagtal "taşlamak".
События: `ScoreUpdated`, `TournamentClosed`, `RewardIssued`.

13) "Şertnama + waka" mysaly (ýönekeýleşdirilen)

OpenAPI (bölek) - 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 (bölek) - waka

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

14) Synag

Domen düzgünleri üçin unit/Property-based.
CDC (Pact/Assertible) - üpjün edijileriň/sarp edijileriň şertnama-synaglary.
Ýerli brokerler bilen integrasiýa (Testcontainers).
Möhüm flow E2E (hasaba alyş → goýum → oýny başlamak → çykarmak).
Chaos/Failover-synaglar: PSP-ni öçürmek/dellalyň ýykylmagy/zonany ýitirmek.

15) Metrikler we SLO (iň az)

Hyzmatlaryň elýeterliligi: '99 ≥. 9% 'töleg/gapjyk üçin.
Latency p95: Kritik ýoluň API ≤ 300-500 ms.
Error budget: 0. 1–0. Çärýekde 5%, burn-alerts.
Nobatlar: lead time wakalar (produce → consume), DLQ ≤ 0. 1%.
Iş: TTP, TtW, FTD-success, KYC-TtV.

16) Çek-listler

Hyzmatyň dizaýny

  • Anyk domen serhedi we maglumatlaryň eýesi.
  • OpenAPI/AsyncAPI şertnamalary + Registry shemalary.
  • SLO/alertler kesgitlenildi; metrikler/söwdalar/loglar gurlan.
  • Wagt/retraut/idempotentlik syýasaty.
  • Shema göçmeleri: expand-and-contract.

Çykmazdan ozal

  • Unit/CDC/integrasiýa synaglary ýaşyl.
  • Kanar ýoly we yzyna gaýtarmak meýilnamasy.
  • Rate-limits/agram ugurlary sazlandy.
  • Syrlar/açarlar/şahadatnamalar aýlanýar.
  • Baýdaklar we follbekler taýýarlandy.

17) Anti-patternler

Maglumat şinasy hökmünde ulgam: wakalaryň ýerine çuňňur sinhron zynjyrlar.
Umumy "hudaý" -BD ähli hyzmatlar üçin.
Idempotentligiň ýoklugy → goşa hasapdan çykarmak/hasaplamak.
Telemetriýa we kill-switch bolmadyk garaňky neşirler.
Gizlin sessiýa (daşky ýagdaýyň ýerine hemme ýerde ýelmeşmek).
Şertnamalar "kodda" wersiýasyz we CDC.
Hyzmatlaryň ýerine API-şlýuzda logika (şlýuz = inçe).

18) Monolitden göçmek (Strangler Fig)

1. Fasad-şlýuzy we birinji kontury bölmek (mysal üçin tölegler).
2. Ikilik logirlemäni (outbox) monolitden wakalara aýyrmak.
3. Endpointleri kem-kemden täze hyzmata geçirmek (marşrut/kanar agramy).
4. Monolitini "ýadro" çenli gysyň we öçüriň.

19) Stek we infrastruktura (mysal)

Aragatnaşyk: REST/gRPC, Kafka/NATS; Schema Registry.
Ammar: PostgreSQL, Redis, OpenSearch, S3/MinIO; OLAP — ClickHouse/BigQuery.
Konteýnerler/orkestr: Docker, Kubernetes (Ingress/Gateway), Service Mesh (Istio/Linkerd).
Şlýuz: Envoy/Kong/Traefik/NGINX.
CI/CD: GitHub Actions/GitLab CI + ArgoCD/Flux; Pact/OWASP/ZAP.
Observability: OpenTelemetry, Prometheus, Tempo/Jaeger, Loki.

20) Jemleýji şpargalka

Domenler we maglumatlaryň jogapkärçiligi boýunça çäkleri düzüň.
Synchron - diňe häzirki wagtda jogap gerek bolan ýerde; galanlary - wakalar.
Şertnamalar/shemalar/CDC - regressiýalardan ätiýaçlandyryş.
Saglar + outbox + idempotentlik - ygtybarlylygyň binýady.
Syn etmek we SLO - opsiýa däl, "taýýar" kriteriýasy.
Kanary/blue-green arkaly goýberilýär, göçmek - expand-and-contract.
Howpsuzlyk/gabat gelmek: mTLS, JWT, KMS, sebit maglumatlary.
Ilki modully monolit, soň bolsa ewolýusiýa - eger masştablar we topar taýýar bolsa.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.