Auto-healing və özünü bərpa
(Bölmə: Texnologiya və Infrastruktur)
Qısa xülasə
Auto-healing «Kubernetes sehri» deyil, fənlər toplusudur: düzgün nümunələr və limitlər, nəzarət olunan retralar, nasaz vəziyyətlərin izolyasiyası, SLO avtomatikası və düymə/bot ilə runabuk hərəkətləri. Məqsəd MTTR-ni «qar toplama» həddindən artıq yükləmədən azaltmaqdır və p95/p99, ödənişləri və TTW-ni hətta zirvədə saxlamaqdır.
1) Özünü bərpa prinsipləri
1. Fail-fast & isolate: pis pod/instants tez müəyyən və təcrid.
2. Backoff + jitter: hər hansı bir retray/skeyl-out - eksponensial gecikmə və jitter ilə.
3. SLO-aware: avtomatika tez burn büdcə səhvləri ilə açılır/gücləndirilir.
4. Idempotency: əməliyyatların təkrarlanması təhlükəsizdir (xüsusilə ödənişlər/növbələr).
5. Defense in depth: nümunələr, kvotalar, limitlər, circuit-breaker, outlier-ejection, rate-limit, deqradasiya rejimi.
2) Kubernetes Bazis
2. 1 Nümunələr: liveness/readiness/startup
startupProbe ağır xidmətlərin vaxtından əvvəl yenidən başlamasından qoruyur.
readinessProbe trafikə hazır olduğunu müəyyən edir (qızdırılmış caches/bağlantılar).
livenessProbe «asılı» prosesləri yenidən başlayır.
yaml readinessProbe:
httpGet: { path: /health/ready, port: 8080 }
periodSeconds: 5 timeoutSeconds: 1 failureThreshold: 3
livenessProbe:
httpGet: { path: /health/live, port: 8080 }
initialDelaySeconds: 20 periodSeconds: 10 failureThreshold: 3
startupProbe:
httpGet: { path: /health/startup, port: 8080 }
periodSeconds: 5 failureThreshold: 30
2. 2 Limitlər, PDB və prioritetlər
requests/limits «noisy neighbor» istisna edir.
PodDisruptionBudget (PDB) bütün podların eyni anda düşməsinin qarşısını alır.
yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 2 selector: { matchLabels: { app: payments-api } }
Kritik yollar üçün PriorityClass (payments, gateway).
2. 3 Deployun yenidən başlaması və strategiyası
Kritik xidmətlər üçün 'maxUnavailable: 0'; rollingUpdate kiçik addım ilə.
PodAntiAffinity nod/zonalara pod paylayır.
3) Avtoskeylinq və hadisə miqyası
HPA (CPU/xüsusi metriklər)
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec:
minReplicas: 3 maxReplicas: 30 metrics:
- type: Resource resource: { name: cpu, target: { type: Utilization, averageUtilization: 70 } }
- type: Pods pods:
metric:
name: http_requests_per_second target:
type: AverageValue averageValue: "50"
VPA
Fon işçiləri/paket tapşırıqları üçün istifadə edin; prod-API-də - diqqətlə (yenidən başlamaq).
KEDA (növbələr/xarici hadisələr)
Kafka lag, RabbitMQ, Redis, Prometheus-sorğuları ilə triggerlər - iş yığıldıqda istehlakçıları artırırıq.
4) Şəbəkə müdafiələri: circuit-breaker və «pis»
Envoy/Istio outlier detection (идея)
yaml outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
Circuit breaker asılılığı azaltmamaq üçün eyni vaxtda sorğuları/bağlantıları məhdudlaşdırır.
Rate limiting
Retraj dalğasının qəzanı artırmaması üçün giriş zənglərini/PSP marşrutlarını/oyun provayderlərini məhdudlaşdırın.
5) Retrajlar, taymautlar və jitter ilə backoff
Qayda: əvvəlcə vaxt, sonra retraj, həmişə jitter və cəhd məhdudiyyəti ilə.
Psevdokod:python def backoff(attempt, base=0. 1, cap=2. 0):
import random, math sleep = min(cap, base (2 attempt))
jitter = random. uniform(0, sleep 0. 4)
return sleep + jitter
Ödənişlər üçün - idempotent açarları + dekuplikasiya.
Növbələr üçün - dead-letter və gecikmiş təkrar cəhdlər.
6) Növbələrdə/axınlarda özünü bərpa
DLQ + böyümə riskləri; izolyasiya reprocessing.
Nəzarət lag: auto-skeyl konsumerləri (KEDA), istehsalçılara backpressure.
Exactly-once/at-least-once - şüurlu seçilir; əməliyyatlar - idempotent.
7) Caches və warm-up
Təhlükəsiz əlillik/geri dönüş üçün versiya açarları ('v2:').
DB/PSP-yə isti qoşulma hovuzları; keçid əvvəl qızdırma (blue-green/canary).
DB-də «soyuq» zərbələri azaltmaq üçün Stale-while-revalidate.
8) SLO avto-remediation (siqnal hərəkətləri)
Alertlər burn-rate/TTW/p95 təhlükəsiz avtomatik hərəkətlərlə əlaqələndiririk:- Stop canary / rollback при fast-burn.
- 'queue _ lag _ seconds' böyüdükdə Skale-out oxucuları.
- Açma degrade-mode (UX sadələşdirilmiş, ağır fiqurları söndürmək).
- timeouts spike ilə PSP marşrutu keçid.
- feature-flag kill-switch aktivləşdirilməsi.
yaml alert: WithdrawalsQueueLag labels: { action: "scale_workers", target: "withdrawals-consumers", by: "+5" }
9) Deqradasiya rejimi (graceful degradation)
UI-ni sadələşdirin (daha az sorğu), «bahalı» widgetları söndürün.
Daha çox caching, daha az fan-out/aqreqasiya.
LLM/tövsiyələr üçün - kontekstin/modelin ölçüsünü azaltmaq, «fast path» daxil etmək.
10) GitOps-avto düzəltmə yanaşması
Bütün auto-remediation siyasətləri və parametrləri (taymaut, eşik) - Git.
Hər hansı bir avtomatik hərəkət Grafana-da bir izahat və dəyişikliklər jurnalında bir qeyd yaradır.
Canary siyasətçiləri və SLO geytaları da koddur.
11) Xaos mühəndisliyi: healing işlədiyini yoxlayın
Enjeksiyon uğursuzluqları: şəbəkə gecikmələri, podların düşməsi, PSP emulatorunun uğursuzluğu, növbənin gecikməsi.
Game-day ssenariləri: MTTR, avtomatik hərəkətlərin keyfiyyətini, artefaktların mövcudluğunu ölçürük.
Nəticələr → runabuk, eşik, fitzeflags yeniləmə.
12) auto-healing üçün müşahidə
Exemplars: p95 metrikadan trasa sürətli atlama.
'trace _ id' və 'retry', 'attempt', 'degrade _ mode = true' sahələri olan loglar.
Dashbord release compare (stable vs canary), SLO kartı.
Avtomatik hərəkətlərin auditi: kim/nə/nə vaxt, ilkin metriklər, nəticə.
13) Təhlükəsizlik və uyğunluq
Avto-remediasiya qeydlərində/metriklərində heç bir sirr yoxdur.
Ödənişlər üzərində hərəkət etmək üçün - ikiqat təsdiq/rol.
Geo/PII - Feylover zamanı trafiki «yanlış» bölgəyə aparmayın.
14) Praktik şablonlar
Istio DestinationRule — connection pool & outlier
yaml trafficPolicy:
connectionPool:
http: { http1MaxPendingRequests: 1000, maxRequestsPerConnection: 100 }
outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
Flagger - avtomobil promosyonu/geri çəkilməsi ilə canary
yaml analysis:
interval: 1m threshold: 5 metrics:
- name: request-success-rate thresholdRange: { min: 99 }
- name: request-duration thresholdRange: { max: 300 }
webhooks:
- name: smoke url: http://tester/smoke
KEDA ScaledObject — Kafka lag
yaml triggers:
- type: kafka metadata:
topic: withdrawals bootstrapServers: broker:9092 consumerGroup: w-consumers lagThreshold: "5000"
15) Giriş çek siyahısı
1. Startup/readiness/liveness və health-end-point.
2. Limitlər/resurs sorğuları + PDB/anti-affinity.
3. API və işçilər üçün HPA/KEDA; lag/throughput metriklər.
4. Circuit-breaker, outlier-ejection, rate-limit gate/mesh.
5. backoff + jitter ilə retrai, ödəmə əməliyyatlarının idempotentliyi.
6. Version caches və degrade-mode.
7. SLO-geytlar → avto-hərəkət (rollback/scale/reroute/kill-switch).
8. GitOps Code Policy + audit hərəkətləri, relizlərin izahları.
9. Əsas ssenarilərdə xaos testləri və game-day.
10. MTTR/Alert Quality dashbordları və avto-remediasiya hesabatları.
16) Anti-nümunələr
Liveness zaman asılılığına görə prosesi «döyür» → flapping.
Taymaut/jitter → fırtına sorğuları olmadan retrailer.
İO-asılı xidmətlərdə CPU ilə HPA → «heç bir yerdə».
Geri çəkildikdə versiyasız ümumi cache → məlumatların zədələnməsi.
Auditsiz avtomatik hərəkətlər/Runbook URL.
No DLQ/metrik lag → sakit borc yığımı.
auto-healing və «problemlərin gizlədilməsi» qarışdırılması: avtomatika simptomları müalicə edir, kök aradan qaldırılmır → hadisələrin təkrarlanması.
Nəticələr
Özünü bərpa etmək mühəndislik intizamıdır: keyfiyyətli sınaqlar və limitlər, səriştəli retralar və izolyasiya, SLO siqnalları üzrə avtomatik hərəkətlər, xaos yoxlamaları və audit. Belə bir kontur platformanı uğursuzluğa davamlı edir, MTTR-ni azaldır və iGaming-in əsas metriklərinə - p99, ödəniş konversiyasına və TTW-yə - hətta ən isti saatlarda da qənaət edir.