

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 上實作混沌工程 AWS
<a name="implementation"></a>

混沌工程是[AWS 彈性生命週期](https://docs.aws.amazon.com/prescriptive-guidance/latest/resilience-lifecycle-framework/introduction.html)評估和測試階段的一部分，如下圖所示。分散式應用程式不會與其他應用程式或用戶端分開運作，因此我們建議您檢閱整個彈性生命週期。隨著網路的演進、上游和下游應用程式經歷轉移，以及用戶端用量隨時間變化，分散式應用程式的變更是固定的。

![AWS 彈性生命週期的五個關鍵階段。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/chaos-engineering-on-aws/images/resilience-lifecycle.png)


若要了解這些應用程式變更如何影響其彈性，請將混沌工程作為day-to-day操作的一部分。您可以採用不同的方式實作混沌實驗：
+ **臨機操作** – 您可以將混沌實驗作為一次性實驗來執行，以解決特定問題或疑問。
+ **混沌遊戲日** – 這些是結構化和週期性事件，旨在驗證應用程式的可靠性和彈性。混沌遊戲日的目的是識別人員、程序和技術的潛在彈性問題或缺陷，並練習識別、緩解和回應事件的程序和程序。
+ **混沌管道** – 持續整合和持續交付 (CI/CD) 是關於建置新功能，並將其安全地部署到整個環境。若要實作混沌工程實驗，請建立與您的 CI/CD 管道分開的混沌管道。為了了解原因，假設您想要將單一混沌工程實驗新增至 CI/CD 管道，為下游元件注入增加的封包遺失。該實驗執行 3 次，每次需要 5 分鐘才能完成。每次執行時，封包遺失從 10% 增加到 20% 到 30%，實驗整體需要 15 分鐘才能完成。如果您有 100 個平行部署，則必須等待 1500 分鐘，才能完成單一實驗。如果您有 10 個實驗要執行，對開發人員的影響將無法承受。大規模的混沌工程需要自己的管道，可讓您平行於軟體開發生命週期 (SDLC) 程序執行實驗。
+ **Canary 部署** – Canary 為混沌實驗提供測試環境。透過將一小部分的流量導向 Canary 服務，或使用流量鏡射或重播等方法，您可以驗證新的基礎設施或程式碼變更，而不會對穩定的生產系統造成任何影響。您可以針對 Canary 執行實驗並視需要注入錯誤，因為您可以限制對最終使用者的影響範圍。
+ **排程實驗** – 您可以排程實驗來驗證應用程式的可預測復原機制。使用排程實驗重播常見事件，擷取您的系統如何從事件中復原，例如終止自動擴展群組後方的 EC2 執行個體、移除 Kubernetes Pod，或刪除 Amazon ECS 任務。