GH GambleHub

API şlýuzy we marşrut

1) Arhitekturada API-şlýuzyň roly

API şlýuzy - serhetdäki (edge) L7 komponenti, ol:
  • gelýän traffigi kabul edýär (HTTP/HTTP2/HTTP3, WebSocket, gRPC);
  • düzgünleri boýunça ugrukdyrýar (host/path/headers/method/query/geo/agram/saglyk);
  • geçiş syýasatlaryny ulanýar: tassyklamak/ygtyýarlandyrmak, rate limiting, WAF, CORS, kesmek;
  • transformasiýalary ýerine ýetirýär (sözbaşylaryň/jisimleriň kadalaşmagy, gRPC, JSON, GraphQL stitching);
  • durnuklylygy üpjün edýär (timeouts, retries, circuit-breaker, outlier detection);
  • syn edilmegi we billing (loglar, metrikler, ýollar, kwotalar);
  • içerki topologiýany izolirleýär (service mesh, hususy hyzmatlar).

Köplenç jübütlerde ulanylýar: Edge/API-Gateway + Ingress/Mesh (Envoy/Istio/Linkerd) - birinjisi daşary syýasaty çözýär, ikinjisi - gündogar-günbatar.

2) Nusgawy topologiýalar

Bitewi global şlýuz (CDN/edge POP → L7 gateway → hyzmatlar) - ýönekeý, merkezleşdirilen syýasatçylar.
Sebit şlýuzlary (per-region) + geo/gizlinlik boýunça akylly marşrut.
Multi-tenant: bölünip berlen marşrutlar/subtomenler/açarlar, kärendeçi üçin kwotalar we çäklendirmeler.
Hybrid: on-prem + cloud, private link/peering, API şlýuzynyň aňyrsynda hususy yzlar.

3) Marşrut düzgünleri L7

Kriteriýalar:
  • Host/Path: `api. example. com` → `/v1/orders/`.
  • Headers: `X-Client`, `X-Region`, `User-Agent`, `Accept`.
  • Method/Content-Type: JSON/Proto/GraphQL.
  • Query/Fragment: seresaplylyk bilen - kese/wariantlara täsir edýär.
  • Geo/Latency: Iň ýakyn ROR/sebit, zaýalananda faýlower.
  • Weighted/Canary: 90/10, 50/50, sticky cookie.
  • Session affinity: açar/belgi boýunça hash-based (ulaldylanda seresap).
Mysal (NGINX Ingress, kanar agramy):
yaml nginx. ingress. kubernetes. io/canary: "true"
nginx. ingress. kubernetes. io/canary-weight: "10" # 10% traffic to new backend
Mysal (Envoy, header-based routing):
yaml match: { prefix: "/orders", headers: [{name: "X-Experiment", exact_match: "new"}] }
route: { cluster: orders-v2 }

4) Teswirnamalar we laýyklyk

REST/JSON - defolt, müşderileri tassyklamak/döretmek üçin OpenAPI-ni beýan ediň.
gRPC - HTTP/2 üstünde binar Proto; daşarky müşderiler üçin gRPC-JSON transcoding.
GraphQL - hyzmatlary jemleýär; perimetrde soraglaryň complexity/çuňlugyna gözegçilik ediň.
WebSocket/SSE - iki taraplaýyn/push; sticky we timeouts.
HTTP/2/3 (QUIC) - multiplekslemek/çalt başlamak; WAF/proxy bilen laýyklygyny barlaň.

5) Howpsuzlyk: tassyklamak we ygtyýarlandyrmak

5. 1 Ulag

TLS 1. 2 + perimetrde, HSTS, OCSP stapling, PFS.
mTLS B2B/içerki API we maşyn-maşyn üçin.
IP allowlist/denylist, geo-çäklendirmeler.

5. 2 Amaly dereje

OAuth2/OIDC: JWT bearer-tokenleri, goly/ekspirasiýany/diňleýjini barlamak.
NMAS/gollar: senesi + kanonlaşdyrylan setiri + goly (AWS-meňzeş) - çalyşmakdan, gaýtalamakdan goramak (nonce/wagt penjiresi).
API açarlary: diňe kesgitleýji hökmünde; hukuklar - RBAC/ABAC/satyn alyş arkaly.
CORS: aç-açan allow-origin, pre-flight kesh.
WAF: alamatlar (OWASP API Top 10), anormallik, bot goragy, rekursiw JSON meýdanlary.
DDoS/Abuse: connection limiting, token-bucket/Leaky bucket, berst + orta tizlik, dinamiki ban.

Mysal (Kong, OIDC we Limiter):
yaml plugins:
- name: oidc config: { issuer: "...", client_id: "...", client_secret: "...", scopes: ["orders. read"] }
- name: rate-limiting config: { minute: 600, policy: local }

