Awto-healing we öz-özüňi dikeltmek
(Bölüm: Tehnologiýalar we infrastruktura)
Gysgaça gysgaça
Auto-healing "Kubernetes jadysy" däl-de, dersleriň toplumy: dogry synaglar we çäkler, gözegçilik edilýän retralar, nädogry ýagdaýlaryň izolýasiýasy, SLO awtomatikasy we düwme/bot boýunça runabuk hereketleri. Maksat MTTR-i artykmaç ýüklemezden azaltmak we p95/p99, tölegleri we TTW-ni iň ýokary derejä çenli saklamak.
1) Öz-özüni dikeltmegiň ýörelgeleri
1. "Fail-fast & isolate": erbet zatlary/ýagdaýlary çalt kesgitläň we izolirläň.
2. Backoff + jitter: islendik retrai/skail-aut - eksponensial gijikdirme we jitter bilen.
3. SLO-aware: awtomatika fast-burn ýalňyşlyklar býudjetinde açylýar/güýçlendirilýär.
4. Idempotency: amallaryň gaýtalanmagy howpsuz (esasanam tölegler/nobatlar).
5. Defense in depth: synaglar, kwotalar, çäkler, circuit-breaker, outlier-ejection, rate-limit, degradasiýa düzgüni.
2) Kubernetesdäki bazis
2. 1 Synaklar: liveness/readiness/startup
startupProbe agyr hyzmatlaryň wagtyndan öň täzeden başlamagyndan goraýar.
readinessProbe traffige taýynlygy kesgitleýär (gyzdyrylan keşler/baglanyşyklar).
livenessProbe "asylan" amallary täzeden başlaýar.
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 Çäkler, PDB we ileri tutulýan ugurlar
requests/limits "noisy neighbor" -y aýyrýar.
PodDisruptionBudget (PDB) ähli podlaryň bir wagtyň özünde ýykylmagynyň öňüni alýar.
yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 2 selector: { matchLabels: { app: payments-api } }
Möhüm ýollar üçin PriorityClass (payments, gateway).
2. 3 Deploý täzeden başlamak we strategiýa
'maxUnavailable: 0' möhüm hyzmatlar üçin; rollingUpdate
PodAntiAffinity pod-lary nod/zolaklar boýunça paýlaýar.
3) Awtoskeyling we wakalary masştablaşdyrmak
HPA (CPU/ulanyjy metrikleri)
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 workerleri/paket meseleleri üçin ulanyň; prod-API - seresaplylyk bilen (täzeden başlamak).
KEDA (nobatlar/daşarky wakalar)
Kafka lag, RabbitMQ, Redis, Prometheus-haýyşlar boýunça triggerler - iş ýygnalanda sarp edijileri köpeldýäris.
4) Tor goragy: circuit-breaker we "erbet"
Envoy/Istio outlier detection (идея)
yaml outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
Circuit breaker, garaşlylygy peseltmezlik üçin bir wagtyň özünde soralmagy/birikdirmegi çäklendirýär.
Rate limiting
Retraý tolkunynyň heläkçiligi güýçlendirmezligi üçin giriş jaňlaryny/PSP ýollaryny/oýun üpjün edijilerini çäklendiriň.
5) Retraýlar, wagtlar we jitter bilen backoff
Düzgün: ilki wagt, soň bolsa retraý, hemişe jitter we synanyşyk çäkleri bilen.
Pseudo: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
Tölegler üçin - idempotent açarlary + de-duplikasiýa.
Nobatlar üçin - dead-letter we yza süýşürilen synanyşyklar.
6) Nobatlarda/akymda öz-özüňi dikeltmek
DLQ + ösüş üçin aladalar; izolirlenen gaýtadan işlemek.
lag: auto-skeyl consumers (KEDA), prodýuserlere backpressure.
Exactly-once/at-least-once - aňly saýlanýar; amallar - idempotentdir.
7) Keşler we warm-up
Ygtybarly maýyplyk/yzyna gaýtarmak üçin wersiýa açarlary ('v2:').
DB/PSP-e birikdirilen ýyly howuzlar; geçmezden ozal gyzdyrmak (blue-green/canary).
Stale-while-revalidate BD-e "sowuk" zarbalary azaltmak üçin.
8) SLO boýunça awto-remediation (signallar boýunça hereketler)
Alertleri burn-rate/TTW/p95 ygtybarly awtomatiki hereketler bilen baglanyşdyrýarys:- Stop canary / rollback при fast-burn.
- 'queue _ lag _ seconds' ululanda Skale-out worker.
- Degrade-mode (ýönekeýleşdirilen UX, agyr şekilleri öçürmek).
- Timeouts spike bolanda PSP ugruny üýtgetmek.
- Feature-flag kill-switch işjeňleşdirildi.
yaml alert: WithdrawalsQueueLag labels: { action: "scale_workers", target: "withdrawals-consumers", by: "+5" }
9) Zaýalanma düzgüni (graceful degradation)
UI-ni ýönekeýleşdirmek (az haýyş), "gymmat" widgetleri öçürmek.
Has köp kesiş, az janköýer/agregasiýa.
LLM/teklipler üçin - kontekstiň/modeliň ululygyny azaltmak, "çalt path" -y goşmak.
10) GitOps-awto düzedişlere çemeleşme
Ähli auto-remediation syýasatlary we parametrleri (wagtlar, bosagalar) - içinde Git.
Islendik awtomatiki hereket Grafana-da düşündiriş we üýtgeşmeler žurnalynda ýazgy döredýär.
Kanary-syýasatlar we SLO-geýtlar hem kod.
11) Bulam-bujar in engineering: healingiň işleýändigini barlaýarys
Näsazlyk sanjymlary: toruň gijikdirilmegi, podlaryň ýykylmagy, PSP-emulýatoryň şowsuzlygy, nobatyň gijikdirilmegi.
Game-day ssenarileri: MTTR-i, awto-hereketleriň hilini, artefaktlaryň bardygyny ölçeýäris.
Netijeler → Runabuklary, bosagalary, fiçeflaglary täzelemek.
12) Auto-healing üçin syn etmek
Exemplars: p95 metrikasyndan trasa çalt bökmek.
'trace _ id' we 'retry', 'attempt', 'degrade _ mode = true' meýdançalaryndaky loglar.
Daşbordlar release compare (stable vs canary), SLO kartasy.
Awto-hereketleriň barlagy: kim/näme/haçan, başlangyç metrikler, netije.
13) Howpsuzlyk we laýyklyk
Awto-remediasiýa ýazgylarynda/metriklerinde hiç hili syr ýok.
Töleglere garşy hereket etmek üçin - goşa tassyklama/rol.
Geo/PII - feýlowerde traffigi "nädogry" sebite eltmäň.
14) Amaly şablonlar
Istio DestinationRule — connection pool & outlier
yaml trafficPolicy:
connectionPool:
http: { http1MaxPendingRequests: 1000, maxRequestsPerConnection: 100 }
outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
Flagger - 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) Girizmegiň çek-sanawy
1. Startup/readiness/liveness we health-endpoints sazlandy.
2. Resurs çäkleri/soraglary + PDB/anti-affinity.
3. API we workerler üçin HPA/KEDA; lag/throughput metrikleri.
4. "Circuit-breaker", "outlier-ejection", "rate-limit".
5. Backoff + jitter bilen retraýlar, töleg amallarynyň idempotentligi.
6. Wersiýa kesişleri we degrade-mode.
7. SLO-geýtlar → awto-hereket (rollback/scale/reroute/kill-switch).
8. Syýasatyň GitOps kody + hereketleriň barlagy, çykyşlaryň düşündirişleri.
9. Esasy ssenariler üçin bulam-bujarlyk synaglary we game-day.
10. Daşbordlar MTTR/Alert Quality we awto-remediasiýa boýunça hasabatlar.
16) Anti-patternler
Liveness wagtlaýyn garaşlylyk sebäpli prosesi "urýar" → fapping.
Wagt/jittersiz retraýalar → Soraglar tupany.
IO garaşly hyzmatlarda CPU boýunça HPA → "hiç ýere".
Data zaýalananda wersiýasyz umumy keş
Auditsiz awtomatiki hereketler/Runbook URL.
DLQ/metrik lag → berginiň ýuwaş toplanmagy ýok.
Auto-healing we "problemalary gizlemek": awtomatika alamatlary bejerýär, kök ýok edilmeýär → hadysalaryň gaýtalanmagy.
Netijeler
Öz-özüňi dikeltmek in engineeringenerçilik düzgünidir: hil synaglary we çäkleri, başarnykly retralar we izolýasiýa, SLO signallary boýunça awtomatiki hereketler, üstesine-de bulam-bujarlyk barlaglary we audit. Şeýle konturlar platformany şowsuzlyklara çydamly edýär, MTTR-i gysgaldýar we iGaming-iň esasy metriklerini - p99, tölegleriň öwrülişigini we TTW-ni - hatda iň yssy sagatlarda hem goraýar.