本書共分為6個(gè)部分:第一部分概述DevOps的歷史和三個(gè)基本原則,即“三步工作法”;第二部分介紹開(kāi)啟DevOps轉(zhuǎn)型的過(guò)程;第三到五部分深入探討“三步工作法”的各個(gè)要素;第六部分關(guān)注如何將安全性和合規(guī)性正確集成到日常工作中。全書涵蓋40余個(gè)DevOps案例,以谷歌、亞馬遜、Facebook等全球知名企業(yè)和組織的實(shí)際調(diào)查結(jié)果為依據(jù),展示如何通過(guò)現(xiàn)代化的運(yùn)維管理提升管理效率,進(jìn)而為企業(yè)贏得更大市場(chǎng)、創(chuàng)造更多利潤(rùn)。
高德納公司(Gartner)高管合伙人 李長(zhǎng)華
中國(guó)中鋼集團(tuán)有限公司信息管理中心總經(jīng)理 李紅
中國(guó)衛(wèi)通集團(tuán)信息中心主任 李煒
EXIN國(guó)際信息科學(xué)考試學(xué)會(huì)亞太區(qū)總經(jīng)理、DevOpsDays中國(guó)發(fā)起人 孫振鵬
中國(guó)農(nóng)業(yè)銀行數(shù)據(jù)中心總經(jīng)理 涂曉軍
DevOps時(shí)代和高效運(yùn)維社區(qū)創(chuàng)始人 蕭田國(guó)
雪松控股集團(tuán)CIO、前殼牌中國(guó)CIO 徐斌
中信銀行信息技術(shù)管理部總經(jīng)理 王燕
※ 聯(lián)合推薦 ※
技術(shù)的有效管理對(duì)于商業(yè)競(jìng)爭(zhēng)力而言十分重要。數(shù)十年來(lái),技術(shù)一直在努力平衡敏捷性、可靠性和安全性。在此背景下,本書旨在提供從啟動(dòng)DevOps轉(zhuǎn)型到實(shí)現(xiàn)目標(biāo)所需的理論、原則和實(shí)踐,幫助企業(yè)提高生產(chǎn)力、盈利能力并且贏得市場(chǎng)。本書不僅適用于從事或影響技術(shù)價(jià)值流中工作的所有人,通常包括產(chǎn)品管理、開(kāi)發(fā)、QA、IT運(yùn)維和信息安全,而且適用于業(yè)務(wù)和市場(chǎng)。
Gene Kim
Tripwire創(chuàng)始人、前CTO,IT Revolution創(chuàng)始人,DevOps企業(yè)峰會(huì)主辦人,暢銷書《鳳凰項(xiàng)目》合著者。
Jez Humble
DevOps Research and Assessment公司CTO,加州大學(xué)伯克利分校信息學(xué)院講師;曾任ThoughtWorks顧問(wèn)!毒嫫髽I(yè)》和Jolt大獎(jiǎng)圖書《持續(xù)交付》的合著者。
Patrick Debois
DevOps之父,致力于通過(guò)在開(kāi)發(fā)、項(xiàng)目管理和系統(tǒng)管理之中應(yīng)用敏捷技術(shù)來(lái)填補(bǔ)項(xiàng)目和運(yùn)維之間的鴻溝。
John Willis
Chain Bridge System創(chuàng)始人,曾任Docker公司布道師,現(xiàn)任職于SJ Technologies公司。
【譯者簡(jiǎn)介】
劉征
Nutanix路坦力架構(gòu)師,EXIN國(guó)內(nèi)DevOps Master和DevOps Professional認(rèn)證講師,持有紅帽RHCA認(rèn)證和AWS架構(gòu)師認(rèn)證,諳熟企業(yè)數(shù)據(jù)中心的IT服務(wù)管理。目前致力于推廣DevOps相關(guān)的理念和實(shí)踐,在DevOps社區(qū)中積極地參與培訓(xùn)和研討會(huì)等活動(dòng),是DevOpsDays大會(huì)社區(qū)在中國(guó)的核心組織者和志愿工作者。
王磊
前ThoughtWorks咨詢師,EXIN國(guó)內(nèi)DevOps Master認(rèn)證講師。擁有10多年軟件行業(yè)經(jīng)驗(yàn),以及服務(wù)化架構(gòu)、持續(xù)交付和DevOps轉(zhuǎn)型等方面的豐富實(shí)踐經(jīng)驗(yàn)。國(guó)內(nèi)較早倡導(dǎo)和實(shí)踐微服務(wù)的先行者,著有國(guó)內(nèi)微服務(wù)架構(gòu)相關(guān)圖書《微服務(wù)架構(gòu)與實(shí)踐》,是西安DevOps Meetup活動(dòng)的聯(lián)合發(fā)起人。
馬博文
前ThoughtWorks咨詢師,AWS認(rèn)證助理架構(gòu)師。擁有多年Web開(kāi)發(fā)和DevOps經(jīng)驗(yàn),熟悉持續(xù)交付、微服務(wù)。曾參與翻譯《Scala編程實(shí)戰(zhàn)》《DevOps實(shí)踐》等書,是西安DevOps Meetup活動(dòng)的發(fā)起人。
曾朝京
Micro Focus解決方案顧問(wèn),曾參加EXIN國(guó)內(nèi)Devops Master講師認(rèn)證培訓(xùn)。長(zhǎng)期從事IT運(yùn)維管理領(lǐng)域咨詢工作,曾為能源、金融、航空運(yùn)輸、政府行業(yè)中的多個(gè)大型企業(yè)提供IT運(yùn)維管理規(guī)劃。目前致力于探索DevOps理念在企業(yè)IT部門的實(shí)踐。
第 一部分 DevOps介紹
第 1章 敏捷、持續(xù)交付和三步法 4
1.1 制造業(yè)價(jià)值流 4
1.2 技術(shù)價(jià)值流 4
1.2.1 聚焦于部署前置時(shí)間 5
1.2.2 關(guān)注返工指標(biāo)——%C/A 7
1.3 三步工作法:DevOps的基礎(chǔ)原則 7
1.4 小結(jié) 8
第 2章 第 一步:流動(dòng)原則 9
2.1 使工作可見(jiàn) 9
2.2 限制在制品數(shù) 10
2.3 減小批量大小 11
2.4 減少交接次數(shù) 13
2.5 持續(xù)識(shí)別和改善約束點(diǎn) 14
2.6 消除價(jià)值流中的困境和浪費(fèi) 15
2.7 小結(jié) 16
第3章 第二步:反饋原則 17
3.1 在復(fù)雜系統(tǒng)中安全地工作 17
3.2 及時(shí)發(fā)現(xiàn)問(wèn)題 18
3.3 群策群力,戰(zhàn)勝問(wèn)題獲取新知 19
3.4 在源頭保障質(zhì)量 21
3.5 為下游工作中心而優(yōu)化 22
3.6 小結(jié) 22
第4章 第三步:持續(xù)學(xué)習(xí)與實(shí)驗(yàn)原則 23
4.1 建立學(xué)習(xí)型組織和安全文化 23
4.2 將日常工作的改進(jìn)制度化 25
4.3 把局部發(fā)現(xiàn)轉(zhuǎn)化為全局優(yōu)化 26
4.4 在日常工作中注入彈性模式 27
4.5 領(lǐng)導(dǎo)層強(qiáng)化學(xué)習(xí)文化 27
4.6 小結(jié) 29
4.7 第 一部分總結(jié) 29
第二部分 從何處開(kāi)始
第5章 選擇合適的價(jià)值流作為切入點(diǎn) 32
5.1 綠地項(xiàng)目與棕地項(xiàng)目 34
5.2 兼顧記錄型系統(tǒng)和交互型系統(tǒng) 35
5.3 從最樂(lè)于創(chuàng)新的團(tuán)隊(duì)開(kāi)始 36
5.4 擴(kuò)大DevOps的范圍 37
5.5 小結(jié) 38
第6章 理解、可視化和運(yùn)用價(jià)值流 39
6.1 確定創(chuàng)造客戶價(jià)值所需的團(tuán)隊(duì) 40
6.2 針對(duì)團(tuán)隊(duì)工作繪制價(jià)值流圖 40
6.3 組建專門的轉(zhuǎn)型團(tuán)隊(duì) 42
6.3.1 擁有共同的目標(biāo) 43
6.3.2 保持小跨度的改進(jìn)計(jì)劃 44
6.3.3 為非功能性需求預(yù)留20%的開(kāi)發(fā)時(shí)間,減少技術(shù)債務(wù) 44
6.3.4 提高工作的可視化程度 47
6.4 用工具強(qiáng)化預(yù)期行為 47
6.5 小結(jié) 48
第7章 參考康威定律設(shè)計(jì)組織結(jié)構(gòu) 49
7.1 組織原型 51
7.2 過(guò)度職能導(dǎo)向的危害(“成本優(yōu)化”) 51
7.3 組建以市場(chǎng)為導(dǎo)向的團(tuán)隊(duì)(“速度優(yōu)化”) 52
7.4 使職能導(dǎo)向有效 53
7.5 將測(cè)試、運(yùn)維和信息安全融入日常工作 54
7.6 使團(tuán)隊(duì)成員都成為通才 54
7.7 投資于服務(wù)和產(chǎn)品,而非項(xiàng)目 56
7.8 根據(jù)康威定律設(shè)定團(tuán)隊(duì)邊界 56
7.9 創(chuàng)建松耦合架構(gòu),提高生產(chǎn)力和安全性 57
7.10 小結(jié) 60
第8章 將運(yùn)維融入日常開(kāi)發(fā)工作 61
8.1 創(chuàng)建共享服務(wù),提高開(kāi)發(fā)生產(chǎn)力 62
8.2 將運(yùn)維工程師融入服務(wù)團(tuán)隊(duì) 63
8.3 為每個(gè)服務(wù)團(tuán)隊(duì)分派運(yùn)維聯(lián)絡(luò)人 64
8.4 邀請(qǐng)運(yùn)維工程師參加開(kāi)發(fā)團(tuán)隊(duì)的會(huì)議 65
8.4.1 邀請(qǐng)運(yùn)維工程師參加每日站會(huì) 65
8.4.2 邀請(qǐng)運(yùn)維工程師參加回顧會(huì)議 66
8.4.3 使用看板圖展示運(yùn)維工作 66
8.5 小結(jié) 67
8.6 第二部分總結(jié) 67
第三部分 第 一步:流動(dòng)的技術(shù)實(shí)踐
第9章 為部署流水線奠定基礎(chǔ) 70
9.1 按需搭建開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境和生產(chǎn)環(huán)境 71
9.2 應(yīng)用統(tǒng)一的代碼倉(cāng)庫(kù) 72
9.3 使基礎(chǔ)設(shè)施的重建更容易 74
9.4 運(yùn)行在類生產(chǎn)環(huán)境里才算“完成” 75
9.5 小結(jié) 76
第 10章 實(shí)現(xiàn)快速可靠的自動(dòng)化測(cè)試 77
10.1 對(duì)代碼和環(huán)境做持續(xù)構(gòu)建、測(cè)試和集成 79
10.2 構(gòu)建快速可靠的自動(dòng)化測(cè)試套件 81
10.2.1 在自動(dòng)化測(cè)試中盡早發(fā)現(xiàn)錯(cuò)誤 83
10.2.2 盡可能并行地快速執(zhí)行測(cè)試 84
10.2.3 先編寫自動(dòng)化測(cè)試 84
10.2.4 盡量將手動(dòng)測(cè)試自動(dòng)化 85
10.2.5 在測(cè)試套件中集成性能測(cè)試 86
10.2.6 在測(cè)試套件中集成非功能性需求測(cè)試 86
10.3 在部署流水線失敗時(shí)拉下安燈繩 87
10.4 小結(jié) 89
第 11章 應(yīng)用和實(shí)踐持續(xù)集成 90
11.1 小批量開(kāi)發(fā)與大批量合并 92
11.2 應(yīng)用基于主干的開(kāi)發(fā)實(shí)踐 93
11.3 小結(jié) 95
第 12章 自動(dòng)化和低風(fēng)險(xiǎn)發(fā)布 96
12.1 自動(dòng)化部署流程 97
12.1.1 應(yīng)用自動(dòng)化的自助式部署 100
12.1.2 在部署流水線中集成代碼部署 101
12.2 將部署與發(fā)布解耦 104
12.2.1 基于環(huán)境的發(fā)布模式 105
12.2.2 基于應(yīng)用的發(fā)布模式更安全 109
12.3 持續(xù)交付和持續(xù)部署實(shí)踐的調(diào)查 112
12.4 小結(jié) 113
第 13章 降低發(fā)布風(fēng)險(xiǎn)的架構(gòu) 114
13.1 能提高生產(chǎn)力、可測(cè)試性和安全性的架構(gòu) 115
13.2 架構(gòu)原型:?jiǎn)误w架構(gòu)與微服務(wù) 116
13.3 安全地演進(jìn)企業(yè)架構(gòu) 118
13.4 小結(jié) 121
13.5 第三部分總結(jié) 121
第四部分 第二步:反饋的技術(shù)實(shí)踐
第 14章 建立能發(fā)現(xiàn)并解決問(wèn)題的遙測(cè)系統(tǒng) 125
14.1 建設(shè)集中式監(jiān)控架構(gòu) 127
14.2 建立生產(chǎn)環(huán)境的應(yīng)用程序日志遙測(cè) 129
14.3 使用遙測(cè)指導(dǎo)問(wèn)題的解決 131
14.4 將建立生產(chǎn)遙測(cè)融入日常工作 132
14.5 建立自助訪問(wèn)的遙測(cè)和信息輻射器 133
14.6 發(fā)現(xiàn)和填補(bǔ)遙測(cè)的盲區(qū) 135
14.6.1 應(yīng)用程序和業(yè)務(wù)度量指標(biāo) 136
14.6.2 基礎(chǔ)架構(gòu)度量指標(biāo) 137
14.6.3 顯示疊加的指標(biāo)組合 138
14.7 小結(jié) 139
第 15章 分析遙測(cè)數(shù)據(jù)以更好地預(yù)測(cè)故障和實(shí)現(xiàn)目標(biāo) 140
15.1 用均值和標(biāo)準(zhǔn)差識(shí)別潛在問(wèn)題 141
15.2 異常狀態(tài)的處理和告警 142
15.3 非高斯分布遙測(cè)數(shù)據(jù)的問(wèn)題 143
15.4 應(yīng)用異常檢測(cè)技術(shù) 146
15.5 小結(jié) 149
第 16章 應(yīng)用反饋實(shí)現(xiàn)安全部署 150
16.1 通過(guò)遙測(cè)使部署更安全 151
16.2 開(kāi)發(fā)和運(yùn)維共同承擔(dān)值班工作 153
16.3 讓開(kāi)發(fā)人員跟蹤工作對(duì)下游的影響 153
16.4 讓開(kāi)發(fā)人員自行管理生產(chǎn)服務(wù) 155
16.5 小結(jié) 159
第 17章 將假設(shè)驅(qū)動(dòng)的開(kāi)發(fā)和A/B測(cè)試融入日常工作 160
17.1 A/B測(cè)試簡(jiǎn)史 161
17.2 在功能測(cè)試中集成A/B測(cè)試 162
17.3 在發(fā)布中集成A/B測(cè)試 162
17.4 在功能規(guī)劃中集成A/B測(cè)試 163
17.5 小結(jié) 165
第 18章 建立評(píng)審和協(xié)作流程以提升當(dāng)前工作的質(zhì)量 166
18.1 變更審批流程的危險(xiǎn) 168
18.2 “過(guò)度控制變更”的潛在危險(xiǎn) 168
18.3 變更的協(xié)調(diào)和排程 170
18.4 變更的同行評(píng)審 170
18.5 人工測(cè)試和變更凍結(jié)的潛在危害 173
18.6 利用結(jié)對(duì)編程改進(jìn)代碼變更 173
18.7 消除官僚流程 176
18.8 小結(jié) 177
18.9 第四部分總結(jié) 178
第五部分 第三步:持續(xù)學(xué)習(xí)與實(shí)驗(yàn)的技術(shù)實(shí)踐
第 19章 將學(xué)習(xí)融入日常工作 180
19.1 建立公正和學(xué)習(xí)的文化 181
19.2 舉行不指責(zé)的事后分析會(huì)議 182
19.3 盡可能廣泛地公開(kāi)事后分析會(huì)議結(jié)果 184
19.4 降低事故容忍度,尋找更弱的故障信號(hào) 185
19.5 重新定義失敗,鼓勵(lì)評(píng)估風(fēng)險(xiǎn) 186
19.6 在生產(chǎn)環(huán)境注入故障來(lái)恢復(fù)和學(xué)習(xí) 186
19.7 創(chuàng)建故障演練日 187
19.8 小結(jié) 189
第 20章 將局部經(jīng)驗(yàn)轉(zhuǎn)化為全局改進(jìn) 190
20.1 使用聊天室和聊天機(jī)器人自動(dòng)積累組織知識(shí) 190
20.2 軟件中便于重用的自動(dòng)化、標(biāo)準(zhǔn)化流程 192
20.3 創(chuàng)建全組織共享的單一源代碼庫(kù) 192
20.4 運(yùn)用自動(dòng)化測(cè)試記錄和交流實(shí)踐來(lái)傳播知識(shí) 194
20.5 通過(guò)確定非功能性需求來(lái)設(shè)計(jì)運(yùn)維 194
20.6 把可重用的運(yùn)維用戶故事納入開(kāi)發(fā) 195
20.7 確保技術(shù)選型有助于實(shí)現(xiàn)組織目標(biāo) 195
20.8 小結(jié) 197
第 21章 預(yù)留組織學(xué)習(xí)和改進(jìn)的時(shí)間 198
21.1 償還技術(shù)債務(wù)的制度化慣例 199
21.2 讓所有人教學(xué)相長(zhǎng) 200
21.3 在DevOps會(huì)議中分享經(jīng)驗(yàn) 201
21.4 傳播實(shí)踐的內(nèi)部顧問(wèn)和教練 203
21.5 小結(jié) 204
21.6 第五部分總結(jié) 204
第六部分 集成信息安全、變更管理和合規(guī)性的技術(shù)實(shí)踐
第 22章 將信息安全融入每個(gè)人的日常工作 207
22.1 將安全集成到開(kāi)發(fā)迭代的演示中 207
22.2 將安全集成到缺陷跟蹤和事后分析會(huì)議中 208
22.3 將預(yù)防性安全控制集成到共享源代碼庫(kù)及共享服務(wù)中 208
22.4 將安全集成到部署流水線中 209
22.5 保證應(yīng)用程序的安全性 210
22.6 確保軟件供應(yīng)鏈的安全 214
22.7 確保環(huán)境的安全 215
22.8 將信息安全集成到生產(chǎn)環(huán)境遙測(cè)中 216
22.9 在應(yīng)用程序中建立安全遙測(cè)系統(tǒng) 217
22.10 在環(huán)境中建立安全遙測(cè)系統(tǒng) 217
22.11 保護(hù)部署流水線 219
22.12 小結(jié) 219
第 23章 保護(hù)部署流水線 220
23.1 將安全和合規(guī)性集成到變更批準(zhǔn)流程中 220
23.2 將大量低風(fēng)險(xiǎn)變更重新歸類為標(biāo)準(zhǔn)變更 221
23.3 如何處理常規(guī)變更 222
23.4 減少對(duì)職責(zé)分離的依賴 224
23.5 確保為審計(jì)人員和合規(guī)人員留存文檔和證據(jù) 226
23.6 小結(jié) 228
23.7 第六部分總結(jié) 228
行動(dòng)起來(lái)——本書總結(jié) 229
附加材料
附 錄 232
附錄1 DevOps的大融合 232
附錄2 約束理論和核心的長(zhǎng)期沖突 234
附錄3 惡性循環(huán)列表 235
附錄4 交接和隊(duì)列的危害 235
附錄5 工業(yè)安全神話 236
附錄6 豐田安燈繩 237
附錄7 軟件包產(chǎn)品 238
附錄8 事后分析會(huì)議 238
附錄9 猿猴軍團(tuán) 239
附錄10 上線時(shí)間透明化 240
參考資源 241
致 謝 243
EXIN DevOps Professional認(rèn)證備考指南&模擬題 245