API дарвоза ва масир
1) Нақши дарвозаи API дар меъморӣ
Дарвозаи API як нуқтаи ягонаи воридшавӣ ба microservices мебошад. Оё ӯ:- Дархости хатсайрҳо (аз рӯи роҳ/сарлавҳа/гео/вазн/версия).
- Периметрро муҳофизат мекунад (TLS/MTLS, WAF, DD moyo
- Трафикро назорат мекунад (канарӣ/AB, соя/оина, сими барқ, ретрас, танаффус).
- Стандартикунонии протоколҳо (REST/GRPC/Web-Socket), сарлавҳаҳо, рамзҳо.
- Мушоҳидаҳо (гузоришҳо, ченакҳо, пайҳо, таносуб).
- Дигаргуниҳо ва тасдиқҳо (JSON/XML, нормализатсия, санҷиши схема).
Барои IGaming, он инчунин мутобиқати гео (бастани кишвар/синну сол), масири пардохти оқилона ва сиёсати масъули бозӣ дар канор аст.
2) Имконоти масир
Роҳ ба роҳ: '/api/v1/payments/→ payments-svc '.
Мизбон: 'eu. апи. намуна. com → eu-edge ',' psp. намуна. com → psp-proxy '.
Сарлавҳа: 'X-Client: partner-A' → шарики пуштибонӣ; 'Қабул кунед: ариза/grpc'.
Масири гео-масир: аз ҷониби IP/ASN/кишвар (GDPR/мамнӯъиятҳои маҳаллӣ, ниҳонӣ).
Вазн/Канарӣ: '90%' дар кӯҳна, '10%' дар версияи нав; зуд баргаштан.
Масири даъво: po 'JWT. даъво мекунад. сатҳ/нақш/минтақа '(масалан, маҳдудиятҳои баланд-ғалтак → мукофоти).
Нокомӣ: масъулияти дороиҳо/дороиҳо дар байни маркази додаҳо/абр ва PSP.
3) Амнияти периметрӣ
TLS дар ҳама ҷо: TLS 1. 2 + дар намуди берунӣ, m 'TLS дар дохили (shlyuz↔servisy).
OAuth2/JWT: санҷиши имзо, аудити 'exp/nbf/aud/scope', гардиши JWKS; кэши тасдиқкунӣ бо TTL.
HMAC: Имзои бадан барои webhooks/пардохтҳо.
Калидҳои API: барои муштариёни система; шарик бо квотаҳо/нақшҳо.
WAF: қоидаҳои асосӣ (тазриқ, аномалияҳои протокол), андозаи бадан, рӯйхати кишварҳоро рад мекунад.
Муҳофизати DD mocop: маҳдудияти пайвастшавӣ, кукиҳои SYN, меъёри маҳдудият дар IP/калид/нуқтаи ниҳоӣ.
Zero-Trust: сиёсати ҳатмӣ (SPIFFE/SPIRE, шахсияти хидматҳо), принсипи ҳуқуқҳои камтарин.
Махфият: таҳрири PII дар гузоришҳо, ниқоби PAN/IBAN, сиёсати нигаҳдорӣ.
4) Маҳдудиятҳо, квотаҳо ва муҳофизат аз таркишҳо
Моди: сатил токен, сатил ихроҷ, тирезаи собит/лағжанда.
Сарҳадҳо: барои як IP, барои як калид, барои як корбар, барои як масир.
- Burst + устувор (масалан, '50 rps burst', '10 rps устувор').
- Муҳофизати Retry-Budget ва Slow-Loris (танаффуси хондан).
- Квота аз рӯи рӯз/моҳ барои шарикон.
5) Тағирот ва тасдиқкунӣ
Ба эътидол овардани сарлавҳаҳо (пайгирӣ-id, locale, id-id).
Дархост/Ҷавоб-харитасозӣ.
Тасдиқи схема (Schema OpEN/JSON Schema) пеш аз proxying - нокомии барвақти 4xx.
Фишурдасозӣ/' Қабул-рамзгузорӣ ', кэш (ба зер нигаред).
6) Кэш ва иҷро
Кэши канорӣ барои феҳристҳо, метамаълумоти ҷамъиятӣ, конфигуратсияҳо (TTL, 'ET' ag '/' If-None-Match ').
Микро-кэш 1-5 с барои GET гарм (сарбории баландро кам мекунад).
Манфӣ-кэш кӯтоҳ (дар 404/холӣ) - эҳтиёт.
Хеджинг-дархостҳо ва дархостҳои рақобатӣ барои нусхабардорӣ дар ҳадди p95>.
7) Вақтсанҷӣ, ақибнишинӣ, устуворӣ
Вақтсанҷҳо: алоҳида пайваст/хондан/навиштан; p95-нишонаҳои оқилона.
Retrai: усулҳои idempotent (GET/PUT) бо backoff + jitter; дубора буҷет.
Idempotency POST: 'Idempotency-Key' + deduplication service/gateway.
Circuit-Breaker: бо хатогиҳо/ниҳонӣ; мурофиаи нимтайёр.
Bulkhead/Ҷудокунии ҳавз аз ҷониби болооб.
8) Версия ва мутобиқат
Усулҳо:- URI: '/v1/... '(хатсайрҳои оддӣ, вале "ғавғо").
- Сарлавҳа/мундариҷа-гуфтушунид: 'Қабул кунед: ариза/внд. апп. v2 + json '.
- Хусусиятҳои парчамҳо/қобилияти сервер - барои мутобиқати ночиз.
Сиёсат: Sem-Ver, равзанаи дастгирӣ (масалан, 'v1' = 12-18 моҳ), ҷадвали депрессия, посухҳои мувофиқ барои васеъшавӣ (илова кардани майдонҳо вайрон намешавад).
9) Назорат ва назорати сифат
Таносуб: 'traceparent '/' x-request-id' лозим аст; мо онро мепартоем.
Open: Telemetry: RPS/p50/p95/p99/5xx/4xx, пуррагӣ, ченакҳои такрорӣ/ноҳиявӣ.
Гузоришҳо: JSON сохторӣ; пинҳон кардани PII; сатҳҳо аз рӯи рамз.
Интихоби пайгирӣ: ҳадафи асосӣ 5-10% + барои хатогиҳо/суст.
SLO/огоҳиҳо: аз ҷониби хатсайрҳо/мизоҷон (вақти корӣ, таъхир, хатогӣ).
10) Озод кардани идоракунии трафик
Гузариши кабуд-сабз DNS/LB.
Канария: ҳиссаи вазн/сегментҳо (минтақа, шарик, нақш).
Соя/Зеркало: нусхаи трафик ба версияи нав бидуни посух ба муштарӣ.
Kill-switch: парчам барои зуд хомӯш кардани мушкилоти болооб/хусусият.
11) Масири хатсайрҳои пардохтӣ (IGaming)
Қоидаҳои интихоби PSP: гео, асъор, маблағ, меъёри хавф, мавҷудият, комиссия.
PSP Failover: гузариши худкор дар '5xx/timeout'.
Қоидаи якхела: бо усули аслӣ бармегардад/мебарояд - дар канор санҷед.
ID пардохт: калид дар 'корбар + маблағ + асъор + мақсад'.
Шаффофияти ETA: дарвоза вазъият ва сабабҳои нокомиро илова мекунад (на рамзҳои PSP).
12) Сиёсати байниминтақавӣ ва риояи
Филтрҳои гео-филтрҳо: рӯйхати сафед/сиёҳи кишварҳо, маҳдудиятҳои синну сол, диапазони IP.
Маълумоти сокинон: масир ба кластерҳои минтақавӣ (GDPR/қонунҳои маҳаллӣ).
Гузоришҳо ва TTL: нигоҳдорӣ аз рӯи минтақа, беном кардани автоматӣ.
13) Намунаҳои конфигуратсия
13. 1 NGINX (масир + лимит + сарлавҳа)
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 Фиристанда (JWT, меъёри нарх, такрорӣ, берунӣ)
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) Рӯйхати санҷишҳо
Пеш аз озод кардани масир
- Нақшаи аутентификатсия (JWT/JWKS, калидҳо, кэши TTL).
- Вақтсанҷӣ/Бозсозӣ/Идентификатсия танзим карда мешавад.
- Маҳдудиятҳо: барои як IP, барои як калид, дар як масир; квотаҳои шарикӣ.
- Тасдиқи нақшаи дархост/посух.
- Гузоришҳо ва нишонаҳо бо 'пайгирӣ-id', ниқобҳои PII.
- SLO/огоҳиҳо ва панели назоратӣ.
- Қоидаҳои гео/мувофиқат/синну сол тафтиш карда мешаванд.
Амалиётҳо ва пардохтҳо
- Масири оқилонаи PSP: Қоидаҳо, афзалиятҳо, Feilover.
- Усули якхела дар канор тафтиш карда мешавад.
- Ҳолати шаффоф ва рамзҳои хатогӣ барои муштарӣ (рамзи PSP хом нест).
Нашрияҳо
- Canary/AB ва kill-switch, нақшаи бозгашт.
- Трафики соя ба версияи нав, муқоисаи ченакҳо.
- Санҷиши сарборӣ ва ҳадафҳои p95.
15) Нишондиҳандаҳои сифат (ҳадди аққал)
Дастрасӣ/SLO аз рӯи хатсайрҳо; сатҳи хатогӣ 5xx/4xx.
Latency p50/p95/p99 (беруна ва дохилӣ).
Ҳодисаҳои такрорӣ/вақт/гардиш (сатҳи садо).
Хит-таносуби кэш ва пасандозҳои RPS.
Хитҳои меъёрӣ ва дархостҳои коҳишёфта.
PSP-масирдиҳии KPI: муваффақиятҳо, TTW, фоизи feilover, комиссия.
16) Анти-намунаҳо
Як маҳдудияти умумӣ "барои ҳама".
Рафъи "фаврӣ" бидуни ҷиттер (шиддатнокии тӯфон).
Боварӣ ба 'X-Forwarded-For' бидуни муқаррарот ва рӯйхати боэътимоди прокси.
Вақтсанҷҳои сахт ба истиснои p95 (мусбатҳои бардурӯғ).
Дигаргуниҳои сахт, ки мутобиқатро вайрон мекунанд.
Сабтҳо бо PII/PAN/асрори.
API дохилӣ ва беруниро дар ҳамон домен/сиёсат омехта кунед.
17) Намунаҳо ва хатогиҳои вокуниш (микрокопия)
429 Дархостҳои аз ҳад зиёд: "Маҳдудияти дархост расид. Дар сонияҳои N такрор кунед ё квотаро дар дафтари шарик зиёд кунед"
401/403: "Токен беэътибор аст/ба охир мерасад. Лутфан дубора ворид шавед"
408/504: "Хизматрасонӣ аз вақти пешбинишуда дарозтар ҷавоб медиҳад. Дархост қабул карда нашуд"
Ихтилофи Idempotency: "Дархост бо ин Idempotency-Key аллакай баррасӣ шудааст (мақом: муваффақият/нокомӣ)".
18) Раванди амалисозӣ (қадамҳо)
1. Модели масир: харитаи домейн/роҳ/минтақа.
2. Сиёсатҳои амниятӣ: TLS/MTLS, WAF, authn/Z, калидҳо/JWKS.
3. Эътимоднокӣ: танаффус, бозсозӣ, номутаносибӣ, схема.
4. Мушоҳида: гузоришҳо/ченакҳо/пайгирӣ, таносуб.
5. Кэш/перф: канор/микро-кэш, фишурдасозӣ, ҳавзҳои пайвастшавӣ.
6. Масири пардохт: қоидаҳо, санҷишҳо, мониторинг.
7. Варақаҳо: канарӣ/соя, куштан-гузариш, нақшаи бозгашт.
8. Мувофиқат/гео: филтрҳои кишвар, нигоҳдории маълумот, синну сол.
Варақаи ниҳоии фиреб
Периметри қатъӣ (TLS/m: TLS, WAF, маҳдудиятҳо) + трафики идорашаванда (ретрай, схема, канария).
Санҷиш ва тағирот дар канори § аз камбудиҳои "дарун" камтаранд.
Мушоҳида бо ниқобҳои пайгирӣ ва PII интихоб нест, балки стандарт аст.
Масири хатсайрҳои пардохти оқилона ва гео мутобиқат барои IGaming муҳим мебошанд.
Сиёсати амудӣ ва маҳрумкунӣ - пешгӯишаванда барои шарикон.