GH GambleHub

API դարպաս և միկրոավտիզացիա

1) API դարպասի դերը ճարտարապետության մեջ

API-դարպասը L7 բաղադրիչն է սահմանին (edge), որը

մուտքագրող (HTTTP2/HTTP3, Master Socket, gRPC);

անցնում է կանոններով (host/path/headers/method/query/geo/քաշի/առողջության);

օգտագործում է քաղաքական գործիչներ 'վավերացում/հեղինակային, rate limiting, WAF, SNS, կեշինգ;

կատարում է փոխակերպումներ (վերնագրերի/մարմինների նորմալացում, gRPC no JSON, GraphQL stitching);

ապահովում է կայունություն (timeouts, retries, circuit-breaker, medier detae);

տալիս է դիտարկումը և բիլինգը (լոգներ, մետրեր, հետքեր, քվոտաներ);

ակտիվացնում է ներքին տեղաբանությունը (www.mesh, մասնավոր ծառայություններ)։

Հաճախ օգտագործվում է զույգում 'Edge/API-Gateway + Ingress/Mesh (Envoy/Istio/Linkerd) - առաջինը լուծում է արտաքին քաղաքականությունը, երկրորդը' east-west։

2) Տիպիկ տեղաբանություններ

Միակ գլոբալ դարպասը (CDN/edge POP no L7 gateway ռուսական ծառայություններ) պարզապես կենտրոնացված քաղաքականություններ են։

Տարածաշրջանային կողպեքները (per-region) + խելացի միկրոօրգանիզացիա գեո/լատենտ։

Multi-tena.ru: Ընտրված/ենթաբաժիններ/բանալիներ, քվոտաներ և սահմանափակումներ վարձողի վրա։

Hybrid: on-24m + cloud, private link/peering, մասնավոր backends API դարպասի համար։

3) L7 ուղղորդման կանոնները

Չափանիշները

Host/Path: `api. example. com` → `/v1/orders/`.
Headers: `X-Client`, `X-Region`, `User-Agent`, `Accept`.

Method/Content-Type: JSON/Delo/GraphQL տարբերությունը։

Query/Fragram: Զգուշորեն ազդում է քեշ/տարբերակների վրա։

Geo/Latency: ամենամոտ ROR/տարածաշրջանը, failover դեգրադացիայի ժամանակ։

Weighted/Canary: բաշխումը 90/10, 50/50, sticky cookie-ով։

Session affinity: hash-based բանալին/tokena (կոկիկ մասշտաբով)։

Օրինակ (NGINX Ingress, կանարյան քաշը)

yaml nginx. ingress. kubernetes. io/canary: "true"
nginx. ingress. kubernetes. io/canary-weight: "10" # 10% traffic to new backend

Օրինակ (Envoy, header-based routing)

yaml match: { prefix: "/orders", headers: [{name: "X-Experiment", exact_match: "new"}] }
route: { cluster: orders-v2 }

4) Արձանագրություններ և համատեղելիություն

REST/JSON - դեֆոլտ, նկարագրել OpenAPI-ը/հաճախորդների վալիդացիայի համար։

GRPC-ն binar Coro-ն է HTTP/2-ի վերևում։ արտաքին հաճախորդների համար օգտագործեք gRPC-JSON transcoding։

GraphQL-ը համախմբում է ծառայությունները։ պարագծի վրա վերահսկեք complexity/հարցումների խորությունը։

Windows Socket/SSE - երկբևեռ/2019; հաշվի առեք sticky և timeouts։

HTTP/2/3 (QUIC) - բազմաբնույթ/արագ մեկնարկը; WAF/2019-ի հետ համատեղելիությունը։

5) Անվտանգություն 'վավերացում և հեղինակային իրավունք

5. 1 Տրանսպորտ

TLS 1. 2 + պարագծի վրա, HSTS, OCMS stapling, PSA։

MTSA-ի համար V2V/ներքին API և մեքենաներ-մեքենա։

IP allowlist/denylist, գեո սահմանափակումներ։

5. 2 Կիրառական մակարդակ

OAuth2/OIDC: bearer-tocens JWT, ստորագրության/էքսպիրացիայի/լսարանի ստուգում։

NMAS/ստորագրություն '+ կանոնականացված տող + ստորագրություն (AWS նման) - պաշտպանություն փոխարինումից, կրկնօրինակից (nonce/time պատուհան)։

API բանալիներ 'միայն որպես ռուսական; իրավունքները 'RBAC/ABAC/սկաուտների միջոցով։

SYS 'ակնհայտ allow-origin, pre-flit kash։

