GH GambleHub

API-shlyuz va yo’naltirish

1) Arxitekturada API-shlyuzning roli

API-shlyuz - mikroservislarga kirishning yagona nuqtasi. U:
  • So’rovlarni yo’naltiradi (yo’l bo’yicha/xederam/geo/og’irlik/versiya).
  • Perimetrni himoya qiladi (TLS/mTLS, WAF, DDoS, rate limits, authN/Z).
  • Trafikni boshqaradi (canary/AB, shadow/mirror, circuit breaker, retray, taymaut).
  • Protokollar (REST/gRPC/WebSocket), sarlavhalar, kodlarni standartlashtiradi.
  • Kuzatadi (loglar, metriklar, trastirovkalar, korelatsiya).
  • Transformatsiya va validatsiya (JSON/XML, normallashtirish, schema-validation).

iGaming uchun bu geo-komplayens (mamlakatlar/yoshlar bo’yicha blokirovka), to’lov smart-routing va chetdagi mas’uliyatli o’yin siyosati.

2) Yo’naltirish variantlari

Path-based: `/api/v1/payments/ → payments-svc`.
Host-based: `eu. api. example. com → eu-edge`, `psp. example. com → psp-proxy`.
Header-based:’X-Client: partner-A’→ sherik backend;’Accept: application/grpc’.
Geo-routing: IP/ASN/mamlakat bo’yicha (GDPR/mahalliy taqiqlar, latency).
Weighted/Canary:’90%’eski,’10%’yangi versiyaga; tez konkida uchish.
Claim-routing: по `JWT. claims. tier/role/region’(masalan, high-roller → premium-limitlar).
Failover: DPM/bulutlar va PSP o’rtasidagi aktiv-aktiv/aktiv-passiv.

3) Perimetr xavfsizligi

TLS everywhere: TLS 1. 2 + tashqi ko’rinishda, mTLS ichki (servislar shlyuzi).
OAuth2/JWT: imzoni tekshirish, audit’exp/nbf/aud/scope’, JWKS-rotatsiya; TTL bilan validatsiya keshi.
HMAC: webhooks/to’lovlar uchun tel imzosi.
API-kalitlar: tizimli mijozlar uchun; kvotalar/rollar bilan bog’laymiz.
WAF: asosiy qoidalar (injection, protocol anomalies), tana o’lchami, mamlakatlarning deny-ro’yxati.
DDoS himoyasi: connection limiting, SYN cookies, rate-limit uchun IP/kalit/endpoint.
Zero-Trust: mandat siyosati (SPIFFE/SPIRE, xizmatlarning o’ziga xosligi), eng kam huquqlar prinsipi.
Maxfiylik: PIIni loglarda tahrirlash, PAN/IBANni yashirish, saqlash siyosati.

4) Limitlar, kvotalar va burstlardan himoya qilish

Модели: token bucket, leaky bucket, fixed/sliding window.
Chegaralar: per-IP, per-key, per-user, per-route.

Qo’shimcha:
  • Burst + sustained (masalan,’50 rps burst’,’10 rps sustain’).
  • Retry-Budget va Slow-Loris himoyasi (o’qish vaqtlari).
  • Hamkorlar uchun kunlik/oylik quota.

5) Transformatsiya va validatsiya

Sarlavhalar normalize (trace-id, locale, client-id).
Request/Response-mapping (maydon/kodlar, ichki atributlarni yashirish).
Schema validation (OpenAPI/JSON Schema) proksatlashdan oldin - erta rad etish 4xx.
Compression/’ Accept-Encoding’, caching (quyida qarang).

6) Keshlash va unumdorlik

Ma’lumotnomalar, ommaviy meta ma’lumotlar, konfiguratsiyalar uchun Edge-kesh (TTL,’ETag ’/’ If-None-Match’).
Micro-kesh 1-5 s issiq GET (eng yuqori yukni kamaytiradi).
Negative-cache qisqacha (404/empty) - ehtiyot bo’ling.
Xedging-requests va r95> chegarasida raqobatbardosh so’rovlar.

7) Taymautlar, retralar, barqarorlik

Taymautlar: connect/read/write alohida; oqilona p95-belgilar.
Retraylar: idempotent-usullar (GET/PUT) c backoff + jitter; retry-budget.
POST idempotentligi:’Idempotency-Key’+ servis/shlyuz tomonidagi deduplikatsiya.
Circuit-Breaker: xato/latency; half-open namunalari.
Bulkhead/Pool-apstrimlar bo’yicha izolyatsiya.

8) Versiyalash va muvofiqlik

Usullar:
  • URI: ’/v1/...’(oddiy, lekin «shovqin»).
  • Header/Content-Negotiation: `Accept: application/vnd. app. v2+json`.
  • Feature-bayroqlar/server capability - minor-oʻzgarishlarning mosligi uchun.

Siyosat: SemVer, qo’llab-quvvatlash oynasi (masalan,’v1’= 12-18 oy), deprikatsiya jadvali, kengaytirishdagi mos javoblar (maydonlarni qo’shish - buzmaydi).

9) Kuzatuvchanlik va sifatni nazorat qilish

Korrelyatsiya:’traceparent ’/’ x-request-id’majburiy; pastga tashlaymiz.
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx metrikasi, saturation, retry/circuit.
Logi: tarkibiy JSON; PIIni niqoblaymiz; kodlar bo’yicha darajalar.
Treyslarni sampllash: bazaviy 5-10% + xatolar uchun maqsadli/sekin.
SLO/alertlar: yo’nalishlar/mijozlar bo’yicha (aptaym, latency, xato).

10) Relizlar trafigini boshqarish

Blue-Green: DNS/LB almashtirish.
Canary: vazn ulushi/segmentlar (mintaqa, sherik, rol).
Shadow/Mirror: yangi versiyadagi trafikning nusxasi mijozga javobsiz.
Kill-switch: muammoli apstrim/fichni tezda oʻchirish uchun bayroq.

11) To’lovlarni aqlli yo’naltirish (iGaming)

PSPni tanlash qoidalari: geo, valyuta, summa, tavakkalchilik, foydalanish imkoniyati, komissiya.
Failover PSP:’5xx/timeout’da avtomatik oʻtish.
Same-method rule: dastlabki usul orqali qaytarish/natijalar - chetida tekshirish.
To’lovlarning idempotentligi:’userId + amount + currency + purpose’dagi kalit.
ETA-shaffoflik: shlyuzga nosozlik holatlari va sabablari qoʻshiladi (PSP kodlari emas).

12) Kross-mintaqalar siyosati va komplayens

Geo-filtrlar: mamlakatlarning oq/qora ro’yxatlari, yoshga oid cheklovlar, IP-reynjlar.
Rezidentlar ma’lumotlari: mintaqaviy klasterlarga yo’naltirish (GDPR/mahalliy qonunlar).
Logi va TTL: hududlar bo’yicha saqlash, avtomatik ravishda anonimlashtirish.

13) Konfiguratsiya namunalari

13. 1 NGINX (marshrut + limit + xederlar)

nginx http {
map $http_x_request_id $req_id { default $request_id; }
limit_req_zone $binary_remote_addr zone=per_ip:10m rate=20r/s;

server {
listen 443 ssl http2;
server_name api. example. com;

Security add_header Strict-Transport-Security "max-age = 31536000" always;
add_header X-Content-Type-Options nosniff;

Limit on IP location/api/v1/{
limit_req zone=per_ip burst=40 nodelay;
proxy_set_header X-Request-Id $req_id;
proxy_set_header X-Client-Ip $remote_addr;
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_pass http://payments_v1;
}

Canary traffic by header location/api/v2/{
if ($http_x_canary = "1") { proxy_pass http://payments_v2; }
proxy_pass http://payments_v1;
}
}
}

13. 2 Envoy (JWT, rate limit, retries, outlier)

yaml static_resources:
listeners:
- name: https address: { socket_address: { address: 0. 0. 0. 0, port_value: 443 } }
filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. network. http_connection_manager. v3. HttpConnectionManager route_config:
name: local_route virtual_hosts:
- name: payments domains: ["api. example. com"]
routes:
- match: { prefix: "/api/v1/payments" }
route:
cluster: payments_v1 timeout: 5s retry_policy:
retry_on: "connect-failure,refused-stream,5xx,retriable-status-codes"
num_retries: 2 per_try_timeout: 2s http_filters:
- name: envoy. filters. http. jwt_authn typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. http. jwt_authn. v3. JwtAuthentication providers:
main:
issuer: "https://auth. example. com/"
remote_jwks: { http_uri: { uri: "https://auth. example. com/.well-known/jwks. json" } }
forward: true rules:
- match: { prefix: "/api/" }
requires: { provider_name: "main" }
- name: envoy. filters. http. ratelimit
- name: envoy. filters. http. router clusters:
- name: payments_v1 connect_timeout: 0. 5s type: STRICT_DNS lb_policy: ROUND_ROBIN load_assignment: { cluster_name: payments_v1, endpoints: [{ lb_endpoints: [{ endpoint: { address: { socket_address: { address: payments, port_value: 8080 }}}}]}] }
outlier_detection: { consecutive_5xx: 5, interval: 5s, base_ejection_time: 30s }

14) Chek-varaqlar

Marshrutni chiqarishdan oldin

  • Autentifikatsiya sxemasi (JWT/JWKS, kalitlar, TTL kesh).
  • Taymautlar/retrajlar/idempotentlik sozlangan.
  • Limitlar: per-IP, per-key, per-route; sheriklar kvotalari.
  • Soʻrovlar/javoblar sxemasini validatsiya qilish.
  • ’trace-id’, PII niqobli loglar va trastirovkalar.
  • SLO/alertlar va dashbord.
  • Geo-qoidalar/komplayens/yoshi tekshirildi.

Operatsiyalar va to’lovlar

  • PSP aqlli routing: qoidalar, ustuvorliklar, feylover.
  • Same-method chetida tekshirilmoqda.
  • Mijoz uchun shaffof holatlar va xato kodlari (xom PSP kodisiz).

Relizlar

  • Canary/AB va kill-switch, qaytarish rejasi.
  • Yangi versiyadagi shadow-trafik, metriklarni taqqoslash.
  • Yuk sinovi va p95 maqsadlar.

15) Sifat metrikasi (minimal)

yo’nalishlar bo’yicha Availability/SLO; error rate 5xx/4xx.
Latency p50/p95/p99 (tashqi va ichki).
Retry/timeout/circuit hodisa (shovqin darajasi).
Cache hit-ratio va RPS tejash.
Rate-limit hits va bekor qilingan soʻrovlar.
PSP-routing KPIs: muvaffaqiyat, TtW, feylover foizi, komissiya.

16) Anti-patternlar

Bitta umumiy limit «hammasi uchun».
Jittersiz «tezkor» retralar (bo’ronning kuchayishi).
Ishonch’X-Forwarded-For’ishonchli proksi roʻyxatisiz.
Qattiq taymautlar p95 hisobga olinmagan holda (soxta ishga tushirishlar).
Uyg’unlikni buzadigan qattiq transformatsiyalar.
PII/PAN/sirli loglar.
Ichki va tashqi APIlarni bitta domen/siyosat bilan aralashtirish.

17) Javob va xato namunalari (microcopy)

429 Too Many Requests: "So’rovlar chegarasiga erishildi. N soniyadan keyin takrorlang yoki sherik kabinetidagi kvotani oshiring"

401/403: "Token haqiqiy emas/tugagan. Qayta kiriting"

408/504: "Xizmat kutilganidan uzoqroq javob beradi. Talab qabul qilinmadi"

Idempotency-conflict: «Bunday Idempotency-Key soʻrovi allaqachon qayta ishlangan (maqomi: muvaffaqiyat/muvaffaqiyatsizlik).»

18) Joriy etish jarayoni (qadamlar bo’yicha)

1. Yo’nalishlar modeli: domenlar/yo’llar/mintaqalar xaritasi.
2. Xavfsizlik siyosati: TLS/mTLS, WAF, authN/Z, kalitlar/JWKS.
3. Ishonchlilik: taymautlar, retryalar, idempotency, circuit-breaker.
4. Kuzatilishi: logi/metrika/treys, korelatsiya.
5. Kesh/perf: edge/micro-cache, kompresssiya, konnekt-pullar.
6. To’lov routingi: qoidalar, testlar, monitoring.
7. Relizlar: canary/shadow, kill-switch, qaytarish rejasi.
8. Komplayens/geo: mamlakatlar filtrlari, ma’lumotlarni saqlash, yoshi.

Yakuniy shpargalka

Qattiq perimetr (TLS/mTLS, WAF, limitlar) + boshqariladigan trafik (retray, circuit, canary).
Chetdagi validatsiya va transformatsiyalar → «ichkarida» kam nuqsonlar.
Trace-id va PII niqoblari bilan kuzatish - variant emas, balki standart.
Smart-routing to’lovlari va komplayens-geo iGaming uchun juda muhimdir.
Versionizatsiya va deprikatsiya siyosati - sheriklar uchun oldindan aytish mumkin.

Contact

Biz bilan bog‘laning

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

Telegram
@Gamble_GC
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.