Logo GH

Otomatik iyileşme ve kendini iyileştirme

(Bölüm: Teknoloji ve Altyapı)

Kısa Özet

Otomatik iyileştirme "Kubernetes büyüsü'değil, bir dizi disiplindir: doğru örnekler ve sınırlar, kontrollü retrays, hatalı örneklerin izolasyonu, SLO otomasyonu ve düğme/bot tarafından runabook eylemleri. Amaç, kartopu tıkanıklığı olmadan MTTR'yi azaltmak ve p95/p99, ödemeleri ve TTW'yi zirvede tutmaktır.

1) Kendini iyileştirme ilkeleri

1. Başarısız-hızlı & izole et: Kötü bölmeleri/örnekleri hızla tanımlayın ve izole edin.
2. Backoff + jitter: herhangi bir retray/scale out - üstel gecikme ve jitter ile.
3. SLO-aware: Hızlı yakma hata bütçesiyle otomasyon etkinleştirilir/geliştirilir.
4. Idempotency: Tekrarlanan işlemler güvenlidir (özellikle ödemeler/kuyruklar).
5. Derinlemesine savunma: örnekler, kotalar, limitler, devre kesici, aykırı çıkarma, oran sınırı, bozulma modu.

2) Kubernetes'te Temel

2. 1 Örnekler: canlılık/hazırlık/başlangıç

StartupProbe, ağır hizmetlerin erken yeniden başlatılmasına karşı koruma sağlar.
ReadinessProbe, trafik için hazır olup olmadığını belirler (sıcak önbellekler/bağlantılar).
livenessProbe asılı süreçleri yeniden başlatı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 Limitler, PDB ve Öncelikler

İstekler/sınırlar "gürültülü komşuyu" hariç tutar.
PodDisruptionBudget (PDB) tüm bölmelerin aynı anda düşmesini önler.

yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 2 selector: { matchLabels: { app: payments-api } }

Kritik yollar için PriorityClass (ödemeler, ağ geçidi).

2. 3 Yeniden Başlatma ve Dağıtım Stratejisi

'maxUnavailable: 0' kritik hizmetler için; RollingUpdate küçük artışlarla.
PodAntiAffinity kapsülleri düğümlere/bölgelere ayırır.

3) Otomatik ölçekleme ve olay ölçekleme

HPA (CPU/kullanıcı 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

Arka plan çalışanları/toplu görevler için kullanın; prod-API'de - dikkatlice (yeniden başlatılır).

KEDA (kuyruklar/harici olaylar)

Kafka lag, RabbitMQ, Redis, Prometheus istekleri için tetikleyiciler - iş biriktiğinde tüketicileri artırıyoruz.

4) Ağ savunmaları: devre kesici ve itlaf "kötü"

Elçi/Istio aykırı değer tespiti (идея)

yaml outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50

Devre kesici, bağımlılığı düşürmemek için eşzamanlı istekleri/bağlantıları kısıtlar.

Hız sınırlaması

Oyun sağlayıcılarının giriş çağrılarını/PSP rotalarını sınırlayın, böylece geri çekilme dalgası kazayı artırmaz.

5) Retrai, zaman aşımları ve jitter ile geri çekilme

Kural: önce zaman aşımı, sonra geri çekilme, her zaman titreme ve sınırlı girişimlerle.

Sözde kod:
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

Ödemeler için - idempotent anahtarlar + veri tekilleştirme.
Kuyruklar için - ölü mektup ve ertelenmiş yeniden denemeler.

6) Kuyruklarda/akışta kendi kendini iyileştirme

DLQ + büyüme uyarıları; İzole yeniden işleme.
Kontrol gecikmesi: otomatik ölçekli tüketiciler (KEDA), üreticilere geri basınç.
Tam olarak bir kez/en az bir kez - bilinçli olarak seçilmiş; Operasyonlar idempotent.

7) Nakit ve ısınma

Güvenli sakatlık/geri dönüş için sürüm anahtarları ('v2:').
DB/PSP'ye sıcak bağlantı havuzları; Değiştirmeden önce ısınma (mavi-yeşil/kanarya).
"Soğuk" veritabanı isabetlerini azaltmak için bayat-while-revalidate.

8) SLO ile otomatik iyileştirme (sinyal eylemleri)

burn-rate/TTW/p95 uyarıları güvenli otomatik eylemlerle ilişkilendiririz:
  • Kanarya/geri dönüş при hızlı yanmayı durdurun.
  • 'Queue _ lag _ seconds' büyümesiyle işçilerin ölçeklendirilmesi.
  • Degrade modunu etkinleştirme (basitleştirilmiş UX, ağır özellikleri devre dışı bırakma).
  • Zaman aşımları arttığında PSP rotası değiştiriliyor.
  • Özellik-bayrak kill-switch etkinleştirin.