6) Walidasiýa, transformasiýa we gabat gelmek

Shemalar: OpenAPI/JSON-Schema/Protobuf boýunça bedeniň/sözbaşylaryň/parametrleriň tassyklamasy.
Üýtgeşmeler: meýdanlaryň kadalaşmagy, PII maskalanmagy, baglanyşyk sözbaşylarynyň goşulmagy ('traceparent', 'x-request-id').
Wersiýa: 'Header: X-API-Version', prefiksler '/v1 ', çeşme-wersiýa; deprecation policy и Sunset.
Backward-compat: diňe add meýdany; täze wersiýa bolmazdan "döwýän" üýtgeşmelerden gaça duruň.
Idempotency: `Idempotency-Key` для POST; gateway TTL bilen Redis-de açarlary saklaýar.

7) Durnuklylyk: baglanyşyk syýasaty

Timeouts: connect/read/write; akylly defoltlar (mysal üçin, 1s/5s/5s).
Retries: diňe howpsuz we idempotent üçin; jitler, exponential backoff, iň köp synanyşyk.
Circuit breaker: ýalňyşlyk/gizlinlik ýüze çyksa açyň; half-open.
Outlier detection: howuzdan erbet ýagdaýlary aýyrmak.
Bulkhead/bäsdeşlik: bir wagtyň özünde per-route haýyşlaryna çäklendirmeler.
Failover: işjeň/passiw, zonal zaýalanma.
Shadow traffic: deňeşdirmek üçin V2 paralel V1 (jogapsyz) "çal" geçişi.

Mysal (Envoy circuit breaker):
yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 1024 max_pending_requests: 2048 max_retries: 3

8) Kesmek we öndürijilik

HTTP-кеш: `Cache-Control`, `ETag/If-None-Match`, `Vary`, `stale-while-revalidate`.
Edge-keshler/ROR: Statika we "kesişýän" API (idempotent GET) üçin CDN.
Compression: 'gzip/br' (eýýäm gysylan zady gysmaň).
Request collapsing ("coalescing"): birmeňzeş paralel soraglary birleşdirmek.
Response shaping: meýdanlar/süzgüçler, paginasiýa (cursor-based), ululyk çäkleri.

9) Gözegçilik etmek we peýdalanmak

Метрики: `l7_req_total{route,method,code}`, `latency_ms{p50,p95,p99}`, `upstream_errors`, `retry_count`, `cb_state`, `429_rate`, `quota_usage{tenant}`.
Loglar: gurluş, 'trace _ id/span _ id', 'user _ id/tenant _ id', 'client _ ip'.
Söwda: W3C Trace Context ('traceparent', 'tracestate'), akymlara wagyz ediň.
Audit: kim näme, haýsy hukuklar bilen çagyryldy; duýgur API üçin üýtgemeýän ammar.
SLO/SLA: p99 maksatly, ýalňyşlyk býudjeti; rout derejesi global derejeden has gowudyr.

10) Geçiriş ukybynyň meýilnamasyny dolandyrmak

Quota per-tenant/açar/müşderileriň howzy, min/sagat/günde.
Burst + sustained limitleri; tekizlemek üçin leaky bucket.
Fairness: artykmaç ýüklenende - "ilkinji duşuşan" ýerine fair queuing.
Ileri tutulýan ugurlar: ileri tutulýan we bölünip berlen howuzly ulgamlaýyn/möhüm ugurlar.

11) Üýtgetmeleri dolandyrmak we goýbermek

Canary/Blue-Green: agram ugry; SLO boýunça awtomatiki öňe gidişlik (ýalňyşlyklar/gizlinlik).
Feature gates/backend baýdaklar: sözbaşy/token boýunça goşulýar.
Shadowing/diff-validatorlar: jisimleri/statuslary deňeşdirmek, deltada rugsat bermek.
Nyşanlar: saýlanan domenler/ýollar ('staging. api... '), aýry-aýry açarlar we kwotalar.

12) Konfigurasiýa mysallary

12. 1 NGINX - çäk we nagt pul bilen esasy gateway

nginx map $http_x_request_id $reqid { default $request_id; }

limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

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

security add_header Strict-Transport-Security "max-age = 31536000" always;

location /v1/ {
limit_req zone=perip burst=30 nodelay;
proxy_set_header X-Request-ID $reqid;
proxy_set_header Authorization $http_authorization;
proxy_connect_timeout 1s;
proxy_read_timeout 5s;

proxy_cache api_cache;
proxy_cache_valid 200 10s;
proxy_cache_use_stale error timeout updating;
proxy_pass http://orders-v1;
}
}

12. 2 Envoy - tereziler we retralar boýunça marşrut

