I09 · 災難復原 詳細 ROADMAP

計畫文件,不會被 Quartz 渲染。 回主 roadmap → infra/ROADMAP.md


章節目標

萬一出事怎麼辦——Backup / Restore / DR / Chaos Engineering。本章處理系統層的災難復原,從單檔案損毀到整個 region 掛掉的範圍。

跟 ops-notes 分工:本章講DR 的策略與設計;真實事件(掛了什麼、怎麼處理)在 ops-notes。


🌱 基本介紹

#主題SlugStage大綱
01DR 全景01-dr-landscape🌱從單檔 restore 到全 region 切換;RTO / RPO 光譜

❓ 為什麼需要

#主題SlugStage大綱
02為什麼「有 backup」還不夠02-why-backup-not-enough🌱Backup 跟 restore 是兩件事;定期 restore 演練;沒驗過的 backup = 沒 backup
03為什麼 RTO / RPO 要討價還價03-why-rto-rpo-negotiation🌱100% uptime 無限成本;跟業務定義「可接受的損失」;Error budget 對話
04為什麼 Chaos Engineering 不是主動找碴04-why-chaos-engineering🌱被動等事件不如主動驗證;漸進式引入;Netflix / Stripe 實踐

🕰️ 演進

#主題SlugStage大綱
05Backup / DR 基礎⛔️ infra/disaster-recovery/28-backup-disaster-recovery🌿跨系列
06DR 演進驅動力06-dr-evolution-drivers🌱Tape backup 恢復慢撞牆 → Disk backup;單一備份點撞牆 → 3-2-1 rule;pasive standby 成本撞牆 → Active-Active / Pilot Light;被動等事件撞牆 → Chaos Engineering

🧠 知識型

F09-A Backup 策略

