Logo GH

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.
Nümunə (Alertmanager → Webhook → Orchestrator ideyası):
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.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.