yaml routes:
- match: { prefix: "/orders" }
route:
weighted_clusters:
clusters:
- name: orders-v1 weight: 90
- name: orders-v2 weight: 10 retry_policy:
retry_on: "5xx,reset,connect-failure"
num_retries: 2 per_try_timeout: 2s

12. 3 Traefik - midlwarlar we hederler

yaml http:
middlewares:
secHeaders:
headers:
stsSeconds: 31536000 contentTypeNosniff: true routers:
api:
rule: "Host(`api. example. com`) && PathPrefix(`/v1`)"
service: svc-orders middlewares: ["secHeaders"]

13) Anti-patternler

Hemmeler üçin bir global çäk - "gowy goňşular" "şowhunly" sebäpli ejir çekýärler.
Idempotentlik bolmazdan retraýlar → iki gezek effektler (tölegler, jandarlary döretmek).
'timeout '/' max body size' → ýapyşmak/workerleriň tükenmegi.
Şlýuzda edge syýasatlaryny we işewürlik logikasyny garyşdyrmak (perimetri agyrlaşdyrmak).
Shemalary tassyklamagyň ýoklugy → müşderileriň gowşaklygy we "döwýän" goýberişler.
Ýalaňaç WebSocket, auth/limitleri/idle-taýmyny hasaba almazdan.
Aýlawsyz sözbaşylardaky syrlar; içerki B2B-de mTLS ýoklugy.

14) Game Days (Game Days)

Soraglaryň tupany: barlag limiter/quota, 429-hereket, zaýalanma.
Bir klasteriň ýitmegi: failover/artykmaç agram; SLO kanaryek.
Agyr jogaplar: max body/timeouts; birleşmeleri kesmek.
Sanjymlar/anomaliýalar: WAF düzgünleri, rekursiw JSON gadaganlygy, GraphQL-iň uly çuňlugy.
Tracking şowsuzlygy: 'traceparent' propagandasyny we semplemäni barlamak.
Syrlar: Açarlaryň aýlanmagy/JWKS, bellikleriň gutarmagy, clock-skew kabul edilmegi.

15) Girizmegiň çek-sanawy

  • OpenAPI/Proto tarapyndan çap edilen domenler/ýollar/wersiýalar kesgitlenildi.
  • TLS/mTLS, HSTS, gizlin dolandyryş we aýlanyş sazlandy.
  • Tassyklamak (OIDC/HMAC), RBAC/satyn almak, CORS goşuldy.
  • per-tenant çäkleri/kwotalary, adalatly nobatlar, 429-UX.
  • Terazi/sözbaşy boýunça ugrukdyryş, kanareýalar we rollback meýilnamasy.
  • Syýasatlar timeout/retry/circuit-breaker/outlier.
  • Shemalary tassyklamak, üýtgetmek, gizlemek PII.
  • Edge-кеш/ETag, coalescing, gzip/br.
  • Syn edilişi: metrikler, çukurlar, ýollar, daşbordlar we alertler.
  • Runbooks: wakalar, açar aýlanmagy, blok sanawlary, "gara anna".

16) FAQ

Q: API şlýuzy hyzmat haltasyndan nähili tapawutlanýar?
A: Şlýuz - demirgazyk-günorta (daşarky perimetri, aşa syýasatçylar). Mesh - gündogar-günbatar (klaster içindäki baglanyşyk/MTLS/retralar). Köplenç bilelikde ulanylýar.

Q: Nirede satmaly auth: şlýuzda ýa-da hyzmatlarda?
A: Iki dereje: şlýuz - coarse-grained (tassyklama, esasy hukuklar/kwotalar), hyzmat - fine-grained (domen rollary/atributlar).

Q: gRPC-JSON transcoding haçan gerek?
A: Haçan-da içerki gRPC, daşarky bolsa REST/JSON we ýönekeý müşderiler/brauzerler talap edilýär.

Q: Wersiýalaşdyrmak strategiýasyny nädip saýlamaly?
A: Köpçülige açyk API üçin - ýol '/vN '+ depriwasiýa sözbaşylary we uzak aralyk. Içerki üçin - capability-baýdaklar/gabat gelmek shemasy.

17) Netijeler

API şlýuzy diňe bir "proksik" däl, eýsem syýasatyň we durnuklylygyň merkezidir. Dogry marşrut, howpsuzlyk, çäkler, tassyklama we syn etmek goýberilişleriň öňünden aýdylýandygyny we tizligini üpjün edýär. Edge-şlýuzy hyzmat torbasy bilen birleşdiriň, kanareýalary we kwotalary awtomatlaşdyryň, şowsuzlyklary synagdan geçiriň - perimetri çüýşe bokurdak däl-de, tizlendiriji bolar.

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.

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