#主題SlugStage大綱
07Backup 基礎(3-2-1 rule)⛔️ infra/disaster-recovery/28-backup-disaster-recovery🌿跨系列
08DB Backup / PITR 深入08-db-backup-pitr🌱PG WAL 歸檔、MySQL binlog、MongoDB oplog;PITR 實測 RPO
09Object Storage Backup09-object-backup🌱S3 cross-region replication / versioning / Glacier;備份的備份
10K8s Backup(Velero)10-k8s-backup-velero🌱PV + resource 備份;跨 cluster 還原;災難切換 workflow
11應用層 Backup(Redis / MQ)11-application-layer-backup🌱Redis RDB、MQ message durability;什麼值得備份
12Data Recovery 分層12-data-recovery-tiers🌱三種資料損毀場景的完整 workflow:(1) 邏輯錯誤刪資料(recover to PITR before delete);(2) 硬碟壞 / RAID 壞(restore from backup);(3) 被攻擊加密 / 惡意修改(見 #13 Ransomware)。Detection → Decision → Execute 流程;跟 #08 PITR 配合
13Ransomware Recovery(勒索軟體恢復)13-ransomware-recovery🌱2024+ 必修:Colonial Pipeline / Change Healthcare 實戰解剖;immutable backup(S3 Object Lock / WORM storage)、air-gapped backup(離線 / 不同帳戶);detection(heavy encryption activity / unusual backup access);protocol:隔離感染 → 評估影響 → 從乾淨 backup restore → 驗證無殘留

F09-B Disaster Recovery 策略

#主題SlugStage大綱
14RTO / RPO 定義與量測14-rto-rpo🌱Recovery Time / Point Objective;跟業務對話的語言;度量方法
15DR 架構模式15-dr-patterns🌱Backup & Restore / Pilot Light / Warm Standby / Active-Active;成本 vs RTO 權衡
16Multi-region Failover(跟 I08 連動)16-multi-region-failover-dr🌱DNS / traffic switch;狀態同步;split-brain 防範
17Database Failover 實戰17-db-failover-practical🌱Patroni auto-failover;RDS Multi-AZ;跨 region promote replica
18Cross-region Replication 成本18-cross-region-replication-cost🌱Egress 費 / latency / 一致性;哪些資料值得複製
19Stateful Workload DR(K8s)19-stateful-workload-dr🌱跟 I03 #23 StatefulSet / I04 #13 DB-on-K8s 呼應:PG / Kafka / ES on K8s 的 DR 特殊挑戰——資料 + 配置 + Pod identity(StatefulSet pod name) 全部要 restore;Velero + pre/post hooks;Operator-aware backup(CloudNativePG backup CRD);跨 cluster replica promote 流程

F09-C Chaos Engineering

#主題SlugStage大綱
20Chaos Engineering 基礎20-chaos-engineering-basics🌱Chaos Monkey → Chaos Engineering Principles;hypothesis-driven experiments
21Chaos 工具生態21-chaos-tools🌱Chaos Mesh / Litmus / Gremlin / AWS FIS;K8s-native vs SaaS
22漸進式引入 Chaos22-chaos-gradual-intro🌱先 Dev → Staging → 限定 prod;buy-in 策略
23DR Automation:從 Chaos 到自動化 DR Drill23-dr-automation🌱演化路徑:手動演練 → 排程 Chaos(kill pod / inject latency)→ 自動化 DR drill(季度自動切 region)→ 結果回報機制(drill 自動開 ticket、修復項目 feed back to runbook);跟 I07 CI/CD 整合(pipeline 觸發 DR drill)

F09-D Incident Response

#主題SlugStage大綱
24Incident Response 流程24-incident-response🌱Severity 分級 / On-call rotation / War room / Runbook;跟 ops-notes/ 協作
25Postmortem 文化25-postmortem-culture🌱Blameless postmortem;5 Whys;持續改進機制
26DR event 完整 workflow(本章到 ops-notes)26-dr-workflow-to-ops-notes🌱閉環設計:告警(I05 #26 chain)→ open ticket(PM07 Issue Tracker)→ runbook 執行(ops-notes O13 methodology)→ 具體案例 commit(ops-notes O01-O12)→ postmortem → update runbook → update Chaos test;從 I09 到 ops-notes 的完整流程,原本 #26 ops-notes 協作升級

F09-E Business Continuity Plan

DR 講技術面怎麼恢復;BCP 講業務連續性——客服還能接電話嗎?利害關係人怎麼告知?infra 要支援 BCP 的什麼設施。

#主題SlugStage大綱
27BCP vs DR:infra 要支援的業務連續性27-bcp-vs-dr🌱BCP 涵蓋:客戶溝通(status page Statuspage / Atlassian / Upptime)、內部協調(備援溝通管道 like Slack fallback)、利害關係人通知模板;infra 層要提供 status page / 聯絡人系統 / 備援 webhook;跟 management/engineering-process/04-incident-management 連動

🔧 小實作注意事項

#主題SlugStage大綱
28Backup 還原演練28-backup-restore-drill🌱每季演練;timing;驗證資料一致性
29Multi-region Failover 演練29-multi-region-drill🌱測 DNS 切換時間;驗應用是否還能寫;RPO 驗證
30第一個 Chaos Experiment30-first-chaos-experiment🌱Dev 環境 kill random pod;觀察自動恢復;記錄學到什麼

💣 Anti-pattern

#主題SlugStage大綱
31DR Anti-patterns31-dr-antipatterns🌱Backup 從不測 restore、只有本地 backup(同一 DC 燒了就沒了)、RTO 設 0(不切實際)、DR 計畫寫完不演練、Chaos 直接上 prod 沒準備、Incident 結束沒 postmortem、Runbook 太久沒更新;2024+ 新 anti:沒 immutable backup 被勒索軟體同時加密、Stateful workload DR 只 restore Pod 忘了 Pod identity、DR drill 手動做但從不 automation、BCP 只有 checklist 沒有 alternative comms channel

🧰 對應檢查工具

#主題SlugStage大綱
32DR 工具32-dr-tooling🌱K8s Backup: Velero / Kasten K10 / Trilio;DB Backup: pgBackRest / Barman / Percona Xtrabackup;Chaos: Chaos Mesh / Litmus / Gremlin / AWS FIS;Immutable Storage: S3 Object Lock / AWS Backup vault;Incident: PagerDuty / Opsgenie;Status Page: Atlassian Statuspage / Upptime(OSS)/ cState;DR Automation: Chaos Mesh scheduled experiments / AWS Route 53 ARC

📎 補充

#主題SlugStage大綱
S01台灣企業 DR 實況s01-taiwan-dr-reality🌱雙機房 / 雲地混合;法規 / 保險要求;跟國際大廠的落差
S02DR 的 Compliance 面向s02-dr-compliance🌱SOC 2 / ISO 27001 對 DR 的要求;跟 I06 連動

章節進度統計

  • 知識主題:32 + 2 補充 = 34 項(2026-04 新增 6 題:Data Recovery 分層 #12、Ransomware Recovery #13、Stateful Workload DR #19、DR Automation #23、DR workflow 閉環 #26、F09-E BCP #27)
  • 🌿 growing:2(既有 + pointer)
  • 🌱 seed:32

跨系列連結

  • infra/disaster-recovery/28-backup-disaster-recovery(原始篇)
  • ops-notes/(真實事件 + postmortem)
  • → I04 Data Ops(DB backup 深度)
  • → I05 Observability(incident 時的觀測)
  • → I08 Cloud(Multi-region DR 成本)
  • backend/deployment/ B18(deployment 跟 DR 協調)
  • management/engineering-process/08-release-methodology/01(發布策略跟 DR)