Örnek (Alertmanager - Webhook - Orkestratör fikri):
yaml alert: WithdrawalsQueueLag labels: { action: "scale_workers", target: "withdrawals-consumers", by: "+5" }

9) Bozulma modu (zarif bozulma)

UI'yi basitleştirin (daha az istek), "pahalı" widget'ları kapatın.
Daha fazla önbelleğe alma, daha az fan çıkışı/toplama.
LLM/öneriler için - bağlamın/modelin boyutunu küçültün, "hızlı yol'u etkinleştirin.

10) Otomatik düzeltmelere GitOps yaklaşımı

Tüm otomatik iyileştirme politikaları ve parametreleri (zaman aşımları, eşikler) Git'tedir.
Herhangi bir otomatik eylem Grafana'da bir ek açıklama ve değişiklik günlüğünde bir giriş oluşturur.
Kanarya politikaları ve SLO kapıları da koddur.

11) Kaos mühendisliği: iyileşmenin işe yaradığını kontrol etmek

Arıza enjeksiyonları: ağ gecikmeleri, düşen ocaklar, PSP emülatör arızası, kuyruk gecikmesi.
Oyun günü senaryoları: MTTR'yi, otomatik eylemlerin kalitesini, eserlerin varlığını ölçüyoruz.
Sonuçlar - çalışma kitaplarının, eşiklerin, phicheflags'ın güncellenmesi.

12) Otomatik iyileşme için gözlemlenebilirlik

Örnekler: P95 metrikten piste hızlı bir sıçrama.
'trace _ id've' retry ',' trake ',' degrade _ mode = true 'alanlarını içeren günlükler.
Karşılaştırma panolarını (kanarya vs kararlı), SLO kartını serbest bırakın.
Otomatik eylemlerin denetimi: kim/ne/ne zaman, kaynak metrikler, sonuç.

13) Güvenlik ve uyumluluk

Otomatik iyileştirme günlüklerinde/metriklerinde sır yok.
Ödeme faaliyetleri için - çift onay/rol.
Geo/PII - bir feilover ile "yanlış" bölgeye trafik almayın.

14) Pratik şablonlar

Istio DestinationRule - bağlantı havuzu ve aykırı

yaml trafficPolicy:
connectionPool:
http: { http1MaxPendingRequests: 1000, maxRequestsPerConnection: 100 }
outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50

Flagger - otomatik flush/rollback ile kanarya

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) Uygulama kontrol listesi

1. Startup/readiness/liveness ve health uç noktaları yapılandırılmıştır.
2. Sınırlamalar/kaynak istekleri + PDB/anti-afinite.
3. API'ler ve işçiler için HPA/KEDA; lag/throwput metrics.
4. Devre kesici, aykırı madde çıkarma, geçit/ağ içinde hız sınırı.
5. Backoff + jitter ile Retrai, ödeme işlemlerinin idempotency.
6. Sürüm önbellekleri ve degrade modu.
7. SLO kapıları - otomatik eylemler (geri alma/ölçekleme/yeniden yönlendirme/kill-switch).
8. GitOps-policy code + audit actions, release annotations.
9. Temel senaryolarda kaos testleri ve oyun günü.
10. MTTR/Uyarı Kalitesi panoları ve otomatik iyileştirme raporları.

16) Anti-desenler

Liveness zaman bağımlılığı nedeniyle süreci "çiviler" - çırpma.
Zaman aşımı olmadan Retrai/jitter - istek fırtınası.
IO'ya bağlı servislerle CPU tarafından HPA - "hiçbir yerde".
Geri alma sırasında sürümsüz paylaşılan önbellek - veri bozulması.
Denetim/Runbook URL'si olmadan otomatik eylemler.
DLQ/lag metrikleri yok - sessiz borç birikimi.
Otomatik iyileştirme ve "gizleme problemlerini" karıştırmak: otomasyon semptomları iyileştirir, kök ortadan kaldırılmaz - olayların tekrarı.

Özet

Kendi kendini iyileştirme bir mühendislik disiplinidir: yüksek kaliteli numuneler ve sınırlar, yetkin retrays ve izolasyon, SLO sinyalleri üzerinde otomatik eylemler, artı kaos kontrolleri ve denetimleri. Bu kontur, platformu çökmeye karşı dayanıklı hale getirir, MTTR'yi keser ve en sıcak saatlerde bile önemli iGaming metriklerini (p99, ödeme dönüşümü ve TTW) kaydeder.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.