PSP-X gecikme ve kayıp
(Bölüm: Teknoloji ve Altyapı)
Kısa Özet
Kaos Mühendisliği, üretim için bilimsel bir yöntemdir: bir istikrar hipotezi formüle eder, çevreyi kontrollü bir şekilde bozar ve kullanıcı değerinin (SLO/iş metrikleri) korunduğunu kanıtlarsınız. IGaming için, bunlar ödeme kontrolleri (PSP'ler), oyun başlatma, kurşun kuyrukları, çok bölgeli ve tepe yükleridir - gecikmeler, arızalar ve geri çekilmelerin "fırtınası" koşullarında - bu canlı kullanıcılara gelmeden önce.
1) Kaos mühendisliğinin ilkeleri
1. Sabit durumdan hipoteze. Oranı belirleyin: Kullanılabilirlik, p95/p99, TTW, ödeme dönüşümü.
2. Küçük patlama alanı. Deney ilk evreleme/kanarya, %1-5 trafik/1-2 poda/bir bölge.
3. Önce gözlemlenebilirlik. Metrikler/günlükler/izler + deneme ek açıklamaları.
4. Korkuluklar iptal и. Otomatik kapatma için sabit SLO/iş KPI eşikleri.
5. Tekrarlanabilirlik ve otomasyon. Kod olarak deneyler (IaC/GitOps), oyun günü planı.
6. Suçsuz kültür. Deney bir suçlama arayışı değil, zayıflık arayışıdır.
2) Kararlı durum ve başarı metrikleri
TexSLI: p95/p99 API, hata oranı, doygunluk (CPU/IO), kuyruk gecikmesi (para çekme/para yatırma), gecikme sağlayıcıları.
İş SLI: 'Girişim - başarı', TTW p95, 'oyun init' başarısı, PSP başarısızlıklarının koda göre paylaşımı.
3) Deney sınıfları (ne "kırılma")
Ağ: gecikme/titreme/paket kaybı/kara delik, DNS arızaları, MTU anomalileri.
Ресурсы: CPU gazı, bellek basıncı/OOM, disk IOPS/alanı, dosya tanımlayıcı tükenmesi.
İşlemler ve siteler: bölmeleri öldür/tahliye et, düğüm hatası, bölge/bölge hatası.
Bağımlılıklar: PSP zaman aşımları/hataları, kullanılamayan oyun sağlayıcısı, CDN/önbellek bozulması.
Kuyruklar/akış: Kafka gecikme büyümesi, tüketici duraklaması, parti/lider boşluğu.
Veri/DB: çoğaltma gecikmeleri, dizin bozulması, salt okunur mod.
Sürümler/ficheflags: geçiş özlüyor, hatalı yapılandırmalar, kill-switch.
Ön/RUM: LCP/INP düşüşü, müşteri zirvede çöküyor.
Veri/ML: yaşlanma özellikleri, artan gecikme modeli, düşen belirteçler/ler, kalitenin bozulması.
4) Süreç: hipotezden gelişmeye
1. Bir hipotez oluşturun (belirli SLO/iş KPI + beklenen koruma davranışı).
2. Deneyi tasarlayın: başarısızlık türü, süre, patlama yarıçapı, korkuluklar/iptal.
3. Gözlemlenebilirliği hazırlayın: Panoları, ek açıklamaları serbest bırakın/deneyin karşılaştırın.
4. IM/TL kontrolü altında çalıştırın, çağrı üzerine/işletmeyi bilgilendirin (etkilenirse).
5. Ölçüm sonucu: SLO, p95/p99, TTW, dönüşüm, gecikmeler, geri ödemeler.
6. Form eylem öğeleri: limitler, zaman aşımları, jitter, outlier-ejection, PDB/HPA/KEDA, geri çekilme akışı ile retrays.
7. Otomatikleştir (oyun günü reg paketine/CI altyapı kontrollerine dahil edin).
5) Korkuluklar ve durdurma kriterleri
Aşağıdaki durumlarda derhal iptal edin:- SLO hızlı yanma etkinleştirildi (örn. 14 × saat başına bütçe),
- Ödeme dönüşümünüz 0'dan fazla ↓. 3 p.p.,
- TTW p95> 3 dakika üst üste 10-15 dakika,
- Hata oranı> 1. %5 ve iki pencerede büyüyor.
- İletişim: Önceden onaylanmış kanal/durum şablonu, ChatOps'ta "kırmızı düğme" ('/deneme iptal ').
6) Deneysel örnekler (Kubernetes/bulut)
6. 1 PSP'ye ağ gecikmeleri (Kanarya Depresyonu)
Amaç: Geri dönüşleri/zaman aşımlarını/yönlendirmeyi kontrol etmek.
Enjeksiyon: + 200ms RTT ve 'payments-api' için %3 paket kaybı - sadece 'pspX'.
yaml apiVersion: chaos/v1 kind: NetworkChaos metadata: { name: psp-latency-canary }
spec:
selector: { labelSelectors: { app: payments-api, track: canary } }
direction: to target:
selector: { namespace: prod, ipBlocks: ["10. 23. 0. 0/16"]} # addresses pspX egress action: delay delay:
latency: "200ms"
jitter: "50ms"
correlation: "0. 5"
loss:
loss: "3"
correlation: "0. 3"
duration: "10m"
mode: one # minimum blast radius
Beklenen: p95'/deposit '<250 ms, hata oranı <%1, dönüşüm ≥ taban − 0. 3 s; Bozulmuş ise, PSP rota otomatik anahtarı.
6. 2 Düğüm ve PDB hatası
Amaç: PDB/anti-afinite/HPA'yı kontrol edin.
Enjeksiyon: 'games-api' bölmeleriyle bir düğümü boşaltın/sonlandırın.
Bekleme: kullanılabilirlik kaybı yok, pik p99 SLO'nun ötesine geçmiyor, otomatik alıcı ipuçlarını alıyor, PDB "çift whammy'yi önlüyor.
6. 3 Kafka lag и KEDA
Amaç: Mesaj biriktirirken fonların istikrarlı bir şekilde geri çekilmesi.
Enjeksiyon: Tüketicileri 5-10 dakika dondurun, sonra açın.
Bekleme: KEDA işçileri ölçeklendirir, TTW p95, rezorpsiyondan sonra ≤ 3 dakika kalır, kopya yoktur (idempotans, anahtarlar).
6. 4 oyun sağlayıcısı DNS aksaklığı
Amaç: fallback/önbellekleme/retrays.
Enjeksiyon: NXDOMAIN/domain 'providerA için zaman aşımı. Örnek '.
Bekleme: UI'de 'sağlayıcı' B'de hızlı folback - bozulma modu ve durum afişi; 'game init success' 99 ≥. 5%.
6. 5 Salt okunur DB
Amaç: Kayıp davranışı yazmak.
Enjeksiyon: İşareti 10-15 dakika boyunca salt okunur olarak değiştirin.
Bekleme: kod hataları doğru bir şekilde işler, kritik yollar sınırlıdır, kuyruklar istekleri tutar, kayıp/çift yazma yoktur.
7) Otomasyon ve GitOps
Kod olarak deneyler: Git'te komut dosyalarını/parametreleri/korkulukları depolayın, PR ile gözden geçirin.
Oyun günü planı: zamanlama, sahipler, metrikler, iptal koşulları, iletişim kontrol listesi.
Grafana'daki ek açıklamalar: Deneyin başlangıcı/sonu, yapılandırma, son SLO'lar.
8) Kaos sırasında gözlemlenebilirlik
Örnekler: p95/p99'dan spesifik 'trace _ id'e kadar.
Логи: 'experiment _ id', 'fault _ type', 'retry _ entry', 'degrade _ mode = true' поля.
İzler: dış aramalar 'hata'olarak işaretlenir. injected = true ', retras/timeouts görünür.
Panolar: "SLO-kart", serbest bırakma/deneme karşılaştırması, Ödemeler/Oyun init/Kuyruklar.
9) iGaming'in özellikleri: önce ne kontrol edilmeli
1. Ödemeler ve TTW: PSP zaman aşımları, rota folback, idempotency.
2. Oyunların başlatılması: stüdyoların erişilememesi/yavaşlığı, CDN arızaları.
3. Kurşun/bonus kuyrukları: gecikme büyümesi, yeniden işleme.
4. Çok bölgeli: bölge hatası/POP, lider değişikliği, veritabanı çoğaltma.
5. Zirveler: otomatik ölçek, hız sınırı, devre kesici, ısınma önbellekleri.
6. RG/Uyumluluk: Arıza durumunda doğru kayıt, telemetride PII yok.
10) Yönetişim
Takvim ve pencereler: zirve turnuvaları dışında deneyler, iş ile koordinasyon.
Роли: Deney Lideri, Gözlemci (SRE), İş Temsilcisi; Acil yardım hattında.
Veri politikaları: Yapaylarda PII yok; WORM denetim için depolar.
Yasal sınırlar: SLA'yı ihlal eden senaryoları anlaşma olmadan hariç tutun.
11) Oyun günü: senaryo şablonu
12) Tipik buluntular ve eylemler
Çok agresif geri çekimler - fırtına istekleri - zaman aşımları/jitters/limitler ekleyin.
No outlier ejection - poison instance spoils p99 - enable culling.
Fragile migrations - salt okunur - expander - migrate - contract + phicheflags akışını keser.
Yanlış HPA sinyali - geç ölçeklenir - RPS/gecikme metriklerine geçer.
Sürümler için ortak önbellek - geri dönüşler verileri bozar - sürüm anahtarları.
13) Kaos uygulama olgunluk kontrol listesi
1. Kararlı durum ve SLO açıklanmıştır, panolar hazırdır.
2. Kod olarak deneyler, Git'te inceleme/denetim.
3. Korkuluklar/otomatik iptal (Alertmanager/ChatOps).
4. Gözlemlenebilirlik: örnekler, iz/log korelasyonu, ek açıklamalar.
5. Oyun günü üç ayda bir, senaryolar ödemeleri/oyunları/kuyrukları/çoklu bölgeyi kapsar.
6. Deney sonrası eylem öğeleri sprint planının bir parçasıdır; Performans izleme.
7. Yapılandırma reposunda Retray/timeout/devre kesici eşik politikaları.
8. Güvenlik/PII politikaları uygulanır, hassas veriler olmadan eserler.
9. SLO ile otomatik iyileştirme (geri alma/ölçekleme/yeniden yönlendirme), kaosu test etti.
10. İşlem metrikleri: % iptal edilmeden tamamlandı, egzersizde MTTR, sınıf olayı azaltma.
14) Anti-desenler
SLO/korkuluklar/gözlemlenebilirlik olmadan "prod'daki her şeyi kırmak".
Hipotezleri ve ölçülebilir hedefleri olmayan deneyler.
İlk fırlatmada büyük patlama yarıçapı.
Zaman aşımı/titreme olmadan retrays - basamaklı hata toleransı.
Önleme yerine kaos: semptomları tedavi edin, kök nedenleri görmezden gelin.
Egzersiz sonrası RCA/eylem öğelerinin yokluğu.
İş onayı olmadan yoğun saatlerde deneyler.
Özet
Kaos mühendisliği, esnekliğin metodik bir kanıtıdır: Gerçek hataları önceden yeniden üretir, SLO ve iş metrikleri üzerindeki etkiyi ölçer ve mimariyi güçlendirir - retrays ve devre kesiciden çok bölgeli orkestrasyon ve otomatik iyileştirmeye kadar. Düzenli oyun günü ve korkuluk disiplini ile, iGaming platformu en sıcak dönemlerde bile p95/p99, dönüşüm ve TTW'yi korur.