Felaket kurtarma planı
1) Amaç, kapsam ve ilkeler
Amaç: Afetlerden sonra (bunlar, siber, satıcı, jeopolitik) BT platformunun yasal gereklilikleri, sözleşmeleri ve oyuncu beklentilerini ihlal etmeden zamanında kurtarılmasını sağlamak.
Alan: üretken ortamlar (oyun devresi, ödemeler, KYC/AML, dolandırıcılık önleme, DWH/BI vitrinleri), entegrasyonlar (PSP, KYC, CDN, stüdyolar/toplayıcılar), altyapı (cloud/K8s, ağlar, sırlar/anahtarlar), veriler (veritabanları, dosyalar, günlükler).
İlkeler: Önce güvenlik, RTO/RPO minimizasyonu, otomasyon ve tekrarlanabilirlik (IaC), "varsayılan olarak kanıtlanabilirlik", düzenli egzersizler.
2) Sistem sınıflandırma ve kurtarma hedefleri
2. 1 Kritiklik seviyeleri
Tier-1 (hayati): ödemeler/cashouts, çekirdek oyunlar, giriş/kimlik doğrulama, ICC/yaptırımlar.
Tier-2: gerçek zamanlı analitik, pazarlama/CRM, DWH raporlama.
Tier-3: dahili portallar, yardımcı hizmetler.
2. 2 Hedefler
RTO - Kurtarma Süresi Hedefi
Kurtarma Noktası Hedefi (RPO) - verilerin izin verilen zaman kaybı.
RTA (Recovery Time Actual )/RPA (Recovery Point Actual) - gerçek değerler raporlara kaydedilir.
MTO/MBCO: maksimum tolere edilebilir duruş süresi/minimum kabul edilebilir hizmet seviyesi (bozulmuş mod).
- Tier-1 - RTO ≤ 30-60 dakika, RPO ≤ 15 dakika; Tier-2 - RTO ≤ 4 ч, RPO ≤ 1 ч; Tier-3 - RTO ≤ 24 ч, RPO ≤ 24 ч.
3) DR Stratejileri ve Mimarisi
3. 1 Topolojiler
Aktif-Aktif (çok bölgeli): Minimum RTO/RPO, tutarlılık ve çatışma çözümü gerektirir.
Aktif-Bekleme (sıcak/sıcak/soğuk): maliyet/hız dengesi.
Verilerin ve anahtarların coğrafi ayrımı: Bölge başına KMS/HSM, BYOK, bağımsız çoğaltma yolları.
3. 2 Veri ve yedeklemeler
PITR (point-in-time recovery): işlem günlükleri, arşivleme aralıkları ≤ Tier-1 için 5-15 dakika.
Anlık görüntüler/tam yedeklemeler: günlük/saatlik, 3-2-1 şemasına göre depolama (3 kopya, 2 ortam, 1 çevrimdışı/site dışı).
Değişmezlik: WORM/nesne kilitleri, eserlerin imza/karma zincirleri.
Kurtarma kataloğu: yedek envanter, bütünlük, son kullanma tarihi, test şifre çözme.
3. 3 Uygulamalar ve entegrasyonlar
Statles Services - IaC/CI aracılığıyla hızlı dağıtım
Durum bileşenleri: tutarlı anlık görüntüler, fırlatma sırasının düzenlenmesi.
Entegrasyonlar (PSP/KYC/toplayıcılar): çift kredi, geri dönüş uç noktaları, imzalı webhook'lar, yeniden teslim kontrolü (idempotency).
4) Kurtarma sırası (genel runbook)
1. Bir DR betiği bildirmek - DR Olay Komutanını (DR-IC) atamak, bir savaş odası başlatmak.
2. Hasar değerlendirmesi: etkilenen bölgeler/alt sistemler, mevcut RTA/RPA, feilover'ı etkinleştirme kararı.
3. İzolasyon/sınırlama: orijinal nedenleri engelleme (ağ ACL'leri, sırlar, sağlayıcının bağlantısını kesme).
- ağ/sırlar/KMS
- DB/Vault/Cache
- API/services - front/CDN - external integrations.
- 5. Bütünlük kontrolü: sayaç. miktarlar, "kuru" istekler, sağlık örnekleri.
- 6. Finans/oyunların uzlaştırılması: ödemelerin, bahislerin, bakiyelerin uzlaştırılması, işlemlerin idempotent tekrarı.
- 7. İletişim: durum sayfası, oyuncular/ortaklar/düzenleyiciler; Zaman çizelgesini güncelle.
- 8. Gözlem ve stabilizasyon: Normalizasyon ilerledikçe bozulmanın devre dışı bırakılması.
- 9. Ölüm sonrası: RCA, CAPA, DRP güncellemesi.
5) Uzman runbook'lar (snippet'ler)
5. 1 Aktif Bekleme - Bekleme
yaml trigger: "loss_of_region_primary OR quorum_fail >= 5m"
prechecks:
- "secondary region green"
- "replication_lag <= 15m"
steps:
- DR-IC approves region_failover
- Platform: GSLB switch → secondary
- Data: promote replicas, enable PITR streams
- Apps: redeploy with region vars; warm caches
- QA: smoke tests (login, deposit, bet, payout)
- Comms: status-page + partner notice rollback: "switch-back after 60m stability window"
5. 2 Yolsuzluk DB/PITR'den Kurtarma
yaml trigger: "data_corruption_detected OR accidental_drop"
steps:
- Freeze writes (feature flag), snapshot evidence
- Restore to timestamp T (<= RPO)
- Reindex/consistency checks
- Replay idempotent events from queue (from T)
- Reopen writes in throttle mode validation: ["checksum_ok", "balance_diff=0", "orders_gap=0"]
5. DR modunda 3 PSP bozulması
yaml trigger: "auth_rate_psp1 < baseline-3σ for 15m"
steps:
- Route X%→psp2, cap payouts, enable manual VIP
- Reconciliation plan T+0, alerts Finance
- Notify players in cashier; vendor escalation
6) Veri bütünlüğü ve uzlaşma
Finans: depozitoların/ödemelerin/komisyonların mutabakatı, veri tekilleştirme ile bildirimlerin ve web kitaplarının yeniden gönderilmesi (idempotency-keys).
Oyun konturu: yuvarlak durumların geri kazanılması, gerekirse yerleşimlerin tekrarlanması, çift ücretlere/ücretlere karşı koruma.
Günlükler/denetimler: WORM günlüğü eşlemesinden önce/sonra, imzalar/karmalar, tutarlılık raporları.
DPO/Uyumluluk Raporu: PII etkisi durumunda, yakalama ölçeği, zaman çizelgesi ve bildirimler.
7) Anahtar teknolojiler için DR (örnekler)
DBMS (ilişkisel): senkron/asenkron çoğaltma, WAL yuvaları, hızlı teşvik, sıcak standbys.
NoSQL/önbellekler: multicluster, TTL-disability, cold filling, conflict-resolution olmadan bölgeler arası yazının reddi.
Kuyruklar/akışlar: ayna topikalleri/kümeleri, ofset kontrolü, tüketici veri tekilleştirme.
Nesne Depolama: sürüm oluşturma, bunker çoğaltma, nesne envanteri ve saklama ilkeleri.
CI/CD/artifacts: Kayıt kopyaları, eserlerin imzası, kritik konteynerlerin çevrimdışı kopyaları.
Sırlar/anahtarlar: Bölge başına KMS, bağımsız kök anahtarları, günlüğe kaydetme ve TTL ile kırılma camı.
8) DR'da güvenlik ve gizlilik
En az hak ilkesi: Bireysel rollere/profillere göre DR erişimleri (JIT/PAM).
Değişmez yedeklemeler: çevrimdışı/tesis dışı, kurtarma ve şifre çözme testi.
Düzenleyici pencereler: Yasal/DPO ile birlikte olay yakalama ve bildirim kararı (düzenleyici/banka/PSP/kullanıcılar).
İzlenebilirlik: Tam DR komutu etkinlik günlüğü, zaman çizelgesi imzası.
9) Egzersizler ve test türleri
Walkthrough/İnceleme: Belge/Rol/İletişim İncelemesi (Üç Aylık).
Masa üstü: Çatışma çözümü ile "kuru" senaryoları çalıştırın.
Teknik kısmi: Tek bir hizmet/veritabanının kurtarılması.
Tam yük devretme/anahtar değiştirme - trafiğin ve verilerin yedekleme bölgesine aktarılması.
Kaos günleri (kontrollü): Otomatikleri kontrol etmek için arıza/arıza enjeksiyonu.
Her test bir RTA/RPA, sapma listesi, CAPA ve DRP güncellemesi içeren bir rapordur.
10) Metrikler (KPI/KRI)
RTA/RPA vs RTO/RPO (Tier-1): %95 eşleşme ≥.
DR Test Kapsamı: ≥ 2 tam DR testleri/yıl + düzenli kısmi.
Time-to-First-Status: DR duyurusundan ≤ 15 dakika sonra.
Uzlaşma Zero-Diff: Tutarsızlıklar olmadan tüm nakit ve oyun mutabakatları.
Yedekleme Bütünlüğü: Spot geri yüklemelerin %100'ü bir çeyrekte başarılı olur.
Yapılandırma Sürüklenmesi: Birincil/ikincil (IaC karşılaştırması) arasında 0 sürüklenme.
DR'de güvenlik: Günlük ve onay ile %100 DR etkinlikleri.
11) RACI (büyütülmüş)
12) Kontrol listeleri
12. 1 DR hazırlık
- DR Ekibi/Satıcı/Düzenleyici kişileri güncellendi
- Çoğaltma yeşil, PITR etkin, yedeklerin şifresinin çözülmesini test edin
- JIT/PAM erişimleri, kırılma camı doğrulandı
- Sahte oyun kitapları ve ortam değişkenleri geçerlidir
- PSP/KYC Çift Kredi/Webhooks, Alternatif Rotalar
- Durum Sayfası/Mesaj Şablonları Hazır
12. 2 DR sırasında
- DR-IC atanmış, savaş odası açık, olay zaman çizelgesi
- Neden izolasyon, betik, runbooks çalışan
- Bütünlük kontrolleri, sağlık testleri, duman testleri
- İlk genel güncelleme ≤ 15 dakika; SLA'larda ortaklara/düzenleyicilere bildirimler
- Soruşturma için eserleri yakalama
12. 3 DR'dan sonra
- Para/oyun ve dergilerin tam mutabakatı
- Post-mortem, RCA, tarih ve sahipleri ile CAPA
- DRP/BIA/İletişim/IaC Güncelleme
- Yeniden test planını düzeltir
13) Şablonlar (parçalar)
13. 1 Hizmet kartı (DR pasaportu)
yaml service: payments-api tier: 1 dependencies: [auth, ledger-db, psp1, psp2, kms-eu]
rto: "45m"
rpo: "15m"
backups: {pitr: true, snapshots: "hourly", immutability: "7d"}
failover: {mode: "active-standby", regions: ["eu1","eu2"]}
runbooks: ["rb_failover_region", "rb_psp_degradation"]
health_checks: ["/healthz","/readyz"]
13. 2 DR test raporu (maruz kalma)
yaml test_id: DR-2025-10 scope: "Full switch-over eu1→eu2"
rta: "27m"
rpa: "11m"
issues:
- id: CAPA-117, desc: "долгое прогревание кэша", due: 2025-11-20, owner: SRE
- id: CAPA-118, desc: "устаревший webhook PSP#2", due: 2025-11-12, owner: Payments reconciliation: {finance: "ok", games: "ok"}
management_signoff: "2025-11-02"
13. 3 Durum mesajı şablonu
[UTC+02] Идет аварийное переключение в резервный регион. Игры доступны, выводы временно ограничены. Средства игроков в безопасности. Следующее обновление через 15 минут.
14) Uygulama Yol Haritası (6-8 hafta)
Hafta 1-2: Hizmetlerin ve bağımlılıkların envanteri, Katman sınıflandırması, RTO/RPO hedefleri, topoloji seçimi, DR pasaportları.
3-4. Haftalar: yedeklemelerin uygulanması/PITR/değişmezlik, gizli çoğaltma/KMS, runbookların hazırlanması ve durum.
Hafta 5-6: Kısmi teknik testler (veritabanı/önbellek/kuyruklar), PSP/KYC/bölge senaryolarına göre masa üstü.
7-8. Haftalar: tam geçiş (mümkünse), RTA/RPA, CAPA, DRP güncellemesi ve düzenli test planı ile rapor verin.
15) Diğer wiki bölümleriyle entegrasyon
Bağlantı: BCP, Risk Kaydı, Olay Yönetimi, Günlük Politikası (WORM), TPRM ve SLA, ISO 27001/27701, SOC 2, PCI DSS, RBAC/En Az Ayrıcalık, Şifre Politikası ve MFA, Değişim/Yayın Yönetimi.
TL; DR
Çalışma DRP = Katman tarafından açık RTO/RPO - Aktif-Aktif/Bekleme mimarisi + değişmez yedeklemeler/PITR - oynanabilir runbooklar ve feilover - para/oyunların uzlaştırılması - düzenli egzersizler ve CAPA'lar. Daha sonra herhangi bir büyük başarısızlık, öngörülebilir kurtarma süreleri ve düzenleyiciler ve oyuncular için sıfır sürprizle yönetilebilir bir prosedüre dönüşür.