1 什么是混沌工程
混沌工程(Chaos
Engineering)是一種系統穩定性保障手段,主要采用主動向系統中引入軟件或硬件的異常狀態(擾動)的方式,制造故障場景并根據系統在各種壓力下的行為表現確定優化策略。
應用混沌工程能夠校驗和評價系統抵抗擾動并保持正常運作的能力(穩定性),提前識別未知隱患,并及時修復,確保保障系統能夠抵御生產環境中的失控條件,提升整體穩定性。
2 混沌工程發展歷程
混沌工程首次提出是在2008 年 8
月,由網飛公司(Netflix)提出,當時提出的背景是網飛公司的數據庫發生故障使得網飛公司長達三天的停機,經濟損失巨大。于是網飛公司開始探索用混沌工程去優化穩定性保障體系,防止此類事件的再次發生,于是2010
年該公司開發Chaos Monkey
程序,其主要功能是隨機終止在生產環境中運行的虛擬機實例和容器,模擬系統基礎設施遭到破壞的場景,使得工程師能夠觀察服務是否健壯、有彈性,能否容忍計劃外的故障。

2012年Chaos
Monkey 在 Simain Army 項目中開源,Simian
Army成為首個開源的混純工程工具集,此舉為混沌工程工具的發展打下了基礎。
2015年網飛公司正式發布《混沌工程理念》(Principal of Chaos
Engineering),主要介紹了混沌工程實驗的目的、意義和方法論。2016 年混沌工程商業公司 Gremlin成立,混沌工程正式走向商用化。
2018 年開始,混沌工程的春天開始來臨,國內企業紛紛引入并實踐混沌工程,并在2019年推出國內廠商主導的混沌工程開源項目Chaos
Blade,2020年推出 Chaos Mesh,現已發展成為具備國際頂級影響力的混沌工程項目。
3 混沌工程和現階段穩定性保障措施的對比
(1)工作內容:現階段穩定性保障措施防范缺陷的引入,故障發生時對缺陷進行快速的識別和響應;而混沌工程通過實驗主動探究系統缺陷
(2)排查缺陷的類型:現階段穩定性保障措施排查低層次缺陷,比較明顯的缺陷,或已經引發故障的缺陷;而混沌工程排查未知的、潛在的缺陷,還未造成明顯后果的缺陷
(3)應對缺陷的方式:現階段穩定性保障措施被動響應,缺陷應對的開始時間取決于故障何時發生,缺陷應對成本不可控;而混沌工程主動響應,缺陷應對的開始時間取決于混沌工程,實驗時間,缺陷應對成本可控
(4)識別缺陷的效率:現階段穩定性保障措施效率低,對于一些觸發條件苛刻的潛在缺陷可能需要很長時間才能被識別;而混沌工程效率高,可以使潛在缺陷盡快暴露,縮短缺陷識別周期


4 實施混沌工程的意義
(1)對研發工程師、架構師來說,實施混沌工程可以加深對系統的理解,驗證系統架構的容錯能力
(2)對運維工程師來說,實施混沌工程能夠提高故障的應急效率,實現故障告警、定位、恢復的有效應對
(3)對于測試工程師來說,實施混沌工程可以彌補傳統測試方法留下的空白,更主動的方式探究系統問題
(4)對于產品設計人員來說,實施混沌工程可以了解產品在突發情況下的表現,提升客戶在突發情況下的產品使用體驗

來源:《中國信通院:混沌工程實踐指南(2021年)(43頁).pdf》
推薦閱讀:《8-第四范式-基于k8s的自動化混沌工程實踐-王丹丹.pdf》
《混沌工程實驗室:中國混沌工程調查報告(2021年)(21頁).pdf》
《姚遠-現代化應用的 DevOps 與混沌工程.pdf》