WAF: ազդանշաններ (OWASP API Top 10), անորմալիա, բոտ պաշտպանություն, ռեկուրսիվ JSON դաշտեր։

DDoS/Abuse: connational limiting, token-bucket/Leaky bucket, բերստ + միջին արագություն, դինամիկ բանա։

Օրինակ (Kong, OIDC և limiter)

yaml plugins:
- name: oidc config: { issuer: "...", client_id: "...", client_secret: "...", scopes: ["orders. read"] }
- name: rate-limiting config: { minute: 600, policy: local }

6) Վալիդացիան, փոխակերպումը և համատեղելիությունը

Սխեմաներ ՝ մարմնի/վերնագրերի/OpenAPI/JSON-Schema/Delobuf։

Փոխակերպումներ 'դաշտերի նորմալացում, PII դիմակավորում, հարաբերական վերնագրերի ավելացում («traceparent», «x-request-id»)։

Տարբերակումը '«Header: X-API-Version», «/v1 », ռեսուրս-տարբերակումը; deprecation policy и Sunset.

Backward-compat: միայն add դաշտը; խուսափեք «կոտրող» փոփոխություններից առանց նոր տարբերակի։

Idempotency: `Idempotency-Key` для POST; gateway-ը պահում է Redis-ում TTL-ի հետ։

7) Կայունություն ՝ քաղաքականություններ

Timeouts: connect/read/write; խելացի դեֆոլտներ (օրինակ ՝ 1s/5s/5s)։

Retries 'միայն անվտանգ և կուռքերի համար։ Ջիթթեր, exponential backoff, առավելագույն փորձեր։

Circuit breaker 'բացել սխալների/լատենտության դեպքում։ half-open փորձարկման համար։

Medier deta.ru-ը 'փամփուշտից վատ ինանսների դուրսբերումը։

Bulkhead/մրցակցություն 'սահմանափակումներ per-rope միաժամանակ հարցումների համար։

Failover: ակտիվ/պասիվ, զոնալ քայքայումը։

Shadow traffic: «մոխրագույն» progon V2 զուգահեռ V1 (առանց ազդեցության) համեմատության համար։

Օրինակ (Envoy circuit breaker)

yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 1024 max_pending_requests: 2048 max_retries: 3

8) Քեշինգը և արտադրողականությունը

HTTP-кеш: `Cache-Control`, `ETag/If-None-Match`, `Vary`, `stale-while-revalidate`.

Edge-keshi/ROR: CDN կարգավիճակի և API-ի համար (idempotent GET)։

Compression: «gzip/ww.ru» (մի սեղմեք արդեն սեղմված)։

Request collapsing («coalescing»), նույն զուգահեռ հարցումների համադրություն։

Response shaping: դաշտեր/ֆիլտրեր, պագինացիա (cursor-based), չափի լիմիտներ։

9) Դիտողությունն ու շահագործումը

Метрики: `l7_req_total{route,method,code}`, `latency_ms{p50,p95,p99}`, `upstream_errors`, `retry_count`, `cb_state`, `429_rate`, `quota_usage{tenant}`.

Logs: կառուցվածքային, «trace _ id _ id», «user _ id/tenrone _ id», «client _ ip»։

Թրեյզները ՝ W3C Trace Disext («traceparent», «tracestate»), անհետացեք ապստրիմայում։

Աուդիտ 'ով է առաջացրել, թե ինչ իրավունքներով։ անփոփոխ դեղամիջոցներ զգայուն API-ի համար։

SLO/SLA: 24p99, սխալների բյուջե։ Ռութ մակարդակը ավելի լավ է, քան գլոբալ։

10) Աշխատանքային կարողությունների պլանի կառավարումը

Delta per-ten.ru/բանալին/հաճախորդների փամփուշտը, մինի/ժամ/օր։

Burst + sustained limita; leaky bucket-ի համար։

Fairness: ծանրաբեռնվածության դեպքում 'fox queuing-ը «առաջին հանդիպողի» փոխարեն։

Առաջնահերթություններ ՝ 108/քննադատական երթուղիներ առաջնահերթությամբ և ընտրված փամփուշտներով։

11) Փոփոխությունների և օրինագծերի կառավարումը

Canary/Blue-Green: Քաշային միկրոակտիվացում; ավտոմատ առաջխաղացում SLO (սխալներ/լատենտ)։

Feature gates/backend-դրոշները 'վերնագիր/tokena։

Shadowing/71-վալիդատորներ 'մարմինների/ստատուսների համեմատություն, ընդունիր դելտա։

