本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 上使用混沌工程來提高彈性並改善客戶體驗 AWS
Laurent Domb,Amazon Web Services 聯邦財務首席技術專家
2025 年 4 月 (文件歷史記錄)
混沌工程是對應用程式進行實驗的紀律,以建立對組織和應用程式在生產環境中承受亂流條件的能力的信心。這是一種主動的恢復能力方法,目標是透過跨人員、程序和技術引入受控制的故障,來驗證您的應用程式和組織是否能夠吸收、適應和最終從服務損害中復原。其目的是在可能導致生產中斷或其他中斷之前,識別並消除弱點。
在 Amazon,我們了解分散式系統中的故障是不可避免的,此時即使發生故障仍是正常的操作模式。由於服務之間的互動一定會失敗,因此您需要了解您的服務在各種故障模式期間如何反應,並建置可應對關鍵漏洞的服務,例如相依性故障、重試風暴、可用區域受損和主機資源耗盡。
讓我們以重試風暴為例。用戶端中的當地語系化故障可能會對多個 服務產生重大影響。這通常稱為平滑效果。重試風暴是滑蟲效果的資訊清單,其中失敗的相依性會觸發用戶端和這些用戶端的用戶端重試失敗的操作,導致流量呈指數增長。服務變得過載,因為除了重試流量之外,還必須回應一般流量,同時處理效能降低。
混沌工程已成為對分散式系統日益複雜度的回應。這是一種多學科方法,結合了混沌理論、系統思維和工程的原則,以設計和管理可應對意外事件和行為的複雜系統。混沌工程的核心在於了解和管理複雜系統在不確定性和不可預測性條件下的行為。它認識到,依賴預測和控制結果的傳統工程方法,通常不足以處理分散式系統的複雜和動態本質。隨著這些系統的成長,它們通常超過任何單一個人的理解範圍。
混沌工程提供概念、技術和工具,刻意將故障注入系統,以便在生產中出現弱點之前發現。這種主動方法可讓組織建立信心,讓他們的系統在壓力條件下執行。雖然混沌工程仍是一項不斷發展的實務,但它代表了設計、管理和操作現代運算系統的基本轉變,以便在面對日益增加的複雜性和互連性時保持彈性。
本指南的下列各節討論混沌工程的優點、說明如何進行混沌工程實驗,以及說明在組織中大規模實作混沌工程的方法。還包括範例實驗規劃和實驗結果文件,您可以用作混沌工程實驗的範本。
下一節探討混沌工程的特性與單元、煙霧或整合測試等傳統彈性測試有何不同。