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