DR-strategiyalar va RTO/RPO
1) Bazaviy prinsiplar
1. Maqsadlar mablag’lardan oldin. Avval RTO/RPO va tanqidiy stsenariylarni shakllantiramiz, so’ngra texnologiyani tanlaymiz.
2. Muhimligi bo’yicha segmentatsiya. Barcha xizmatlar «oltin» talab qilmaydi; biznes tanqidiyligiga qarab bo’ling.
3. Ma’lumotlar - DR. yadrosi. Konsistentlik, replikatsiya, buzilishni aniqlash va tiklanish nuqtasi «temirdan» muhimroqdir.
4. Avtomatlashtirish va tekshirish. DR IaC, tiklanish regress-testlari va telemetriyasiz ma’nosiz.
5. Ta’limotlar va dalillar. Muntazam «game day» bo’lmagan reja - tayyorlik xayolidir.
6. Xavfsizlik va komplayens. Shifrlash, izolyatsiya, WORM/immutable-backaplar, DPA/yurisdiksiyalar.
2) Atamalar va muvofiqliklar
RTO - voqea sodir bo’lgan paytdan boshlab xizmatni tiklashgacha bo’lgan vaqt.
RPO - tiklanishdagi so’nggi sog’lom ma’lumotlar nuqtasining «yoshi».
RLO (Recovery Level Objective) - qayta tiklanishi kerak bo’lgan funksional daraja (minimal hayotiy xizmat).
MTD (Maximum Tolerable Downtime) - biznes nomaqbul zarar ko’radigan chegara.
RTA/RPA (Actual) - amaldagi tiklanish vaqti/nuqtasi.
Aloqa: RTO ≤ MTD; RPA ≤ RPO. Maqsad va fakt orasidagi tafovut - postmortem va yaxshilanishlar predmetidir.
3) DR-strategiyalar klasslari (tayyorgarlik darajalari)
4) Biz himoya qiladigan stsenariylar
Mintaqa/bulut/Ma’lumotlar markazining yo’qolishi (elektr, tarmoq, provayder).
Ma’lumotlar korrupsiyasi/operator xatosi (o’chirish, «singan» nusxalar, mantiqiy buzilish).
Zararli dasturiy ta’minot/shifrlovchi (ransomware).
Reliz/konfiguratsiya nuqsoni (ommaviy outage).
Qaramlikning qulashi (KMS, DNS, sirlar, to’lov provayderi).
Yuridik voqealar (blokirovka qilish, yurisdiksiyadan ma’lumotlarni olib chiqishni taqiqlash).
Har bir stsenariy uchun mas’ul bo’lgan RTO/RPO, DR darajasi, pleybukni ko’rsating.
5) Ma’lumotlar strategiyasi (RPO kaliti)
5. 1 Bekaplar
To’liq + inkremental + tranzaksiya daftarlari (DB uchun).
Immutable/WORM omborlari va oflayn nusxalari («air-gapped»).
Meta-ma’lumotlar va kripto imzolari bo’lgan bekaplar katalogi; jadval bo’yicha test tiklanishi.
5. 2 Replikatsiya
Sinxron (past RPO, ↑ yashirin, buzilish xavfi).
Asinxron (perfga ta’siri past, RPO> 0; buzilish detektori bilan birlashtirish).
CDC (Change Data Capture) oqim replikatsiyasi va holatni qayta qurish uchun.
5. 3 Mantiqiy buzilishdan himoya qilish
Version/» vaqt nuqtasi» (PITR) ≥ N kun oynasi bilan.
Invariantlar signaturasi (balanslar, summalar, cheksummalar) - «singan» ma’lumotlarning erta detekti.
«Sekin» replikatsiya kanallari (delay 15-60 min) shoshilinch buzilishga qarshi bufer sifatida.
python def pick_restore_point(pitr, anomaly_signals, max_age):
healthy = [p for p in pitr if not anomaly_signals. after(p. time)]
return max(healthy, key=lambda p: p. time if now()-p. time <= max_age else -1)
6) Ilova, holat, kesh
Stattless qatlam - har qanday mintaqada kattalashtirish va qayta ishga tushirish (Git’dagi rasm/chartlar/manifestlar).
Holat (DB/kesh/kyu): haqiqat manbai - DBlardan biri; keshlar va indekslar qayta ishlab chiqiladi.
Idempotentlik va re-drive - voqealarni qayta yetkazib berish mumkin; outbox/inbox, dedup va versiyalardan foydalaning.
7) Tarmoq va kirish nuqtasi
GSLB/DNS-faylover: latency/health-based, qisqa TTL avariya oynasiga.
Anycast/L7-proksi: yagona IP, hududlar salomatligi bo’yicha marshrut.
Mintaqaviy domenlar va yurisdiksiyalar siyosati (PII uchun geo-pinning).
Sertifikatlar/KMS feyloveri: zaxira zanjirlar, dual-key.
python if slo_breach("region-a") or health("region-a")==down:
route. shift(traffic, from_="region-a", to="region-b", step=20) # канарим enable_readonly_if_needed()
8) Operatsion model va avtomatlashtirish
IaC/GitOps: ikkinchi mintaqa infratuzilmasi = kod, «bir toqli» joylashtirish.
Policy as Code: gate «hech qanday DR-manifest/backup/alert - hech qanday reliz».
Runbooks: har ikki mintaqaga oʻxshash bosqichma-bosqich koʻrsatmalar va «qizil tugma».
Sirlar: qisqa umr ko’radigan kredlar, OIDC federatsiyasi, murosaga keltirish/chaqirib olish rejasi.
rego package dr deny["Missing PITR ≥ 7d"] {
input. db. pitr_window_days < 7
}
deny["No restore test in 30d"] {
now() - input. db. last_restore_test > 3024h
}
9) Mashqlar va testlar (Game Days)
Stsenariylar jadvali: MB yo’qolishi, «buzilgan» ma’lumotlar, KMS nosozligi, mintaqaning pasayishi, to’satdan egress-limit.
Chastota: har chorakda - kritik missiyalar uchun; yarim yilda bir marta - qolganlari uchun.
O’quv metrikasi: RTA/RPA vs maqsadlar, avtomatik qadamlar ulushi, qo’lda aralashuvlar soni, pleybukdagi xatolar.
Relizlardagi Chaos-smoke: qaramlikning tanazzulga uchrashi DR yoʻllarini buzmasligi kerak.
T0: cut off the primary database (firewall drop)
T + 2m: GSLB shift 20% of traffic, then 100% at SLO_ok
T + 6m: checking business invariants and lag replication
T + 10m: post-drill: fixing RTA/RPA, playbook improvements
10) Pleybuklar (kanonik shablon)
yaml playbook: "dr-failover-region-a-to-b"
owner: "platform-sre"
rto: "15m"
rpo: "5m"
triggers:
- "health(region-a)==down"
- "slo_breach(payments)"
prechecks:
- "backup_catalog ok; last_restore_test < 30d"
- "pitr_window >= 7d"
steps:
- "Announce incident; open war-room; assign IC"
- "Freeze writes in region-a (flag write_readonly)"
- "Promote db-b to primary; verify replication stopped cleanly"
- "Shift GSLB 20%→50%→100%; monitor p95/error"
- "Enable compensations and re-drive queues"
validation:
- "Business invariants (balances, duplicate_checks)"
- "Synthetic tests green; dashboards stable 30m"
rollback:
- "If db-b unhealthy: revert traffic; engage restore from PITR T-Δ"
comms:
- "Status updates each 15m; external note if SEV1"
11) DR kuzatish metrikasi
Replica lag (sek.), RPO-drift (maqsadli va haqiqiy RPO o’rtasidagi farq).
Restore SLI: atrof-muhit bo’yicha sovuq/iliq tiklanish vaqti.
Coverage: pleybuklar/backaplar bilan xizmatlar %/PITR ≥ N kun.
Drill score: avtomatik qadamlar ulushi, RTA taqsimoti, xato chastotasi.
Immutabellik: WORM/air-gapped’dagi orqa qo’shimchalar%.
Hodisa metrikasi: navbat uzunligi/feyloverdan keyingi re-drive tezligi.
12) Qiymat va murosalar
CapEx/OpEx: issiq stend Active/Active-dan arzonroq, ammo Pilot Light-dan qimmatroq.
Egress: mintaqalararo/bulutlararo replikatsiya pul turadi; kesh/kompresssiya/lokal agregatlar.
RTO/RPO vs $: RPOning har bir «toʻqqiztasi» va soniyasi bir necha baravar qimmat - biznes bilan kelishing.
Yashil oynalar: batch-replikatsiyalar - arzon/« yashil »soatlarda.
13) Xavfsizlik va komplayens
«Tinch» va «tranzitda» shifrlash, mintaqalar bo’yicha alohida KMS domenlari.
Immutable-backaplar, ransomware himoyasi: «3-2-1» (3 nusxa, 2 ta tashuvchi, 1 ta oflayn), MFA-delete.
Yurisdiksiyalar: PII uchun geo-pinning, bekaplarni mahalliylashtirish, TTL ustidagi Legal Hold.
Vaqt boʻyicha foydalanish: DR operatsiyalari uchun vaqtinchalik rollar, audit jurnali.
14) Anti-patternlar
«Rejani keyinroq yozamiz» - ta’limotsiz DR.
Mantiqiy buzilishdan himoyalanmagan replikatsiya xatoni tezda ko’paytiradi.
Bitta KMS/maxfiy hudud - feylover mumkin emas.
Doimiy tiklanishsiz bekaplar - «shredinger» DR.
Hududlar o’rtasidagi sinxron tranzaksiyalar - kaskadli latentlik/pasayish.
Hech qanday ustuvorlik yo’q: hamma narsa uchun bir xil DR darajasi (qimmat va foydasiz).
15) Arxitektorning chek-varaqasi
1. Servislar va stsenariylar boʻyicha RTO/RPO/RLO aniqlanganmi?
2. Maʼlumotlar tasniflandi: haqiqat manbai, PITR/oyna, WORM/immutable?
3. DR (Backup/Restore, Pilot, Warm, A/P, A/A) per-servis darajasi tanlanganmi?
4. Tarmoq: GSLB/Anycast, sertifikatlar/zaxirali kalitlar, «read-only» bayroqlari?
5. Ilova: idempotentlik, outbox/inbox, kompensatsiya tranzaksiyalari?
6. IaC/GitOps/Policy as Code: Ikkinchi mintaqa uchun bitta bosish?
7. Mashg’ulotlar: jadval, KPI RTA/RPA, o’qishdan keyingi harakatlar?
8. Monitoring: lag, RPO-drift, restore-SLI, drill-score, immutable backaplar?
9. Xavfsizlik/komplayens: KMS-domenlar, yurisdiksiyalar, Legal Hold?
10. Qiymati: egress byudjeti, «yashil» derazalar, iqtisodiy asoslangan daraja?
16) Mini-retseptlar va sketchlar
16. Postgres uchun 1 PITR (g’oya):
bash base backup daily + WAL archive pg_basebackup -D/backups/base/$ (date +% F)
archive_command='aws s3 cp %p s3://bucket/wal/%f --sse'
restore pg_restore --time "2025-10-31 13:21:00Z"...
16. 2 Mantiqiy buzilishdan himoya qilish (kechiktirilgan replika):
yaml replication:
mode: async apply_delay: "30m" # window to roll back on corruption
16. 3 Trafikni almashtirish (psevdo-API GSLB):
bash gslb set-weight api. example. com region-a 0 gslb set-weight api. example. com region-b 100
16. 4. Feyloverdan (psevdokoddan) keyin invariantlarni tekshirish:
python assert total_balance(all_accounts) == snapshot_total assert no_duplicates(events_since(t_failover))
Xulosa
DR - bu texnik va tashkiliy qarorlar qabul qilish qobiliyati. Real RTO/RPOlarni aniqlang, yetarli darajadagi tayyorgarlikni tanlang, infratuzilma va tekshirishlarni avtomatlashtiring, muntazam ravishda mashq qiling va haqiqiy RTA/RPAni o’lchang. Shunda baxtsiz hodisa falokatga emas, balki boshqariladigan va bashorat qilinadigan hodisaga aylanadi.