Микросервис архитектурасы
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, аймактык маалыматтар.
Биринчи модулдук монолит, андан кийин эволюция - масштабы жана командасы даяр болсо.