DR-strategiýalary we RTO/RPO
1) Esasy ýörelgeler
1. Maksatlar serişdelerden öň. Ilki bilen RTO/RPO we möhüm ssenarileri düzýäris, soň bolsa tehnologiýany saýlaýarys.
2. Ähmiýeti boýunça segmentasiýa. Hyzmatlaryň hemmesi "altyn" talap etmeýär; iş kritikligi boýunça bölüň.
3. Maglumatlar DR. ýadrosydyr. Yzygiderlilik, köpeltmek, zaýalanmagy ýüze çykarmak we dikeldiş nokady "demirden" has möhümdir.
4. Awtomatlaşdyrylmagy we barlanylyşy. DR IaC, dikeldiş synaglary we telemetriýa bolmazdan manysyz.
5. Taglymatlar we subutnamalar. Yzygiderli "oýun güni" bolmadyk meýilnama - taýynlyk hyýaly.
6. Howpsuzlyk we laýyklyk. Şifrlemek, izolýasiýa, WORM/immutable-backup, DPA/ýurisdiksiýa.
2) Adalgalar we laýyklyklar
RTO - wakadan hyzmatyň dikeldilmegine çenli wagt "kadaly".
RPO - dikeldilende iň soňky sagdyn maglumat nokadynyň "ýaşy".
RLO (Recovery Level Objective) - dikeldilmeli funksiýa derejesi (iň az durmuşa ukyply hyzmat).
MTD (Maximum Tolerable Downtime) - işiň kabul ederliksiz zyýan çekýän bosagasy.
RTA/RPA (Actual) - amallardan hakyky dikeldiş wagty/nokady.
Aragatnaşyk: RTO ≤ MTD; RPA ≤ RPO. Maksatlar bilen faktyň arasyndaky boşluk - postmortemiň we gowulaşmalaryň predmeti.
3) DR strategiýalarynyň synplary (taýýarlyk derejeleri)
4) Özümizi goraýan ssenariýalar
Sebitiň/bulutyň/maglumat merkeziniň ýitmegi (elektrik, tor, üpjün ediji).
Maglumatlaryň korrupsiýasy/operatoryň ýalňyşlygy (aýyrmak, "döwülen" sözler, logiki zaýalanmak).
Zyýanly programma üpjünçiligi/şifrleýji (ransomware).
Çykyş/konfigurasiýa kemçiligi (köpçülikleýin çykyş).
Garaşlylygyň çökmegi (KMS, DNS, syrlar, töleg üpjün edijisi).
Hukuk hadysalary (petiklemek, maglumatlaryň ýurisdiksiýadan çykarylmagyny gadagan etmek).
Her ssenariýa üçin jogapkär RTO/RPO, DR derejesini, pleýbuky görkeziň.
5) Maglumat strategiýalary (RPO açary)
5. 1 Bellikler
Doly + goşmaça + geleşik žurnallary (DB üçin).
Immutable/WORM-ammar we awtonom göçürmeler ("air-gapped").
Meta-maglumatlar we kriptografik gollar bilen bellikleriň katalogy; synag tertibi boýunça dikeldiş.
5. 2 Köpeltmek
Sinhron (pes RPO, ↑ gizlinlik, zeper ýetmek howpy).
Asinhron (pes täsir, RPO> 0; zaýalanma detektory bilen birleşdiriň).
CDC (Change Data Capture) akym köpeltmek we ýagdaýy täzeden gurmak üçin.
5. 3 Logiki zaýalanmakdan goramak
≥ N gün penjiresi bilen wersiýa/" wagt nokady" (PITR).
Inwariantlaryň belgileri (balanslar, pullar, çeksumlar) - "döwülen" maglumatlaryň irki detekti.
"Haýal" köpeltmek kanallary (delay 15-60 min) derrew zaýalanmagyna garşy bufer hökmünde.
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) Programma, ýagdaý, keş
Statessiz gatlak - islendik sebitde ulalýarys we täzeden açýarys (Git-de şekil/çart/manifestolar).
Döwlet (DB/keş/kyu): hakykat çeşmesi - DB-leriň biri; kesmeler we indeksler gaýtadan dikeldilýär.
Idempotentlik we re-drive - wakalary gaýtadan eltmäge rugsat berilýär; outbox/inbox, dedup we wersiýalary ulanyň.
7) Tor we giriş nokady
GSLB/DNS-feýlower: latency/health-based, gysga TTL heläkçilik penjiresine.
Anycast/L7-proxy: ýeke-täk IP, sebitleriň saglygy boýunça marşrut.
Sebitleýin domenler we ýurisdiksiýa syýasaty (PII üçin geo-pinning).
Sertifikat feýloweri/KMS: ätiýaçlyk zynjyrlary, 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) Iş modeli we awtomatlaşdyryş
IaC/GitOps: ikinji sebitiň infrastrukturasy = kod, "bir nokatly" ýerleşdirme.
Policy as Code: gate "DR-manifestleri/bellikleri/alertleri ýok - goýberilmeýär".
Runbooks: ädimme-ädim görkezmeler we iki sebit üçin birmeňzeş "gyzyl düwme".
Syrlar: gysga ömürli kreditler, OIDC federasiýasy, eglişik/yzyna çagyryş meýilnamasy.
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) Maşklar we synaglar (Oýun günleri)
Ssenariler tablisasy: DB ýitirilmegi, "döwülen" maglumatlar, KMS-iň şowsuzlygy, sebitiň ýykylmagy, birden egress-çäk.
Ýygylyk: möhüm missiýa üçin çärýekleýin; her alty aýda bir gezek - galanlary üçin.
Türgenleşigiň metrikleri: RTA/RPA vs maksatlar, awtomatiki ädimleriň paýy, el bilen gatyşmalaryň sany, pleýbukyň ýalňyşlyklary.
Neşirlerde Chaos-smoke: endikleriň zaýalanmagy DR ýollaryny "bozmaly" däldir.
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) Pleýbuklar (kanoniki şablon)
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) Gözegçilik ölçegleri DR
Replica lag (sek.), RPO-drift (maksatly we hakyky RPO-laryň arasyndaky tapawut).
Dikeldiş SLI: daşky gurşaw boýunça sowuk/ýyly dikeldiş wagty.
Coverage: playbook/backup hyzmatlarynyň% -i/PITR ≥ N gün.
Drill score: awtomatiki ädimleriň paýy, RTA paýlanyşy, ýalňyşlyklaryň ýygylygy.
Immutability: WORM/air-gapped-de% yzlar.
Waka metrikleri: nobatlaryň uzynlygy/feilowerden soň re-drive tizligi.
12) Bahasy we eglişikleri
CapEx/OpEx: Active/Active-den arzan, ýöne Pilot Light-dan has gymmat.
Egress: sebitara/bulutara replikasiýa pul çykdajylary; keş/gysyş/lokal agregatlar.
RTO/RPO vs $: Elýeterliligiň her "dokuzy" we RPO sekuntda has gymmat - işewürlik bilen ylalaşyň.
Greenaşyl penjireler: batch-replikasiýa - arzan/" ýaşyl "sagatda.
13) Howpsuzlyk we gabat gelmek
"Ýeke-täk" we "tranzitde" şifrlemek, sebitler boýunça aýry KMS domenleri.
Immutable-backup, ransomware gorag: "3-2-1" (3 göçürme, 2 daşaýjy, 1 oflayn), MFA-delete.
Ýurisdiksiýalar: PII üçin geo-pinning, bellikleriň lokalizasiýasy, TTL-iň üstündäki "Legal Hold".
Wagt elýeterliligi: DR amallary üçin wagtlaýyn rollar, audit magazineurnaly.
14) Anti-patternler
"Soňra meýilnama ýazalyň" - maşksyz DR.
Logiki zaýalanmakdan goramazdan köpeltmek - ýalňyşlygy çalt köpelder.
KMS/syr sebiti - Feylower mümkin däl.
Yzygiderli dikeldişsiz bekaplar - "şredinger" DR.
Sebitleriň arasynda ýakyndan baglanyşykly sinhron amallar - kaskad gizlinligi/pese gaçmagy.
Ileri tutulýan zat ýok: hemme zat üçin birmeňzeş DR derejesi (gymmat we peýdasyz).
15) Arhitektoryň çek-sanawy
1. Hyzmatlar we ssenariler boýunça RTO/RPO/RLO kesgitlenildi?
2. Maglumatlar klassifikasiýa edildi: hakykat çeşmesi, PITR/penjire, WORM/immutable?
3. DR (Backup/Restore, Pilot, Warm, A/P, A/A) per-hyzmat derejesi saýlandyňyzmy?
4. Tor: GSLB/Anycast, şahadatnamalar/ätiýaçlyk açarlary, "read-only" baýdaklary?
5. Programma: amallaryň öwezini dolýan idempotentlik, outbox/inbox?
6. IaC/GitOps/Policy as Code: Ikinji sebiti açmak üçin bir gezek basmak?
7. Maşklar: meýilnama, KPI RTA/RPA, okuwdan soňky hereketler?
8. Gözegçilik: lag, RPO-drift, restore-SLI, drill-score, imutable backaps?
9. Howpsuzlyk/gabat gelmek: KMS-domenler, ýurisdiksiýalar, Legal Hold?
10. Bahasy: egress býudjeti, "ýaşyl" penjireler, ykdysady taýdan esaslandyrylan dereje?
16) Kiçi reseptler we eskizler
16. 1 Postgres üçin PITR (ideýa):
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 Logiki zaýalanmakdan goramak (gijikdirilen göçürme):
yaml replication:
mode: async apply_delay: "30m" # window to roll back on corruption
16. 3 Traffigi üýtgetmek (psevdo-API GSLB):
bash gslb set-weight api. example. com region-a 0 gslb set-weight api. example. com region-b 100
16. 4 Feýlowerden soň üýtgewsizlikleri barlamak (pseudokod):
python assert total_balance(all_accounts) == snapshot_total assert no_duplicates(events_since(t_failover))
Netije
DR, tehniki we guramaçylyk kararlaryny zyýanyň köpelmeginden has çalt kabul etmek ukybydyr. Hakyky RTO/RPO-lary kesgitläň, ýeterlik taýýarlyk derejesini saýlaň, infrastrukturany we barlaglary awtomatlaşdyryň, yzygiderli türgenleşiň we hakyky RTA/RPA-lary ölçäň. Şonda awariýa betbagtçylyga däl-de, öňünden aýdyp boljak netijä öwrüler.