

# REL13-BP05 自動化回復
<a name="rel_planning_for_recovery_auto_recovery"></a>

 實作經測試、可靠、可觀測且可重現的自動復原機制，以減少故障的風險和業務影響。

 **預期成果：**您已針對復原程序實作記錄完整、標準化且經過徹底測試的自動化工作流程。您的復原自動化會自動修正資料遺失或無法使用屬於低風險的次要問題。您可針對嚴重事件快速調用復原程序、觀察執行修復過程時的行為，並且在發現危險情況或故障時結束程序。

 **常見的反模式：**
+  您依賴處於失敗或降級狀態的元件或機制做為復原計畫的一部分。
+  您的復原程序需要手動介入，例如主控台存取 (也稱為*點按操作*)。
+  您在資料遺失或無法使用處於高風險的情況下，自動初始化復原程序。
+  您未納入中止無法運作或會產生其他風險的復原程序的機制 (例如 *Andon cord* 或 *大型紅色停止按鈕*)。

 **建立此最佳實務的優勢：**
+  復原操作擁有更高的可靠性、可預測性和一致性。
+  能夠實現更嚴格的復原目標，包括復原時間點目標 (RTO) 和復原點目標 (RPO)。
+  降低在事件期間復原失敗的可能性。
+  降低容易發生人為錯誤的手動復原程序伴隨的失敗風險。

 **未建立此最佳實務時的曝險等級：**中 

