持續(xù)交付2.0 業(yè)務(wù)引領(lǐng)的DevOps精要(增訂本)
定 價(jià):99.9 元
- 作者:?jiǎn)塘?/span>
- 出版時(shí)間:2022/2/1
- ISBN:9787115577399
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.5
- 頁(yè)碼:338
- 紙張:
- 版次:02
- 開(kāi)本:16開(kāi)
本書(shū)“重新定義”了持續(xù)交付,增補(bǔ)了組織管理和架構(gòu)兩個(gè)維度,輔助以真實(shí)案例,對(duì)持續(xù)交付的諸多原則和實(shí)踐加以解讀,并對(duì)持續(xù)交付過(guò)程中的取舍原則加以論述。
本書(shū)分為3個(gè)部分:第一部分作者根據(jù)自己近十年的工作及咨詢經(jīng)歷,通過(guò)不斷總結(jié)、提煉和反思,對(duì)原有的持續(xù)交付進(jìn)行修正,重新定義持續(xù)交付為實(shí)現(xiàn)組織戰(zhàn)略目標(biāo)的能力,并引入持續(xù)交付的能力模型;第二部分闡述組織打造持續(xù)交付能力模型所需遵循的原則,包括基礎(chǔ)原則、組織原則和架構(gòu)原則;第三部分通過(guò)對(duì)多個(gè)互聯(lián)網(wǎng)公司案例的解讀,闡述如何根據(jù)組織的當(dāng)前狀況應(yīng)用相關(guān)原則對(duì)最佳實(shí)踐進(jìn)行取舍,并快速達(dá)到組織能力目標(biāo)。
本書(shū)適合大型互聯(lián)網(wǎng)公司的技術(shù)VP、技術(shù)負(fù)責(zé)人,中小型互聯(lián)網(wǎng)公司的CTO、技術(shù)VP、研發(fā)/測(cè)試/運(yùn)維負(fù)責(zé)人、主管及骨干,以及組織變革者閱讀。
1."重新定義"了持續(xù)交付,并增補(bǔ)了組織管理和架構(gòu)兩個(gè)維度;
2.在第1版的基礎(chǔ)上細(xì)節(jié)優(yōu)化,增補(bǔ)核心觀點(diǎn):工程效能其實(shí)是解決規(guī);瘑(wèn)題,而規(guī)模化的一個(gè)重點(diǎn)是一致性程度;
3.世界互聯(lián)網(wǎng)公司軟件交付工作原則與方法解析;
4.持續(xù)交付和DevOps理念在國(guó)內(nèi)的實(shí)踐者和布道者喬梁在持續(xù)交付領(lǐng)域多年實(shí)踐經(jīng)驗(yàn)的精華總結(jié);
5.國(guó)內(nèi)大型互聯(lián)網(wǎng)公司多位管理者與領(lǐng)域?qū)<液狭A情推薦。
持續(xù)交付2.0不只是關(guān)于軟件的交付模型,而是從業(yè)務(wù)問(wèn)題出發(fā),關(guān)注業(yè)務(wù)假設(shè)驗(yàn)證速度的雙環(huán)業(yè)務(wù)模型。只有從業(yè)務(wù)目標(biāo)出發(fā)的持續(xù)交付實(shí)踐才有強(qiáng)大的創(chuàng)造力和生命力!
書(shū)中指出,持續(xù)交付2.0雙環(huán)模型高速運(yùn)轉(zhuǎn)的三個(gè)支柱分別是組織機(jī)制、軟件架構(gòu)和軟件交付基礎(chǔ)設(shè)施,同時(shí)給出了提升價(jià)值探索環(huán)以及快速驗(yàn)證環(huán)運(yùn)轉(zhuǎn)速度的多種可行方法。
本書(shū)還為我們呈現(xiàn)了在企業(yè)內(nèi)部改善持續(xù)交付2.0能力所需遵循的基本原則,包括組織文化建設(shè)、軟件系統(tǒng)架構(gòu)、業(yè)務(wù)協(xié)作、配置管理、構(gòu)建集成、自動(dòng)化測(cè)試、發(fā)布與監(jiān)控七大板塊,并指出各領(lǐng)域?qū)嵺`關(guān)鍵點(diǎn),以及多種具有實(shí)操性的方法。同時(shí),通過(guò)3個(gè)完整的實(shí)踐案例過(guò)程分析,說(shuō)明每個(gè)企業(yè)或團(tuán)隊(duì)都必須從自己的業(yè)務(wù)目標(biāo)出發(fā),根據(jù)自己的實(shí)際情況,制定自己的改善路線。
敏思特咨詢公司聯(lián)合創(chuàng)始人,騰訊外聘高級(jí)管理顧問(wèn),DevOps領(lǐng)域國(guó)際級(jí)導(dǎo)師之一,持續(xù)交付雙環(huán)理論創(chuàng)始人,指導(dǎo)過(guò)很多大型軟件公司解決組織轉(zhuǎn)型與研發(fā)管理方面的相關(guān)問(wèn)題。國(guó)內(nèi)最早致力于通過(guò)敏捷開(kāi)發(fā)與精益理論提升軟件價(jià)值交付效率的實(shí)踐者之一,精研各種軟件工程方法論,2010年翻譯《持續(xù)交付》一書(shū),并結(jié)合8年實(shí)踐將工作心得整理成《持續(xù)交付2.0:業(yè)務(wù)引領(lǐng)的DevOps精要》。十多年來(lái),受邀參加各種大型技術(shù)會(huì)議(如QCon、AgileChina、DevOpsDays、MSTC等)并發(fā)表演講。
讀者可訪問(wèn)本書(shū)配套網(wǎng)站www.continuousdelivery20.com,持續(xù)獲得作者的最新分享,并參與互動(dòng)和交流。
目錄
第 1章 持續(xù)交付2.0 1
1.1 軟件工程發(fā)展概述 1
1.1.1 瀑布軟件開(kāi)發(fā)方法 1
1.1.2 敏捷軟件開(kāi)發(fā)方法 2
1.1.3 DevOps運(yùn)動(dòng) 3
1.1.4 持續(xù)交付1.0 4
1.2 持續(xù)交付2.0 7
1.2.1 精益思想 8
1.2.2 雙環(huán)模型 9
1.2.3 4個(gè)核心原則 11
1.2.4 持續(xù)交付七巧板 12
1.3 小結(jié) 13
第 2章 價(jià)值探索環(huán) 14
2.1 探索環(huán)的意義 14
2.2 探索環(huán)的4個(gè)關(guān)鍵環(huán)節(jié) 15
2.2.1 提問(wèn) 16
2.2.2 錨定 17
2.2.3 共創(chuàng) 19
2.2.4 精煉 22
2.3 工作原則 24
2.3.1 分解并快速試錯(cuò) 24
2.3.2 一次只驗(yàn)證一點(diǎn) 25
2.3.3 允許失敗 26
2.4 共創(chuàng)與精煉的常用方法 27
2.4.1 裝飾窗方法 27
2.4.2 最小可行特性法 29
2.4.3 特區(qū)法 30
2.4.4 定向探索法 30
2.4.5 稻草人法 31
2.4.6 最小可行產(chǎn)品法 32
2.5 實(shí)施注意事項(xiàng) 32
2.6 小結(jié) 35
第3章 快速驗(yàn)證環(huán) 36
3.1 驗(yàn)證環(huán)的目標(biāo) 36
3.2 驗(yàn)證環(huán)的4個(gè)關(guān)鍵環(huán)節(jié) 37
3.2.1 構(gòu)建 37
3.2.2 運(yùn)行 38
3.2.3 監(jiān)測(cè) 39
3.2.4 決策 39
3.3 工作原則 39
3.3.1 質(zhì)量?jī)?nèi)建 39
3.3.2 消除等待 40
3.3.3 重復(fù)事務(wù)自動(dòng)化 43
3.3.4 監(jiān)測(cè)一切 43
3.4 小結(jié) 44
第4章 持續(xù)交付2.0的組織文化 45
4.1 安全、信任與持續(xù)改善 45
4.1.1 失敗是安全的 45
4.1.2 相互信任 45
4.1.3 持續(xù)改善 46
4.2 文化塑造四步法 46
4.2.1 行為決定文化 46
4.2.2 谷歌的工程師質(zhì)量文化 48
4.2.3 Etsy的持續(xù)試驗(yàn)文化 49
4.3 行動(dòng)原則 50
4.3.1 價(jià)值導(dǎo)向 51
4.3.2 快速驗(yàn)證 51
4.3.3 持續(xù)學(xué)習(xí) 51
4.4 度量原則 55
4.4.1 度量指標(biāo)的4類屬性 56
4.4.2 度量的目標(biāo)是改善 57
4.4.3 古德哈特定律 57
4.4.4 度量應(yīng)有行動(dòng)決策 58
4.5 “改善套路”進(jìn)行持續(xù)改進(jìn) 58
4.6 小結(jié) 59
第5章 持續(xù)交付的軟件系統(tǒng)架構(gòu) 60
5.1 “大系統(tǒng)小做”原則 61
5.1.1 持續(xù)交付架構(gòu)要求 61
5.1.2 系統(tǒng)拆分原則 61
5.2 常見(jiàn)架構(gòu)模式 62
5.2.1 微核架構(gòu) 62
5.2.2 微服務(wù)架構(gòu) 63
5.2.3 巨石應(yīng)用 64
5.3 架構(gòu)改造實(shí)施模式 66
5.3.1 拆遷者模式 67
5.3.2 絞殺者模式 68
5.3.3 修繕者模式 68
5.3.4 數(shù)據(jù)庫(kù)的拆分方法 70
5.4 小結(jié) 70
第6章 業(yè)務(wù)需求協(xié)作管理 72
6.1 產(chǎn)品版本周期概述 73
6.1.1 準(zhǔn)備期 73
6.1.2 交付期 74
6.2 需求拆分的利與弊 75
6.2.1 需求拆分的收益 76
6.2.2 需求拆分的成本 78
6.3 需求拆分方法 79
6.3.1 需求的來(lái)源 80
6.3.2 技術(shù)債也是需求 80
6.3.3 參與需求拆分的角色 81
6.3.4 不平等的INVEST原則 82
6.3.5 五大拆分技法 82
6.3.6 七大組成部分 84
6.4 需求分析與管理工具集 85
6.4.1 用戶故事地圖 85
6.4.2 用戶故事樹(shù) 86
6.4.3 依賴關(guān)系圖 87
6.4.4 需求管理數(shù)字化平臺(tái) 87
6.5 團(tuán)隊(duì)協(xié)作管理工具 87
6.5.1 團(tuán)隊(duì)共享日歷 88
6.5.2 團(tuán)隊(duì)回顧 89
6.5.3 可視化故事墻 90
6.5.4 明確“完成”的定義 90
6.5.5 持續(xù)集成 91
6.5.6 故事驗(yàn)證 91
6.6 小結(jié) 91
第7章 部署流水線原則與工具設(shè)計(jì) 92
7.1 簡(jiǎn)單的部署流水線 92
7.1.1 簡(jiǎn)單的產(chǎn)品研發(fā)流程 92
7.1.2 初始部署流水線 93
7.1.3 流水線執(zhí)行狀態(tài)解析 95
7.2 部署流水線的設(shè)計(jì)與使用 95
7.2.1 流水線的設(shè)計(jì)原則 95
7.2.2 團(tuán)隊(duì)的協(xié)作紀(jì)律 97
7.3 部署流水線平臺(tái)的構(gòu)成 97
7.3.1 工具鏈總體架構(gòu) 97
7.3.2 平臺(tái)應(yīng)當(dāng)具備的基本
能力 99
7.3.3 工具鏈建設(shè)策略 100
7.4 基礎(chǔ)支撐服務(wù)的云化 100
7.4.1 基礎(chǔ)支撐服務(wù)的協(xié)作過(guò)程解析 101
7.4.2 編譯構(gòu)建管理服務(wù) 103
7.4.3 自動(dòng)化測(cè)試管理服務(wù) 104
7.4.4 軟件部署管理服務(wù) 105
7.4.5 基礎(chǔ)環(huán)境管理服務(wù) 106
7.5 企業(yè)制品庫(kù)的管理 107
7.5.1 制品庫(kù)的分類 107
7.5.2 制品庫(kù)的管理原則 108
7.6 多種多樣的部署流水線 108
7.6.1 多組件的部署流水線 108
7.6.2 個(gè)人部署流水線 109
7.6.3 部署流水線的不斷演進(jìn) 110
7.7 為開(kāi)發(fā)者構(gòu)建自助式工具 111
7.8 小結(jié) 113
第8章 利于集成的分支策略 114
8.1 版本控制系統(tǒng)的使用目的 114
8.1.1 集中式版本控制系統(tǒng) 114
8.1.2 分布式版本控制系統(tǒng) 115
8.1.3 版本控制系統(tǒng)中的基本概念 117
8.2 常見(jiàn)分支開(kāi)發(fā)模式 118
8.2.1 主干開(kāi)發(fā),主干發(fā)布 118
8.2.2 主干開(kāi)發(fā),分支發(fā)布 119
8.2.3 分支開(kāi)發(fā),主干發(fā)布 121
8.3 分支模式的演化 126
8.3.1 “三駕馬車(chē)”分支模式 126
8.3.2 Gitflow分支模式 127
8.3.3 GitHubFlow分支模式 128
8.4 分支策略的選擇 128
8.4.1 版本發(fā)布模式 128
8.4.2 分支策略與發(fā)布周期的關(guān)系 132
8.5 小結(jié) 133
第9章 持續(xù)集成 134
9.1 起源與定義 134
9.1.1 原始定義 135
9.1.2 一次集成過(guò)程 135
9.2 六步提交法 136
9.2.1 4個(gè)關(guān)鍵點(diǎn) 138
9.2.2 同步與異步模式 139
9.2.3 自查表 140
9.3 速度與質(zhì)量的權(quán)衡 141
9.3.1 分級(jí)構(gòu)建 141
9.3.2 多人同時(shí)提交的構(gòu)建 142
9.3.3 云平臺(tái)的威力 143
9.4 在團(tuán)隊(duì)中實(shí)施持續(xù)集成實(shí)踐 145
9.4.1 快速建立團(tuán)隊(duì)的持續(xù)集成實(shí)踐 145
9.4.2 分支策略與部署流水線 148
9.5 常見(jiàn)的實(shí)施問(wèn)題 150
9.5.1 工程師的開(kāi)發(fā)習(xí)慣 151
9.5.2 視而不見(jiàn)的掃描問(wèn)題 151
9.5.3 自動(dòng)化測(cè)試用例的缺乏 151
9.6 小結(jié) 152
第 10章 自動(dòng)化測(cè)試策略與方法 153
10.1 自動(dòng)化測(cè)試的自身定位 153
10.1.1 自動(dòng)化測(cè)試的優(yōu)勢(shì) 154
10.1.2 自動(dòng)化測(cè)試所需的 投入 155
10.2 突破傳統(tǒng)自動(dòng)化測(cè)試的困境 156
10.2.1 傳統(tǒng)自動(dòng)化測(cè)試的特點(diǎn) 157
10.2.2 自動(dòng)化測(cè)試的分層 157
10.2.3 不同類型的測(cè)試金字塔 160
10.3 自動(dòng)化測(cè)試的實(shí)施策略 163
10.3.1 增加自動(dòng)化測(cè)試用例的著手點(diǎn) 163
10.3.2 提高自動(dòng)化測(cè)試的執(zhí)行次數(shù) 164
10.3.3 良好自動(dòng)化測(cè)試的特征 165
10.3.4 共享自動(dòng)化測(cè)試的維護(hù)職責(zé) 166
10.3.5 代碼測(cè)試覆蓋率 167
10.4 用戶驗(yàn)收自動(dòng)化測(cè)試要點(diǎn) 168
10.4.1 先搭建分層框架 168
10.4.2 測(cè)試用例數(shù)應(yīng)保持低位 171
10.4.3 為自動(dòng)化測(cè)試用例預(yù)留API 171
10.4.4 為調(diào)試做好準(zhǔn)備 171
10.4.5 測(cè)試數(shù)據(jù)的準(zhǔn)備 171
10.5 其他質(zhì)量檢查方法 173
10.5.1 差異批準(zhǔn)測(cè)試方法 173
10.5.2 代碼規(guī)范檢查與代碼動(dòng)靜態(tài)檢測(cè) 174
10.5.3 AI在測(cè)試領(lǐng)域的應(yīng)用 174
10.6 小結(jié) 175
第 11章 軟件配置管理 176
11.1 將一切納入軟件配置管理 176
11.1.1 軟件配置管理的目標(biāo) 176
11.1.2 軟件配置管理的范圍 177
11.1.3 軟件配置管理的原則 177
11.2 軟件包的版本管理 181
11.2.1 包管理的反模式 181
11.2.2 集中式包管理服務(wù) 182
11.2.3 軟件包的元信息 183
11.3 包依賴管理 185
11.3.1 顯式聲明依賴 185
11.3.2 自動(dòng)管理依賴 187
11.3.3 減少?gòu)?fù)雜依賴 188
11.4 環(huán)境基礎(chǔ)設(shè)施管理 191
11.4.1 環(huán)境準(zhǔn)備的4種狀態(tài) 191
11.4.2 領(lǐng)域?qū)僬Z(yǔ)言的應(yīng)用 197
11.4.3 環(huán)境基礎(chǔ)設(shè)施即代碼 198
11.5 軟件配置項(xiàng)的管理 199
11.5.1 二進(jìn)制與配置項(xiàng)的分離 199
11.5.2 配置信息的版本管理 200
11.5.3 配置項(xiàng)的存儲(chǔ)組織方式 201
11.5.4 配置漂移與治理 202
11.6 不可變基礎(chǔ)設(shè)施與云應(yīng)用 203
11.6.1 實(shí)現(xiàn)不可變基礎(chǔ)設(shè)施 203
11.6.2 云原生應(yīng)用 206
11.6.3 優(yōu)勢(shì)與挑戰(zhàn) 206
11.7 數(shù)據(jù)的版本管理 208
11.7.1 數(shù)據(jù)庫(kù)結(jié)構(gòu)變更 208
11.7.2 數(shù)據(jù)文件 208
11.8 需求與源代碼的版本關(guān)聯(lián) 209
11.9 小結(jié) 209
第 12章 低風(fēng)險(xiǎn)發(fā)布 211
12.1 高頻發(fā)布是一種趨勢(shì) 211
12.1.1 互聯(lián)網(wǎng)企業(yè)的高頻發(fā)布 212
12.1.2 收益與成本共存 214
12.2 降低發(fā)布風(fēng)險(xiǎn)的方法 215
12.2.1 藍(lán)綠部署 215
12.2.2 滾動(dòng)部署 216
12.2.3 金絲雀發(fā)布與灰度發(fā)布 217
12.2.4 暗部署 218
12.3 高頻發(fā)布支撐技術(shù) 219
12.3.1 功能開(kāi)關(guān)技術(shù) 220
12.3.2 數(shù)據(jù)遷移技術(shù) 222
12.3.3 抽象分支方法 225
12.3.4 升級(jí)替代回滾 226
12.4 影響發(fā)布頻率的因素 227
12.5 小結(jié) 228
第 13章 監(jiān)測(cè)與決策 229
13.1 生產(chǎn)監(jiān)測(cè)范圍 230
13.1.1 后臺(tái)服務(wù)的監(jiān)測(cè) 230
13.1.2 分發(fā)軟件的監(jiān)測(cè) 230
13.2 數(shù)據(jù)監(jiān)測(cè)體系 231
13.2.1 收集與處理 231
13.2.2 數(shù)據(jù)的標(biāo)準(zhǔn)化 232
13.2.3 監(jiān)測(cè)數(shù)據(jù)體系及其能力衡量 233
13.3 問(wèn)題處理體系 235
13.3.1 告警海洋與智能化管理 235
13.3.2 問(wèn)題處理是一個(gè)學(xué)習(xí)過(guò)程 236
13.4 生產(chǎn)環(huán)境測(cè)試 237
13.4.1 測(cè)試活動(dòng)扁平化趨勢(shì) 237
13.4.2 生產(chǎn)環(huán)境中的測(cè)試 239
13.4.3 混沌工程 239
13.5 向東,還是向西 240
13.6 小結(jié) 241
第 14章 大型互聯(lián)網(wǎng)團(tuán)隊(duì)的FT化 242
14.1 簡(jiǎn)介 242
14.1.1 改進(jìn)前狀態(tài) 243
14.1.2 改進(jìn)后狀態(tài) 245
14.2 改進(jìn)方法論 245
14.2.1 指導(dǎo)思想 245
14.2.2 改進(jìn)步驟 245
14.3 改進(jìn)的歷程 246
14.3.1 架構(gòu)解耦 246
14.3.2 組織解耦 248
14.3.3 研發(fā)流程再造 250
14.3.4 自動(dòng)化一切 259
14.4 小結(jié) 260
第 15章 小團(tuán)隊(duì)逆襲之旅 262
15.1 背景簡(jiǎn)介 262
15.1.1 改進(jìn)前的“死亡行軍”之旅 264
15.1.2 改進(jìn)后的無(wú)缺陷交付 264
15.2 改進(jìn)方法論 265
15.2.1 指導(dǎo)思想 265
15.2.2 試點(diǎn)團(tuán)隊(duì)的選擇 265
15.3 第 一階段:研發(fā)準(zhǔn)備期 266
15.3.1 功能簡(jiǎn)介與需求拆分 266
15.3.2 架構(gòu)設(shè)計(jì)與需求依賴識(shí)別 267
15.3.3 工作量估算與排期 268
15.4 第二階段:軟件交付期 270
15.4.1 通過(guò)可視化看板改進(jìn)工作流程 270
15.4.2 無(wú)缺陷交付 277
15.4.3 主干開(kāi)發(fā)與持續(xù)集成 278
15.4.4 測(cè)試活動(dòng)左移 279
15.4.5 代碼評(píng)審 279
15.4.6 關(guān)注結(jié)果,更要關(guān)注
過(guò)程 280
15.5 小結(jié) 281
第 16章 研發(fā)推動(dòng)的DevOps 283
16.1 改進(jìn)的關(guān)鍵點(diǎn) 285
16.1.1 改進(jìn)方法論 285
16.1.2 定義改進(jìn)目標(biāo) 285
16.2 第 一階段:敏捷101 287
16.2.1 做個(gè)靠譜的計(jì)劃 287
16.2.2 開(kāi)發(fā)階段啟航 291
16.2.3 對(duì)過(guò)程質(zhì)量的約束 294
16.2.4 階段性改進(jìn)點(diǎn) 301
16.3 第二階段:DevOps轉(zhuǎn)型 302
16.3.1 與運(yùn)維人員的“沖突” 303
16.3.2 高頻部署發(fā)布中的具體障礙 304
16.3.3 整體解決方案的設(shè)計(jì) 304
16.3.4 DevOps階段的團(tuán)隊(duì)改變 308
16.4 小結(jié) 308
第 17章 研發(fā)組織效能提升的必經(jīng)之路 310
17.1 知識(shí)工作者與熵增定律 310
17.1.1 每個(gè)工程師生產(chǎn)的都是非標(biāo)品 310
17.1.2 軟件工程的復(fù)雜性令研發(fā)效率降低 311
17.2 一致性是效能提升的必經(jīng)之路 313
17.3 組織能力三要素 314
17.4 勝任力評(píng)估 315
17.4.1 組織勝任力評(píng)估模型 316
17.4.2 個(gè)人勝任力培養(yǎng)體系 318
17.5 組織健康度 319
17.6 小結(jié) 320
附錄A 軟件工程的三次進(jìn)化 321
A.1 軟件工程的誕生 322
A.1.1 軟件危機(jī) 322
A.1.2 瀑布軟件開(kāi)發(fā)模型 322
A.2 二次進(jìn)化:敏捷開(kāi)發(fā) 324
A.2.1 前奏——螺旋模型 324
A.2.2 敏捷宣言的誕生 324
A.2.3 敏捷軟件開(kāi)發(fā)方法的演化 328
A.2.4 敏捷軟件開(kāi)發(fā)方法小結(jié) 329
A.2.5 TPS啟發(fā)下的軟件開(kāi)發(fā)方法 330
A.3 三次進(jìn)化:DevOps 331
A.3.1 DevOps運(yùn)動(dòng)的興起 331
A.3.2 持續(xù)交付的誕生 332
A.4 小結(jié) 333
附錄B 排序法做相對(duì)估算 334
B.1 排序法相對(duì)估算 334
B.2 相對(duì)排序法的操作過(guò)程 335
B.3 小結(jié) 338