Սթեյջինգներ 'ընտրված ֆորումներ/ճանապարհներ («staging»)։ ... api '), առանձին բանալիներ և քվոտաներ։

12) Միգրացիայի օրինակներ

12. 1 NGINX-ը հիմնական 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 - քաշի և գետերի միկրոակտիվացում

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 - midlwary և heders

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-patterna

Մեկ գլոբալ սահմանը բոլորի վրա '«լավ հարևանները» տառապում են աղմուկի պատճառով։

Retrai առանց idempotenty-ը պարունակում է էֆեկտներ (վճարումներ, էակներ)։

Անտեսելով «timeout »/« max body size» կախվածությունը/workers սպառումը։

Edge-քաղաքական և բիզնես տրամաբանության խառնուրդը դարպասի մեջ (պարագծի քաշումը)։

Սխեմաների վալիդացիայի բացակայությունը բացատրում է հաճախորդների փխրունությունը և «կոտրող» օրինագծերը։

Մերկ Black Socket-ը բացառությամբ auth/limits/idle-tima։

Գաղտնիքները վերնագրերում առանց ռոտացիայի; mTSA բացակայությունը ներքին B2B-ում։

14) Թեստային պլեյբուկները (Game Days)

Հարցումների փոթորիկը 'limiter/winta ստուգումը, 429 վարքագիծը, դեգրադացիան։

Մեկ միգրանտների կորուստը 'failover/քաշի կրճատում; SLO kanarek.

Բարդ պատասխաններ ՝ max body/timeouts; կրճատումը։

Միգրացիաներ/անոմալիաներ ՝ WAF կանոնները, rexurival JSON-ի արգելքը, GraphQL-ի մեծ խորությունները։

Ուղու ձախողումը '«traceparent» և սերմերի քարոզչության ստուգումը։

Գաղտնիքները ՝ կոդավորման/JWKS-ի լուծարումը, հոսանքների մաքրումը, clock-skew-ը։

15) Ներդրման չեկի ցուցակ

  • Որոշված են օրինագծերը/ճանապարհները/տարբերակները, որը հրապարակվել է OpenAPI/Delo-ի կողմից։
  • TFC/mTSA, HSTS, գաղտնի կառավարումը և լուծումը։
  • Ներառում է վավերացում (OIDC/HMAC), RBAC/սկուտերներ, SNS։
  • Limits/քվոտաներ per-tenae, արդար գծեր, 429-UX։
  • Ծանրաբեռնվածություն/վերնագրեր, կանարյան պլան և rollback։
  • Timeout/retry/circuit-breaker/medier։
  • Սխեմաների, փոխակերպման, PII դիմակավորում։
  • Edge-кеш/ETag, coalescing, gzip/br.
  • Դիտարկումը 'չափումներ, լույսեր, հետքեր, դաշույններ և ալերտներ։
  • Runbooks: Միջադեպեր, միգրացիայի վերացում, բլոկային թերթիկներ, «սև ուրբաթ»։

16) FAQ

Q 'Ինչպե՞ ս է API-նավը տարբերվում մեշի ծառայությունից։

A 'Glaze - north-south (արտաքին պարիմետրը, քաղաքականության միջոցով)։ Մեշը east-west է (MTSA/retrai)։ Հաճախ օգտագործվում են միասին։

Q 'Որտե՞ ղ իրականացնել auth' դարպասի կամ ծառայությունների մեջ։

A 'Երկու մակարդակները' դարպասը 'coarse-grained (վավերացում, հիմնական իրավունքները/քվոտաները), ծառայությունը' fine-grained (հիբրիդային դերեր/ատրիբուտներ)։

Q: Ե՞ րբ է անհրաժեշտ gRPC-JSON transcoding։

A: Երբ ներքին gRPC-ն է, իսկ արտաքին պահանջվում է REST/JSON և պարզ հաճախորդներ/զննարկիչներ։

Q 'Ինչպե՞ ս ընտրել տարբերակման ռազմավարությունը։

A 'Հանրային API-ի համար' "/vN '+ վերնագիր և երկար overlap։ Ներքին համար 'capability դրոշներ/կոդավորման սխեմա։

17) Արդյունքները

API-դարպասը ոչ միայն «պրոեկցիա» է, այլ քաղաքական և կայունության կենտրոն։ Ճիշտ միկրոօրգանիզացիան, անվտանգությունը, լիմիտները, վալիդացիան և դիտարկումը տալիս են ածխաջրածինների կանխատեսելիությունը և արագությունը։ Փորձարկեք ձեր արագացուցիչը, ոչ թե շիշը։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։