## 實作指引
<a name="implementation-guidance"></a>

 若要實作自動復原程序，您需要一套使用 AWS 服務和最佳實務的全方位方法。若要開始進行，請找出工作負載中的關鍵元件和潛在的失敗點。制定可在不需要人為介入的情況下復原您的工作負載和資料的自動化程序。

 使用基礎設施即程式碼 (IaC) 原則來制定復原自動化。這可讓復原環境與來源環境保持一致，並允許復原程序的版本控制。若要協調複雜的復原工作流程，請考慮 [AWS Systems Manager Automations](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) 或 [AWS Step Functions](https://aws.amazon.com/step-functions/) 等解決方案。

 自動化復原程序可提供顯著的優勢，並可協助您更輕鬆地達成復原時間點目標 (RTO) 和復原點目標 (RPO)。不過，這些程序可能會遇到非預期的情況，而導致程序失敗或本身產生新風險，例如額外的停機時間和資料遺失。為了降低此風險，請提供可快速停止進行中復原自動化的功能。停止後，您就可以調查並採取修正步驟。

 對於支援的工作負載，請考慮採用 AWS 彈性災難復原 (AWS DRS) 這類解決方案來提供自動容錯移轉。AWSDRS 會持續將您的機器 (包括作業系統、系統狀態組態、資料庫、應用程式和檔案) 複寫至您的目標 AWS 帳戶 和慣用區域中的預備區域。如果事件發生，AWS DRS 會自動將複寫的伺服器轉換到 AWS 上復原區域中完整佈建的工作負載。

 自動復原的維護和改善是一個持續進行的過程。根據學到的經驗持續測試和精進復原程序，並隨時掌握可增強復原功能的新 AWS 服務和功能。

### 實作步驟
<a name="implementation-steps"></a>

1.  **規劃自動復原** 

   1.  徹底檢閱工作負載架構、元件和相依性，以識別和規劃自動復原機制。將工作負載的相依性分類為*硬*和*軟*相依性。硬相依性是指工作負載無法在沒有此相依性的情況下運作，且此相依性無法替代。軟相依性是指工作負載平常使用的相依性，此相依性可使用臨時替代系統或程序取代，也可以透過[正常降級](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_mitigate_interaction_failure_graceful_degradation)處理。

   1.  建立程序以識別和復原缺少或損毀的資料。

   1.  定義在復原動作完成後，用來確認復原穩定狀態的步驟。

   1.  考慮讓復原的系統就緒可提供完整服務所需的任何動作，例如預熱和填入快取。

   1.  考慮在復原過程中可能遇到的問題，以及如何偵測和修復這些問題。

   1.  考慮無法存取主要站點及其控制平面的情況。確認復原動作可以在不依賴主要站點的情況下單獨執行。考慮採用 [Amazon 應用程式復原控制器 (ARC)](https://aws.amazon.com/application-recovery-controller/) 這類解決方案來重新導向流量，而不需要手動改變 DNS 記錄。

1.  **制定自動復原程序** 

   1.  實作自動故障偵測和容錯移轉機制，不需手動介入即可自動復原。建置像是 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 中的儀表板，用來報告自動復原程序的進度和運作狀態。納入確認成功復原的程序。提供中止進行中復原程序的機制。

   1.  針對無法自動復原的故障，製作[程序手冊](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_testing_resiliency_playbook_resiliency)做為備援程序，並考量您的[災難復原計畫](https://aws.amazon.com/disaster-recovery/faqs/#Core_concepts)。

   1.  依照 [REL13-BP03](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_planning_for_recovery_dr_tested.html) 中所述，測試復原程序。

1.  **準備復原** 

   1.  評估復原站點的狀態，並提前部署關鍵元件。如需詳細資訊，請參閱 [REL13-BP04](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_planning_for_recovery_config_drift.html)。

   1.  定義明確的角色、責任，以及復原操作的決策流程，並且讓整個組織的利害關係人和團隊參與其中。

   1.  定義初始化復原程序的條件。

   1.  建立計畫來還原復原程序，並視需要或在安全時恢復您的主要站點。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [REL07-BP01 取得或擴展資源時使用自動化](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_adapt_to_changes_autoscale_adapt.html) 
+  [REL11-BP01 監控工作負載的所有元件以偵測故障](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_withstand_component_failures_monitoring_health.html) 
+  [REL13-BP02 使用定義的復原策略來滿足復原目標](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_planning_for_recovery_disaster_recovery.html) 
+  [REL13-BP03 測試災難復原實作以驗證實作](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_planning_for_recovery_dr_tested.html) 
+  [REL13-BP04 管理 DR 站點或區域的組態偏移](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_planning_for_recovery_config_drift.html) 

 **相關文件：**
+  [AWS 架構部落格：災難復原系列](https://aws.amazon.com/blogs/architecture/tag/disaster-recovery-series/) 
+  [AWS 上工作負載的災難復原：在雲端中復原 (AWS 白皮書)](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-workloads-on-aws.html) 
+  [使用 Amazon Route 53 ARC 和 AWS Step Functions 協調災難復原自動化](https://aws.amazon.com/blogs/networking-and-content-delivery/orchestrate-disaster-recovery-automation-using-amazon-route-53-arc-and-aws-step-functions/) 
+  [使用 AWS CDK 建置 AWS Systems Manager Automation 執行手冊](https://aws.amazon.com/blogs/mtbuild-aws-systems-manager-automation-runbooks-using-aws-cdk/) 
+  [AWS Marketplace：可用於災難復原的產品](https://aws.amazon.com/marketplace/search/results?searchTerms=Disaster+recovery) 
+  [AWS Systems Manager Automation](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) 
+  [AWS 彈性災難復原](https://aws.amazon.com/disaster-recovery/) 
+  [使用彈性災難復原進行容錯移轉和容錯恢復](https://docs.aws.amazon.com/drs/latest/userguide/failback.html) 
+  [AWS 彈性災難復原資源](https://aws.amazon.com/disaster-recovery/resources/) 
+  [APN 合作夥伴：可協助進行災難復原的合作夥伴](https://aws.amazon.com/partners/find/results/?keyword=Disaster+Recovery) 

 **相關影片：**
+  [AWS re:Invent 2018：適用於多區域主動-主動應用程式的架構模式 (ARC209-R2)](https://youtu.be/2e29I3dA8o4) 
+  [AWS re:Invent 2022：AWS On Air 搭配 AWS 彈性災難復原的 AWS 容錯恢復](https://youtu.be/Ok-vpV8b1Hs) 