View a markdown version of this page

在 上實作混沌工程 AWS - AWS 方案指引

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

在 上實作混沌工程 AWS

混沌工程是AWS 彈性生命週期評估和測試階段的一部分,如下圖所示。分散式應用程式不會與其他應用程式或用戶端分開運作,因此我們建議您檢閱整個彈性生命週期。隨著網路的演進、上游和下游應用程式經歷轉移,以及用戶端用量隨時間變化,分散式應用程式的變更是固定的。

AWS 彈性生命週期的五個關鍵階段。

若要了解這些應用程式變更如何影響其彈性,請將混沌工程作為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 任務。