隨著越來越多的公司轉(zhuǎn)向構(gòu)建微服務(wù)及其他形式的分布式系統(tǒng),這些系統(tǒng)的復(fù)雜性也與日俱增。雖然無法消除復(fù)雜性,但通過實踐混沌工程,可以發(fā)現(xiàn)系統(tǒng)中的漏洞,并防患于未然。本書向工程師展示了如何在優(yōu)化系統(tǒng)滿足業(yè)務(wù)目標(biāo)的同時應(yīng)對復(fù)雜的系統(tǒng)。
兩位作者是該領(lǐng)域的杰出人物,他們在Netflix公司合作期間開創(chuàng)了“混沌工程”這一學(xué)科。在本書中,他們不僅闡述了混沌工程的目標(biāo)、方法和價值,還促進了各行業(yè)的從業(yè)者針對該主題展開交流。本書內(nèi)容豐富,立足于發(fā)展史,面向未來,是打開混沌工程之門的黃金之鑰。
通過閱讀本書,你將:
* 了解混沌工程如何使組織能夠應(yīng)對復(fù)雜性。
* 探索一種方法論來避免應(yīng)用程序、網(wǎng)絡(luò)和基礎(chǔ)設(shè)施出現(xiàn)故障。
* 通過谷歌、微軟、Slack和LinkedIn等行業(yè)專家的真實故事,學(xué)習(xí)如何將理論應(yīng)用于實踐。
* 建立思考軟件系統(tǒng)內(nèi)部復(fù)雜性的框架。
* 圍繞Game Day設(shè)計一個混沌工程實施計劃,并朝著目標(biāo)明確的自動化實驗方向發(fā)展。
* 了解如何設(shè)計能夠?qū)崿F(xiàn)持續(xù)協(xié)作的混沌實驗。
謹(jǐn)以此書獻給“老伙計”David Hussman譯注1。正是他最初帶來了星星之火,才讓混沌工程社區(qū)漸成燎原之勢。
混沌工程已然騰飛。在各個垂直領(lǐng)域,成千上萬的各種類型和規(guī)模的公司都將混沌工程作為核心實踐,以使公司的產(chǎn)品和服務(wù)更安全、更可靠。雖然相關(guān)主題的資源(尤其是會議演講)十分豐富,但都無法描繪混沌工程的全貌。
Nora和Casey著手編寫了這本完整討論混沌工程的書。因為整個行業(yè)都在廣泛實踐混沌工程,而且該學(xué)科也在不斷地發(fā)展,所以編寫本書并不輕松。本書會展現(xiàn)混沌工程背后的歷史,討論奠定混沌工程基礎(chǔ)的理論、定義和原則,研究整個軟件行業(yè)實現(xiàn)混沌工程的方式,分析傳統(tǒng)軟件無法企及的示例,以及混沌工程實踐的未來。
前言 1
導(dǎo)言:混沌工程的誕生 5
第一部分 搭建舞臺 13
第1章 遇到復(fù)雜系統(tǒng) 15
1.1 思考復(fù)雜性 15
1.2 遇到復(fù)雜性 17
1.3 面對復(fù)雜性 26
1.4 接納復(fù)雜性 29
第2章 應(yīng)對復(fù)雜系統(tǒng) 30
2.1 動態(tài)安全模型 30
2.2 復(fù)雜性的經(jīng)濟支柱模型 33
2.3 系統(tǒng)化視角 36
第3章 原則概述 37
3.1 混沌工程是什么 37
3.2 混沌工程不是什么 39
3.3 高級原則 41
3.4 原則的未來 45
第二部分 投入實戰(zhàn) 47
第4章 Slack的災(zāi)難劇場 49
4.1 舊系統(tǒng)的混沌工程改造 49
4.2 災(zāi)難劇場 52
4.3 混沌工程的過程 53
4.4 過程如何演化 59
4.5 獲得管理層支持 60
4.6 結(jié)果 60
4.7 總結(jié) 62
第5章 谷歌DiRT:災(zāi)難恢復(fù)測試 63
5.1 DiRT測試的生命周期 65
5.2 谷歌的測試范圍 77
5.3 總結(jié) 79
第6章 微軟的多樣化故障和實驗優(yōu)先級 81
6.1 為什么一切都如此復(fù)雜 81
6.2 實驗結(jié)果的類別 83
6.3 故障優(yōu)先級 86
6.4 多樣化的程度 87
6.5 大規(guī)模部署實驗 90
6.6 總結(jié) 91
第7章 LinkedIn心中有會員 92
7.1從災(zāi)難中學(xué)習(xí) 93
7.2 細(xì)化實驗?zāi)繕?biāo) 93
7.3 安全地進行大規(guī)模實驗 95
7.4 LinkedOut實戰(zhàn) 96
7.5 總結(jié) 105
第8章 采納并演進混沌工程的第一資本金融公司 106
8.1 第一資本金融公司案例研究 107
8.2 設(shè)計實驗時需要注意的事項 109
8.3 工具鏈 110
8.4 團隊結(jié)構(gòu) 111
8.5 傳播 112
8.6 總結(jié) 113
第三部分 人為因素 115
第9章 先見之明 117
9.1 混沌工程與韌性 118
9.2 混沌工程的步驟 118
9.3 混沌工程實驗的工具支持 120
9.4 有效的內(nèi)部合作 122
9.5 總結(jié) 127
第10章 人類系統(tǒng)的混沌 128
10.1 系統(tǒng)中的人 128
10.2 工程師團隊的適應(yīng)能力 130
10.3 付諸實踐 132
第11章 決策圈中的人 144
11.1 實驗的原因、方法和時機 145
11.2 總結(jié) 151
第12章 實驗選擇問題及解決方案 152
12.1 選擇實驗 152
12.2 可觀測性:機會來了 158
12.3 總結(jié) 160
第四部分 商業(yè)因素 163
第13章 混沌工程的投資回報率 165
13.1 減少事故所帶來的好處轉(zhuǎn)瞬即逝 165
13.2 Kirkpatrick模型 166
13.3 投資回報率替代方案示例 168
13.4 附帶投資回報率 169
13.5 總結(jié) 170
第14章 將心態(tài)、科學(xué)和混沌開放 171
14.1 協(xié)作心態(tài) 171
14.2 開放科學(xué)與開放源代碼 173
14.3 總結(jié) 176
第15章 混沌成熟度模型 177
15.1 采用度 177
15.2 復(fù)雜性 182
15.3 總結(jié) 186
第五部分 持續(xù)演進 189
第16章 持續(xù)驗證 191
16.1 持續(xù)驗證從何而來 191
16.2 持續(xù)驗證系統(tǒng)的類型 193
16.3 持續(xù)驗證示例:ChAP 194
16.4 持續(xù)驗證的未來用例 197
第17章 介入信息物理系統(tǒng) 199
17.1 信息物理系統(tǒng)的興起 200
17.2 功能安全遇上混沌工程 200
17.3 信息物理系統(tǒng)的軟件 203
17.4 混沌工程超越FMEA 204
17.5 探針效應(yīng) 206
17.6 總結(jié) 208
第18章 當(dāng)HOP遇上混沌工程 210
18.1 什么是HOP 210
18.2 HOP的主要原則 210
18.3 HOP遇上混沌工程 212
18.4 總結(jié) 215
第19章 數(shù)據(jù)庫的混沌工程 216
19.1 為什么我們需要混沌工程 216
19.2 應(yīng)用混沌工程 218
19.3 檢測故障 222
19.4 自動化混沌工程 223
19.5 總結(jié) 226
第20章 安全混沌工程的案例 227
20.1 現(xiàn)代安全手段 228
20.2 安全混沌工程與現(xiàn)有方法 231
20.3 安全Game Day 233
20.4 安全混沌工程工具示例:ChaoSlingr 234
20.5 總結(jié) 236
第21章 結(jié)語 238
作者簡介 241
譯者簡介 241
封面簡介 242