Texnologiya və infrastruktur → Latency və API cavabının optimallaşdırılması
Latency və API cavabının optimallaşdırılması
1) «latency» nədir və niyə vacibdir
Latency - sorğunun ümumi gecikməsi: şəbəkə (DNS + TCP + TLS + RTT), balanslayıcı/şluz, proqram, DB/caches/növbələr, xarici inteqrasiya. Biznes üçün orta deyil, P95/P99 kritikdir: UX, CR və SLO-ları məhv edən «quyruqdur».
Əsas SLI:- 'SLI _ latency _ P95 = P95 (cavab vaxtı)' 5/30 dəqiqə ərzində
- 'SLI _ latency _ P99 = P99 (cavab vaxtı)'
- 'SLI _ queue _ time = P95 (saat _ in _ növbə _ worker)'
- 'SLI _ ext _ call _ P95 = P95 (xarici _ provayderlərin gizliliyi)'
2) Gecikmə mənbələrinin xəritəsi (və harada qazmaq)
1. Şəbəkə və protokollar: DNS, TCP handshakes, TLS, head-of-line (HTTP/1. 1), paket itkisi, BBR/ECN.
2. Şluz/balans: yavaş sağlamlıq-yoxlama, qeyri-sabit vaxt, isti pod.
3. App: bloklama, GC/stop-the-world, sinxron I/O, contention.
4. Saxlama: yavaş DB sorğuları, indekslərin olmaması, soyuq səhifələr.
5. Xarici xidmətlər: PSP/KYC, üçüncü tərəf API (dar SLA).
6. Növbələr və fon jobları: yenidən yüklənmiş işçilər, heç bir backpressure.
7. Cache/edge: cache səhvləri, zəif TTL, qeyri-sabit əlillik.
3) Şəbəkə və protokollar
3. 1 DNS/TCP/TLS
DNS prefetch/preconnect ön, uzun ömürlü IP PSP.
Müştərilərdə Keep-Alive/connection pooling; serverdə - əlaqələri yığın.
TLS: resumption/Session Tickets, müasir şifrələr paketi; təhlükəli idempotent əməliyyatları üçün 0-RTT çəkinin.
TCP: söhbətlər/kiçik paketlər üçün Nagle-i ('TCP _ NODELAY') söndürün; tune 'initial window', uyğun BBR daxil edin.
3. 2 HTTP/2 и HTTP/3
HTTP/2: multiplexing HOL kilidi HTTP/1 azaldır. 1; axınların prioritetlərinə nəzarət edin.
HTTP/3/QUIC: aşağı itki təsiri/RTT; mobil/beynəlxalq şəbəkədə faydalıdır.
Header compression: HPACK/QPACK, lakin ağlabatan başlıq ölçüsünü saxlayın.
3. 3 Balans/marşrut
Locality-aware (zonallıq), EWMA/least-request qarşı «isti» instansiyaları.
Seansların yapışması - yalnız state varsa; əks halda stateless + ümumi cache/seans.
4) Formatlar, yük, sıxılma
Sıxın: Brotli (mətn), fallback kimi Gzip; ikili formatları: gRPC/daxili API üçün Protobuf/Avro.
Payload azaldın: seçmə sahələr ('fields =...'), paginasiya, şərti GET (ETag/If-None-Match), delta cavabları.
GraphQL: persisted queries, «yağlı» fraqmentlərin qadağan edilməsi, dərinlik və çətinlik limitləri.
N + 1-dən çəkinin: coyns/prekompozisiya, aqreqatlar üçün batch-end nöqtələri.
5) Taymautlar, retrajlar, idempotentlik
Zəncir vaxtı: müştəri <şlz <appa <saxlama/xarici çağırış.
backoff + jitter ilə retray, yalnız müvəqqəti səhvlər üçün; budgets retraya qoyun.
İdempotentlik: açar/sorğu tokeni + nəticənin saxlanması; retrains əməliyyatları təkrarlamaq lazımdır (xüsusilə maliyyə).
Circuit Breaker: deqradasiya zamanı açın; «quyruqlar» üçün hedged/backup requests (P95 vasitəsilə dublikat göndərin).
6) Növbələr, asinxronizm və backpressure
Sinxron yolu bloklamayın: ağır əməliyyatlar (KYC skan, hesabat) - arxa plana.
Backpressure: növbədən istehlakı məhdudlaşdırın, paralelliyi düzəldin.
Batching/coalescing: kiçik əməliyyatları birləşdirin (məsələn, toplama ilə balans yeniləmə).
Outbox/Inbox: uğursuzluqların zəmanətli çatdırılması.
7) Əlavə: kirayələr və hovuzlar
DB/Caches/NTTR-ə qoşulma hovuzları; «boğmaq» üçün onları məhdudlaşdırın.
JVM: GC profilini (G1/ZGC), böyük alokasiyalardan çəkinin; .NET - ThreadPool/async; Node. js - event loop bloklamayın, CPU-ağır çıxarın.
Python: Asyncpg/httpx, uvloop; Worker-pool vasitəsilə CPU vəzifələri.
Warm-up: JIT/caches, «warm pools» instants pik.
8) Verilənlər bazası və caches
Indekslər və planlar: müntəzəm 'EXPLAIN', avtomatik vakuum/analiz, skan limiti.
Connection pooling (PgBouncer/Multiplexing), qısa əməliyyatlar.
Cache strategiyaları: read-through, write-through/write-behind; TTL + hadisələr üzrə əlillik.
Sharding/replikalar: slayvalardan oxumaq, «qaynar açarlar» - yerli keşlər (near-cache).
9) Caching və edge
Statik/kataloqlar üçün CDN/edge, API cavab cache (təhlükəsiz olduqda) 'Cache-Control', 'ETag'.
UX-stabillik üçün Stale-while-revalidate və stale-if-error.
Geo-paylama: ən yaxın ROR/region RTT azaldır.
10) P99 quyruqlarına qarşı memarlıq nümunələri
Hedged requests: astanadan sonra digər instansiyaya yavaş sorğunu təkrarlayın.
Request collapsing: DB-yə bir «aparıcı» sorğu, qalanları nəticəni gözləyir (fırtınalardan qaçır).
Prioritetizasiya: VIP/kritik əməliyyatlar - xüsusi hovuz/prioritet.
Graceful degradation: həddindən artıq yükləmə zamanı ikinci dərəcəli sahələri/widgetları kəsin.
11) Konfiqi (təqribən)
11. 1 NGINX (vaxt/sıxılma)
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üştəri)
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: düzgün ölçün
RED/USE metrikləri + OTel treysləri: «trace _ id» şlyuz xidməti-DB-xarici API vasitəsilə.
Ayrı-ayrı etiketlər: 'api _ version', 'region', 'partner', 'endpoint'.
Dashboard: P50/P95/P99, queue time, error mix, retry rate, cache hit.
Hədəf ölkələrdən Synthetics/ASN (TR/BR/EU) və kritik yollarla (reg → depozit, payout).
- Core API: 'P95 ≤ 250ms', 'P99 ≤ 500ms' (30 gün)
- PSP webhook emal: 'P99 ≤ 60s' retras ilə
- Freshness kataloq: 'P95 lag ≤ 30s'
13) FinOps и latency
Millisaniyələr pula başa gəlir: CR/ARPPU-da $/ms uduşu qiymətləndirin.
Right-sizing: həmişə daha sürətli ≠ daha bahalı; səriştəli cache/formatları ucuz və sürətləndirir.
Egress/edge: CDN RTT və bölgədən gələn trafik xərclərini azaldır.
14) Optimallaşdırma çek siyahısı (addım-addım)
1. SLO qoyun və quyruqlarınızı/bölgələrinizi/tərəfdaşlarınızı ölçün (P95/P99).
2. HTTP/2/3, TLS resumption, uzun ömürlü birləşmələri daxil edin.
3. Sıxın və cavab arıqlayın: Brotli/Gzip, istək sahələri, pagination, ETag.
4. Taymaut/retraj/braker konfiqurasiya; idempotentlik əlavə edin.
5. Cache/edge: hit-rate və düzgün TTL; stale rejimləri.
6. BD: indekslər, planlar, hovuzlar, replikalar; N + 1 aradan qaldırın.
7. Ağır asinxronizasiya: növbələr, batching, backpressure.
8. Kritik yollar üçün Hedge/collapse/priority.
9. Warm-up və pik skeylinq (turnirlər/matçlar).
10. P99 və queue time sintetik və alert; müntəzəm perf-revyu.
15) Anti-nümunələr
Bir qlobal vaxt «hər şeyə» və nəzarətsiz retrajlar (DDOS özü).
ehtiyac olmadan seans yapışan → isti nod.
Böyük JSON heç bir sıxılma və filtre sahələri.
«isti yolda» yavaş xarici API üçün sinxron çağırışlar.
DB-də indekslərin/limitlərin olmaması; N + 1 ORM.
Heç bir cache/edge və ETag; daimi tam cavablar.
Bir «geri dönən» səbətə biznes və texniki səhvlərin qarışığı.
16) iGaming/fintech konteksti: praktik qeydlər
Req → depozit (CR): marşrutların prioriteti, ayrı bir hovuz, 'P99 ≤ 500ms'; deqradasiya - «bəzək» UI söndürmək.
PSP inteqrasiyası: konkarrensinin limitləri, müvəqqəti kodların retrayaları, warm konnektləri, regional egress-IP.
VIP əməliyyatları: zəmanətli hovuz/prioritet, ümumi növbələrdən yan keçmək.
Turnirlər/tədbirlər: qabaqcadan skayl, cache isitmə, prefetch.
Hesabat: async və SLA freshness, prod yolunu bloklamır.
Yekun
Latency optimizasiyası balans intizamıdır: şəbəkə (HTTP/2/3, TLS), protokollar və cache, idempotentlik ilə taymaut/retrai, DB/cache, asinxron nümunələr və P95/P99 müşahidə qabiliyyəti. Quyruqlara diqqət yetirərək və «dar ağızları» aradan qaldıraraq, cavabınızı sabitləşdirir, dönüşümü yaxşılaşdırır və millisaniyə dəyərini azaltırsınız - bu, həqiqətən biznesə təsir göstərir.