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).
- 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.