在一個由很多微服務組成的分散式系統中,我們永遠難以全面掌握發生什麼事件會導致系統局部不可用,甚至全面崩潰。但我們卻可以盡可能地在這些不可用的情況發生之前找出系統中的脆弱點。本書介紹了Netflix的工程師團隊是如何根據多年實踐經驗主動發現系統中脆弱點的一整套方法。
這套方法現在已經逐漸演變成電腦科學的一門新興學科,即“混沌工程”。通過一系列可控的實驗和執行實驗的原則,混沌工程將揭示出分散式系統中隨時發生的各類事件是如何逐步導致系統整體不可用的。本書既適合研發、測試人員用來瞭解如何構建健壯的系統,也適合軟體架構師用來瞭解設計創建高可用微服務體系的前沿方法,同時更適合在大型互聯網或技術組織中專門負責系統穩定性的工程團隊閱讀。
Ali Basiri是Netflix混沌工程團隊的創始人,他致力於通過混沌自動化平臺(ChAP)、混沌猴子和FIT等一系列彈性計畫確保Netflix的可用性。 在此之前,Ali負責Netflix的主動區域容錯移轉功能,並開發了Citrus——一種使用生產流量的分散式負載測試工具。 在Netflix之前,Ali是PagerDuty的第一位員工,致力於PagerDuty的彈性工作,以保證至少一次通知交付。
侯傑,TGO 鯤鵬會會員,美利金融技術副總裁,整體負責美利金融技術研發工作。曾在愛點擊,IBM 中國,IBM 澳大利亞擔任研發管理,諮詢管理等職位,帶領團隊負責過多個大規模金融行業資訊化專案,和互聯網轉型實踐。畢業于南京大學。
第一部分 混沌工程介紹 21
第1 章 為什麼需要混沌工程 25
混沌工程和測試的區別 25
混沌工程絕不是Netflix 的專屬 28
實施混沌工程的前提條件 31
第2 章 管理複雜性 35
理解複雜系統 37
系統複雜性的例子 41
從例子中學到了什麼 45
第二部分 混沌工程原則 49
第3 章 建立穩定狀態的假設 55
如何描述穩定狀態 60
建立假設 61
第4 章 用多樣的現實世界事件做驗證 65
第5 章 在生產環境中進行實驗 73
狀態和服務 74
生產環境中的輸入 76
協力廠商系統 77
生產環境變更 79
外部有效性 79
不願意實踐混沌工程的說辭 80
離生產環境越近越好 82
第6 章 自動化實驗以持續運行 84
自動執行實驗 84
自動創建實驗 89
第7 章 最小化爆炸半徑 91
第三部分 混沌工程實踐 97
第8 章 設計實驗 100
選定假設 101
設定實驗的範圍 101
識別出要監控的指標 102
在組織內溝通到位 103
執行實驗 104
分析實驗結果 105
擴大實驗範圍 105
自動化實驗 106
第9 章 混沌工程成熟度模型 107
熟練度 108
應用度 110
繪製成熟度模型圖 112
第10 章 結論 114
一些資源 114