Tehnologiýa we infrastruktura → Latency we API jogabyny optimizirlemek
Latency we API jogabyny optimizirlemek
1) "latency" näme we näme üçin möhümdir
Latency - soragyň umumy gijikdirilmegi: tor (DNS + TCP + TLS + RTT), balanslaýjy/şlýuz, programma, DB/nagt pul/nobatlar, daşarky integrasiýa. Iş üçin orta däl-de, P95/P99 möhümdir: UX, CR we SLO-ny ýok edýän "guýruk".
Esasy SLI:- 'SLI _ latency _ P95 = P95 (jogap wagty)' 5/30 minutda
- 'SLI _ latency _ P99 = P99 (jogap wagty)'
- 'SLI _ queue _ time = P95 (_ workeriň _ nobatyndaky _ wagt)'
- 'SLI _ ext _ call _ P95 = P95 (daşarky _ üpjün edijileriň gizlinligi)'
2) Gijä galmagyň çeşmeleriniň kartasy (we nirä gazmaly)
1. Tor we protokollar: DNS, TCP handshakes, TLS, head-of-line (HTTP/1. 1), paketleriň ýitmegi, BBR/ECN.
2. Şlýuz/balanslaýjy: haýal health-check, pes wagtlar, gyzgyn podlar.
3. Programma: blokirleme, GC/stop-the-world, sinhron I/O, contention.
4. Ammar: haýal DB soraglary, indeksleriň ýoklugy, sowuk sahypalar.
5. Daşarky hyzmatlar: PSP/KYC, üçünji tarap API (dar SLA).
6. Nobatlar we fon joblary: artykmaç ýüklenen workerler, backpressure ýok.
7. Keş/edge: keş ýalňyşlyklary, gowşak TTL, pes maýyplyk.
3) Tor we teswirnamalar
3. 1 DNS/TCP/TLS
DNS prefetch/preconnect öň tarapda, uzak ömürli IP PSP.
Müşderilerde Keep-Alive/connection pooling; serwerde - baglanyşyklary birleşdiriň.
TLS: resumption/Session Tickets, häzirki zaman şifrler bukjasy; howply dempotent amallary üçin 0-RTT gaça duruň.
TCP: söhbetdeşlikler/kiçi paketler üçin Nagle ('TCP _ NODELAY') öçüriň; tune 'initial window', BBR-ni ýerlikli ýerde açyň.
3. 2 HTTP/2 и HTTP/3
HTTP/2: multiplekslemek HOL-blokirlemäni HTTP/1. 1; akymlaryň ileri tutulýan ugurlaryna gözegçilik ediň.
HTTP/3/QUIC: ýitgileriň täsiri aşakda/RTT; ykjam/halkara ulgamynda peýdaly.
Header compression: HPACK/QPACK, ýöne sözbaşy ululygyny saklaň.
3. 3 Deňagramlylyk/marşrut
Locality-aware (zonallyk), EWMA/least-request "gyzgyn" ýagdaýlara garşy.
Sessiýalaryň ýapyşmagy - diňe state bar bolsa; otherwiseogsam stateless + umumy kesh/sessiýa.
4) Formatlar, peýdaly ýük, gysyş
Gysyň: Brotli (tekst), Gzip fallback; ikili formatlar: gRPC/içerki API üçin Protobuf/Euro.
Payload azaldyň: saýlama meýdanlar ('fields =...'), paginasiýa, şertli GET (ETag/If-None-Match), delta-jogaplar.
GraphQL: persisted queries, "ýagly" böleklere gadaganlyk, çuňluk we kynçylyk çäkleri.
N + 1-den gaça duruň: joýnlar/prekompozisiýa, agregatlar üçin batch-endpointler.
5) Taýmautlar, retralar, idempotentlik
Zynjyr boýunça wagtlar: müşderi <şlýuz <appa <ammar/daşarky kynçylyk.
Diňe wagtlaýyn ýalňyşlyklar üçin backoff + jitter bilen retraýalar; budgetleri retrada goýuň.
Idempotentlik: soragyň açary/belligi + netijäni saklamak; retraýlar amallary (esasanam maliýe) köpeltmeli däldir.
Circuit Breaker: zaýalananda açyň; "guýruklar" üçin hedged/backup requests (P95 arkaly dublikat ibermek).
6) Nobatlar, asinkronizm we backpressure
Sinhron ýoly petiklemäň: agyr amallar (KYC skanerleri, hasabat) - fon.
Backpressure: nobatdan sarp etmegi çäklendiriň, paralelligi düzüň.
Batching/coalescing: kiçi amallary birleşdiriň (mysal üçin, balanslary jemlemek bilen täzelemek).
Outbox/Inbox: şowsuzlyklarda wakalaryň kepillendirilen eltilmegi.
7) Goşundy: Kärendeler we howuzlar
DB/keş/NTTR-e birikdirilen howuzlar; arka tarapy "bogmazlyk" üçin olary çäklendiriň.
JVM: GC (G1/ZGC) profilini düzüň, uly tegeleklerden gaça duruň; .NET - ThreadPool/async; Node. js - çäräni petiklemäň, agyr CPU çykaryň.
Python: asyncpg/httpx, uvloop; Worker-pool arkaly CPU-meseleler.
Warm-up: JIT/keş, "warm pools" ýagdaýlaryny iň ýokary derejelere çenli gyzdyryň.
8) Maglumat bazalary we nagt pullar
Indeksler we meýilnamalar: yzygiderli 'EXPLAIN', awto-vakuum/derňew, skanlar çäkleri.
Connection pooling (PgBouncer/Multiplexing), gysga amallar.
Nagt strategiýalar: read-through, write-through/write-behind; TTL + wakalar boýunça maýyplyk.
Şarding/replikalar: sleýwlerden okamak, "gyzgyn açarlar" - ýerli keşler (near-cache).
9) Kesmek we edge
Statics/kataloglar üçin CDN/edge, 'Cache-Control', 'ETag' -dan API jogaplar üçin keş (howpsuz bolsa).
UX-durnuklylyk üçin stale-while-revalidate we stale-if-error.
Geo-paýlanyş: Iň ýakyn ROR/sebit RTT-ni peseldýär.
10) P99 guýruklaryna garşy binagärlik nusgalary
Hedged requests: bosagadan soň haýal soragy başga bir ýagdaýa göçüriň.
Request collapsing: DB-e bir "öňdebaryjy" haýyş, galanlary netijä garaşýarlar (tupandan gaça durýarlar).
Prioritizasiýa: VIP/kritiki amallar - bölünip berlen howuz/ileri tutulýan ugur.
Graceful degradation: artykmaç ýüklenende ikinji derejeli meýdanlary/widgetlary kesiň.
11) Konfigi (takmynan)
11. 1 NGINX (wagt/gysyş)
nginx proxy_connect_timeout 1s;
proxy_send_timeout 2s;
proxy_read_timeout 2s;
send_timeout 2s;
gzip on;
gzip_types application/json text/plain text/css application/javascript;
11. 2 Envoy (hedge + retry budget)
yaml
RetryPolicy:
retry_on: 5xx,reset,connect-failure num_retries: 2 per_try_timeout: 300ms retry_back_off: { base_interval: 50ms, max_interval: 200ms }
retry_priority:
name: envoy. retry_priorities. previous_priorities
HedgePolicy:
hedge_on_per_try_timeout: true initial_requests: 1 additional_request_chance: 0. 2
11. 3 gRPC (müşderi)
json
{
"methodConfig": [{
"name": [{"service": "payments. Service"}],
"timeout": "0. 8s",
"retryPolicy": {
"maxAttempts": 3,
"initialBackoff": "0. 05s",
"maxBackoff": "0. 2s",
"backoffMultiplier": 2. 0,
"retryableStatusCodes": ["UNAVAILABLE","DEADLINE_EXCEEDED"]
}
}]
}
12) Observability: dogry ölçäň
RED/USE metrikleri + tracs OTel: 'trace _ id' şlýuz-hyzmat-DB-daşarky API arkaly.
Aýry-aýry bellikler: 'api _ version', 'region', 'partner', 'endpoint'.
Daşbordlar: P50/P95/P99, queue time, error mix, retry rate, cache hit.
Maksatly ýurtlardan Synthetics/ASN (TR/BR/EU) we kritiki ýollar boýunça (reg → depozit, payout).
- Core API: 'P95 ≤ 250ms', 'P99 ≤ 500ms' (30 gün)
- PSP webhook gaýtadan işlemek: 'P99 ≤ 60s'
- Katalogyň freshness: 'P95 lag ≤ 30s'
13) FinOps и latency
Millisekundlar pul çykdajylarydyr: CR/ARPPU-da $/ms ýeňişe baha beriň.
Right-sizing: has çalt ≠ hemişe gymmat; başarnykly nagt/formatlar arzanlaýar we çaltlaşdyrýar.
Egress/edge: CDN RTT we sebitden gelýän traffigiň bahasyny azaldar.
14) Optimizirlemegiň çek-sanawy (ädimme-ädim)
1. SLO goýuň we guýruklaryňyzy/sebitleriňizi/hyzmatdaşlaryňyzy ölçäň (P95/P99).
2. HTTP/2/3, TLS resumption, uzak möhletli baglanyşyklary açyň.
3. Jogaplary gysyň we horlanyň: Brotli/Gzip, isleg boýunça meýdanlar, paginasiýa, ETag.
4. Wagtlary/retraýlary/breýkerleri sazlaň; duýgurlygy goşuň.
5. Kesiş/edge: hit-rate we dogry TTL; stale-rechimes.
6. DB: indeksler, meýilnamalar, howuzlar, göçürmeler; N + 1-i ýok ediň.
7. Agyr: nobatlar, batching, backpressure.
8. Kritiki ýollar üçin hedge/collapse/priority.
9. Warm-up we pik skeyling (ýaryşlar/oýunlar).
10. Sintetika we alertler P99 we queue time; yzygiderli perf-revyu.
15) Anti-patternler
Hemme zada bir global wagt we gözegçiliksiz retralar (DDOS).
Gerek bolmasa sessiýalaryň ýapyşmagy → gyzgyn nodlar.
Gysgyçsyz we meýdan süzgüçsiz uly JSON.
"Gyzgyn ýolda" haýal daşarky API-e sinhron jaňlar.
DB-de indeksleriň/çäkleriň ýoklugy; ORM-da N + 1.
Keş/edge we ETag ýok; hemişelik doly jogaplar.
Bir "yza çekilýän" sebete biznes we tehniki ýalňyşlyklaryň garyndysy.
16) iGaming/fintech mazmuny: amaly bellikler
Reg → depozit (CR): marşrutlaryň ileri tutulmagy, aýratyn howuz, 'P99 ≤ 500ms'; pese gaçmak - "bezeg" UI öçürmek.
PSP integrasiýalary: konkarrensi çäkleri, wagt kodlary boýunça retra, warm-konnektler, sebitleýin egress-IP.
VIP-amallar: kepillendirilen pul/ileri tutulýan, umumy nobatlardan aýlanyp geçmek.
Ýaryşlar/çäreler: öňünden aýdylýan skeýl, nagt pullary gyzdyrmak, prefetch.
Hasabat: async we SLA freshness, prod-ýoly petiklemeýär.
Jemi
Latency optimizasiýasy deňagramlylygyň düzgüni bolup durýar: tor (HTTP/2/3, TLS), teswirnamalar we keş, deňagramlylyk bilen wagt/retra, DB/keş, asinxron patternleri we P95/P99 syn edilmegi. Guýruklaryňyza ünsi jemläp, "dar bokurdaklary" ýok edip, seslenmäni durnuklaşdyrýarsyňyz, öwrülişigi gowulaşdyrarsyňyz we millisekundyň bahasyny peseldýärsiňiz - bu ýerde hakykatdanam işe täsir edýär.