本書系統(tǒng)全面地介紹了DevOps 的現(xiàn)狀趨勢、基礎(chǔ)理論和實踐方法,對DevOps 實踐中的架構(gòu)設(shè)計、開發(fā)、測試、部署等各階段所需踐行的原則和方法進行了總結(jié),并提出相關(guān)建議。以實戰(zhàn)為中心,對DevOps實踐中的常用工具進行了分類介紹和特性分析,并結(jié)合相關(guān)示例進行了使用說明和演示。
劉淼資深架構(gòu)師,PMP、OCP、CSM、HPE University講師,EXIN DevOps Professional與DevOps Master認證講師,曾擔任HPE GD China DevOps & Agile Leader,幫助企業(yè)級客戶提供DevOps咨詢培訓以及實施指導。熟悉通信和金融領(lǐng)域,有超過10年金融外匯行業(yè)的架構(gòu)設(shè)計、開發(fā)、維護經(jīng)驗,在十幾年的IT從業(yè)生涯中擁有了軟件開發(fā)設(shè)計領(lǐng)域接近全生命周期的經(jīng)驗和知識積累。CSDN博客專家,博客地址為https://liumiaocn.blog.csdn.net/。張笑梅IT從業(yè)15年,其中含5年歐美外包經(jīng)驗,10多年國內(nèi)行業(yè)咨詢服務(wù)與解決方案經(jīng)驗,涉及電信、金融、航空等領(lǐng)域。先后服務(wù)于HPE、惠普、畢博等公司,曾負責過大中型項目實施開發(fā)與管理工作,擔任過產(chǎn)品經(jīng)理、咨詢顧問、培訓講師及教練等職位。目前致力于項目和組織的敏捷與DevOps轉(zhuǎn)型實施和培訓。EXIN Agile Master、DevOps Professional、Lean IT、VeriSM、TSP、PSP模型認證講師,鳳凰沙盤/火星沙盤教練,CMMI 2.0 評估員,ISO 9K內(nèi)審員,擁有CSM、SAFE、SAFE Advance Master、ITIL、SIGMA GB認證。
第1 章 DevOps 概述 ......................................................................................................................... 1
1.1 什么是DevOps ..................................................................................................................... 2
1.2 DevOps 能帶來什么 ............................................................................................................. 3
1.3 DevOps 的現(xiàn)狀 ..................................................................................................................... 5
1.4 常見的理解誤區(qū) ................................................................................................................. 10
第2 章 DevOps 基礎(chǔ)理論 ............................................................................................................... 12
2.1 敏捷理論體系解讀 ............................................................................................................. 12
2.1.1 敏捷背景介紹 .............................................................................................................. 12
2.1.2 三大支柱解讀 .............................................................................................................. 13
2.1.3 四大核心價值觀及解讀 ................................................................................................ 14
2.1.4 12 條原則及解讀 .......................................................................................................... 15
2.1.5 Scrum 敏捷框架 ........................................................................................................... 17
2.2 敏捷與DevOps ................................................................................................................... 24
2.3 精益理論體系解讀 ............................................................................................................. 25
2.3.1 精益產(chǎn)生背景 .............................................................................................................. 25
2.3.2 精益IT 及其原則 ......................................................................................................... 25
2.4 精益與DevOps ................................................................................................................... 29
2.4.1 節(jié)拍 ........................................................................................................................... 29
2.4.2 交貨時間 ..................................................................................................................... 29
2.4.3 度量指標 ..................................................................................................................... 29
2.4.4 浪費種類 ..................................................................................................................... 30
2.4.5 安燈拉繩 ..................................................................................................................... 31
2.4.6 看板 ........................................................................................................................... 31
2.4.7 改善 ........................................................................................................................... 32
2.4.8 挑戰(zhàn)與對策 ................................................................................................................. 33
2.5 實踐案例分析 ..................................................................................................................... 33
第3 章 構(gòu)建企業(yè)的DevOps 文化 .................................................................................................. 36
3.1 對失敗友好的架構(gòu)與環(huán)境.................................................................................................. 36
3.1.1 對失敗友好的架構(gòu)與環(huán)境的特點 ................................................................................... 37
3.1.2 對失敗友好的架構(gòu)與環(huán)境的設(shè)計原則 ............................................................................ 37
3.1.3 當失敗遇見復(fù)雜系統(tǒng) .................................................................................................... 40
3.1.4 保障復(fù)雜系統(tǒng)的安全 .................................................................................................... 41
3.2 以高度信任為基石的企業(yè)文化 .......................................................................................... 42
3.2.1 傳統(tǒng)制造業(yè)的懲罰文化 ................................................................................................ 43
3.2.2 聚焦改善的免責事后分析 ............................................................................................. 44
3.2.3 多角度的知識與經(jīng)驗分享 ............................................................................................. 45
3.3 持續(xù)學習與持續(xù)試驗 ......................................................................................................... 49
3.3.1 通過內(nèi)部與外部會議促進人員技術(shù)成長 ......................................................................... 50
3.3.2 向生產(chǎn)環(huán)境中引入故障來增強彈性 ............................................................................... 50
3.3.3 持續(xù)學習與持續(xù)試驗的建議 .......................................................................................... 51
3.4 常見的理解誤區(qū) ................................................................................................................. 52
3.5 實踐經(jīng)驗研究 ..................................................................................................................... 54
第4 章 設(shè)計和優(yōu)化軟件全生命周期相關(guān)流程 .............................................................................. 56
4.1 持續(xù)評估與DevOps 成熟度模型 ...................................................................................... 56
4.2 持續(xù)規(guī)劃的評估策略 ......................................................................................................... 57
4.3 持續(xù)集成的策略與原則 ..................................................................................................... 58
4.4 持續(xù)測試的策略與原則 ..................................................................................................... 58
4.5 持續(xù)部署的策略與原則 ..................................................................................................... 59
4.6 持續(xù)監(jiān)控的策略與原則 ..................................................................................................... 59
4.7 持續(xù)運維的策略與原則 ..................................................................................................... 60
4.8 持續(xù)反饋的策略與機制 ..................................................................................................... 60
4.9 常見的理解誤區(qū)和實踐經(jīng)驗 .............................................................................................. 60
第5 章 DevOps 實踐中的設(shè)計與開發(fā) ........................................................................................... 62
5.1 傳統(tǒng)架構(gòu)的痛點 ................................................................................................................. 62
5.2 DevOps 中的架構(gòu)設(shè)計 ....................................................................................................... 62
5.2.1 康威定律的影響 .......................................................................................................... 63
5.2.2 耦合設(shè)計原則 .............................................................................................................. 64
5.2.3 獨立部署原則 .............................................................................................................. 66
5.2.4 自動部署策略 .............................................................................................................. 66
5.2.5 12 要素 ....................................................................................................................... 68
5.2.6 應(yīng)用擴容機制 .............................................................................................................. 68
5.3 環(huán)境一致性 ......................................................................................................................... 69
5.3.1 環(huán)境一致性的重要性 .................................................................................................... 69
5.3.2 常用工具介紹 .............................................................................................................. 69
5.4 版本管理實踐 ..................................................................................................................... 71
5.4.1 版本管理的痛點 .......................................................................................................... 71
5.4.2 常用工具介紹 .............................................................................................................. 74
5.4.3 實踐經(jīng)驗總結(jié) .............................................................................................................. 75
5.5 制品管理實踐 ..................................................................................................................... 75
5.6 代碼質(zhì)量分析 ..................................................................................................................... 77
第6 章 DevOps 實踐中的測試 ....................................................................................................... 78
6.1 傳統(tǒng)測試及其痛點 ............................................................................................................. 78
6.2 測試驅(qū)動開發(fā) ..................................................................................................................... 79
6.3 測試分類 ............................................................................................................................. 81
6.4 測試策略 ............................................................................................................................. 83
6.4.1 測試團隊結(jié)構(gòu)重組策略:測試團隊去中心化的應(yīng)對策略 ................................................. 84
6.4.2 測試促進架構(gòu)重構(gòu)策略:根據(jù)測試的反饋不斷優(yōu)化系統(tǒng)架構(gòu) .......................................... 84
6.4.3 測試團隊技能提升策略:逐步推動測試團隊知識與技能的重建 ....................................... 84
6.4.4 各階段測試策略:分階段使用不同方式保證系統(tǒng)功能 .................................................... 85
6.5 自動化測試 ......................................................................................................................... 85
6.5.1 自動化測試現(xiàn)狀 .......................................................................................................... 86
6.5.2 做還是不做:決策因素 ................................................................................................ 86
6.5.3 自動化測試推行策略 .................................................................................................... 88
6.5.4 自動化測試工具選型 .................................................................................................... 89
6.6 實踐經(jīng)驗研究 ..................................................................................................................... 90
6.6.1 常見的實踐誤區(qū) .......................................................................................................... 90
6.6.2 實踐案例 ..................................................................................................................... 91
第7 章 DevOps 實踐中的部署 ..................................................................................................... 101
7.1 部署方式 ........................................................................................................................... 101
7.1.1 藍綠部署 ................................................................................................................... 102
7.1.2 金絲雀部署 ............................................................................................................... 103
7.2 部署依賴 ........................................................................................................................... 104
7.2.1 架構(gòu)的影響 ............................................................................................................... 104
7.2.2 基礎(chǔ)設(shè)施的影響 ........................................................................................................ 104
7.3 常用工具 ........................................................................................................................... 106
7.4 實踐經(jīng)驗總結(jié) ................................................................................................................... 107
第8 章 DevOps 工具選型:開源與閉源 ..................................................................................... 108
8.1 通用選型指標 ................................................................................................................... 108
8.1.1 系統(tǒng)限制要素 ............................................................................................................ 109
8.1.2 可用性 ...................................................................................................................... 109
8.1.3 交互性 ...................................................................................................................... 110
8.1.4 市場狀況 ................................................................................................................... 110
8.1.5 功能可裁剪度 ............................................................................................................ 111
8.2 開源/閉源選型指標 .......................................................................................................... 111
8.2.1 成本 ......................................................................................................................... 112
8.2.2 更新頻度 ................................................................................................................... 112
8.2.3 改善速度 ................................................................................................................... 113
8.2.4 集成方式 ................................................................................................................... 113
8.2.5 文檔說明 ................................................................................................................... 114
8.3 選型模型介紹 ................................................................................................................... 115
8.4 實踐經(jīng)驗總結(jié) ................................................................................................................... 115
第9 章 DevOps 工具:需求管理與缺陷追蹤 ............................................................................. 117
9.1 常用工具介紹 ................................................................................................................... 117
9.1.1 JIRA ......................................................................................................................... 117
9.1.2 Redmine .................................................................................................................... 118
9.1.3 Trac .......................................................................................................................... 120
9.1.4 Bugzilla ..................................................................................................................... 121
9.2 詳細介紹:Redmine ......................................................................................................... 121
9.2.1 安裝Redmine ............................................................................................................ 121
9.2.2 設(shè)定Redmine ............................................................................................................ 125
9.2.3 REST API 操作 .......................................................................................................... 130
9.3 需求管理工具選型比較 ................................................................................................... 137
第10 章 DevOps 工具:持續(xù)集成 ............................................................................................... 139
10.1 常用工具介紹 ................................................................................................................. 139
10.1.1 Jenkins ................................................................................................................... 139
10.1.2 Apache Continuum ................................................................................................... 140
10.1.3 CruiseControl .......................................................................................................... 141
10.2 詳細介紹:Jenkins ......................................................................................................... 141
10.2.1 安裝Jenkins ........................................................................................................... 142
10.2.2 設(shè)定Jenkins ........................................................................................................... 144
10.3 持續(xù)集成實踐 ................................................................................................................. 146
10.3.1 Jenkins+GitLab ........................................................................................................ 147
10.3.2 Jenkins+Docker ....................................................................................................... 150
10.3.3 Jenkins pipeline ....................................................................................................... 157
第11 章 DevOps 工具:版本管理 ............................................................................................... 169
11.1 常用工具介紹.................................................................................................................. 169
11.1.1 RCS ....................................................................................................................... 169
11.1.2 SVN ....................................................................................................................... 179
11.1.3 Git ......................................................................................................................... 180
11.1.4 GitLab .................................................................................................................... 181
11.2 詳細介紹:GitLab 與開發(fā)模型 ..................................................................................... 182
11.2.1 Git Flow 分支模型 ................................................................................................... 182
11.2.2 GitLab+Git Flow ...................................................................................................... 185
11.2.3 GitHub Flow 分支模型 ............................................................................................. 200
11.2.4 GitLab+GitHub Flow ................................................................................................ 201
11.3 實踐經(jīng)驗總結(jié).................................................................................................................. 205
第12 章 DevOps 工具:構(gòu)建工具 ............................................................................................... 208
12.1 常用工具介紹 ................................................................................................................. 208
12.1.1 Make ..................................................................................................................... 208
12.1.2 Maven .................................................................................................................... 209
12.1.3 Gradle .................................................................................................................... 209
12.1.4 MSBuild ................................................................................................................. 210
12.2 詳細介紹:Maven .......................................................................................................... 211
12.2.1 安裝Maven ............................................................................................................ 211
12.2.2 Maven 的使用 ......................................................................................................... 211
12.3 詳細介紹:Gradle ........................................................................................................... 214
12.3.1 安裝Gradle ............................................................................................................ 214
12.3.2 Gradle 的使用 ......................................................................................................... 214
12.4 實踐經(jīng)驗總結(jié) ................................................................................................................. 221
第13 章 DevOps 工具:代碼質(zhì)量 ............................................................................................... 223
13.1 常用工具介紹 ................................................................................................................. 223
13.1.1 SonarQube .............................................................................................................. 223
13.1.2 Frotify .................................................................................................................... 224
13.1.3 Coverity ................................................................................................................. 225
13.1.4 FindBugs ................................................................................................................ 225
13.2 詳細介紹:SonarQube ................................................................................................... 226
13.2.1 安裝SonarQube ...................................................................................................... 226
13.2.2 SonarQube 基礎(chǔ) ...................................................................................................... 231
13.2.3 SonarQube 使用方式 ................................................................................................ 239
13.3 代碼質(zhì)量檢測實踐 ......................................................................................................... 244
13.3.1 代碼掃描與概要信息獲取 ........................................................................................ 245
13.3.2 指標信息的獲取 ...................................................................................................... 249
13.3.3 測試指標與事前準備 ............................................................................................... 259
13.3.4 測試指標實踐 ......................................................................................................... 261
13.3.5 項目與質(zhì)量規(guī)約管理 ............................................................................................... 272
第14 章 DevOps 工具:運維自動化 ........................................................................................... 277
14.1 常用工具介紹 ................................................................................................................. 277
14.1.1 Ansible ................................................................................................................... 277
14.1.2 Chef ....................................................................................................................... 277
14.1.3 Puppet .................................................................................................................... 278
14.1.4 Saltstack ................................................................................................................. 279
14.2 常用工具的使用 ............................................................................................................. 279
14.2.1 Ansible 的安裝與使用 .............................................................................................. 279
14.2.2 Chef 的安裝與使用 .................................................................................................. 280
14.2.3 Puppet 的安裝與使用 ............................................................................................... 287
14.2.4 Saltstack 的安裝與使用 ............................................................................................ 289
第15 章 DevOps 工具:測試自動化 ........................................................................................... 292
15.1 常用工具介紹 ................................................................................................................. 292
15.1.1 xUnit ....................................................................................................................... 292
15.1.2 Selenium .................................................................................................................. 293
15.1.3 Apache JMeter .......................................................................................................... 293
15.1.4 Robot Framework ...................................................................................................... 293
15.2 詳細介紹:Robot Framework ........................................................................................ 294
15.2.1 準備Python ............................................................................................................ 294
15.2.2 安裝PIP ................................................................................................................. 294
15.2.3 安裝Robot Framework ............................................................................................. 295
15.3 自動化測試工具的使用 ................................................................................................. 296
15.3.1 使用Robot Framework 進行測試 ............................................................................... 296
15.3.2 使用Selenium 進行測試 .......................................................................................... 300
第16 章 DevOps 工具:日志監(jiān)控 ............................................................................................... 303
16.1 常用工具介紹 ................................................................................................................. 303
16.1.1 ELK ....................................................................................................................... 303
16.1.2 Splunk .................................................................................................................... 306
16.1.3 Hygieia .................................................................................................................. 308
16.2 詳細介紹:Hygieia ......................................................................................................... 311
16.2.1 安裝配置 ................................................................................................................ 311
16.2.2 Hygieia 服務(wù)的啟動方式和說明 ................................................................................ 312
16.2.3 使用說明 ................................................................................................................ 314
16.3 實踐經(jīng)驗總結(jié) ................................................................................................................. 315
第17 章 DevOps 工具:運維監(jiān)控 ............................................................................................... 316
17.1 常用工具介紹 ................................................................................................................. 316
17.1.1 Zabbix .................................................................................................................... 316
17.1.2 Nagios .................................................................................................................... 319
17.1.3 Grafana .................................................................................................................. 323
17.1.4 InfluxDB ................................................................................................................ 325
17.2 詳細介紹:InfluxDB ...................................................................................................... 326
17.3 實踐中的注意事項及原則 .............................................................................................. 330
第18 章 DevOps 工具:安全監(jiān)控 ............................................................................................... 331
18.1 常用工具介紹 ................................................................................................................. 331
18.1.1 Clair ...................................................................................................................... 331
18.1.2 Anchore .................................................................................................................. 336
18.1.3 ClamAV ................................................................................................................. 339
18.2 詳細介紹:安全掃描 ..................................................................................................... 344
18.2.1 Clair 鏡像安全掃描 ................................................................................................. 344
18.2.2 Anchore 鏡像掃描 ................................................................................................... 348
18.2.3 ClamAV 病毒掃描 ................................................................................................... 349
18.3 實踐經(jīng)驗總結(jié) ................................................................................................................. 350
第19 章 DevOps 工具:容器化 ................................................................................................... 352
19.1 常用工具介紹 ................................................................................................................. 352
19.1.1 Docker ................................................................................................................... 352
19.1.2 docker-compose ....................................................................................................... 356
19.1.3 Kubernetes .............................................................................................................. 357
19.2 詳細介紹:Docker .......................................................................................................... 357
19.2.1 問題診斷 ................................................................................................................ 357
19.2.2 鏡像操作與容器操作 ............................................................................................... 365
19.2.3 其他操作 ................................................................................................................ 381
19.3 詳細介紹:Kubernetes ................................................................................................... 384
19.3.1 管理資源 ................................................................................................................ 385
19.3.2 故障排查 ................................................................................................................ 390
19.3.3 故障應(yīng)對 ................................................................................................................ 397
第20 章 DevOps 工具:鏡像私庫 ............................................................................................... 407
20.1 常用工具介紹 ................................................................................................................. 407
20.1.1 Registry .................................................................................................................. 407
20.1.2 Harbor .................................................................................................................... 409
20.1.3 Nexus ..................................................................................................................... 414
20.2 詳細介紹:Harbor .......................................................................................................... 420
第21 章 DevOps 工具:二進制制品管理 ................................................................................... 422
21.1 常用工具介紹 ................................................................................................................. 424
21.1.1 Apache Archiva ....................................................................................................... 424
21.1.2 Artifactory .............................................................................................................. 424
21.2 詳細介紹:Nexus ........................................................................................................... 425
21.2.1 環(huán)境設(shè)定:Maven 私庫搭建 ..................................................................................... 425
21.2.2 私庫使用:準備與設(shè)定Maven ................................................................................. 427
21.2.3 私庫使用:設(shè)定項目的pom 文件 ............................................................................. 428
21.2.4 私庫使用:執(zhí)行maven 操作 .................................................................................... 429
21.3 實踐經(jīng)驗總結(jié) ................................................................................................................. 430
第22 章 DevOps 實踐中的安全機制 ........................................................................................... 431
22.1 安全調(diào)查現(xiàn)狀 ................................................................................................................. 431
22.2 設(shè)計安全機制的整體策略 .............................................................................................. 432
22.3 與安全工具的融合 ......................................................................................................... 436
22.4 持續(xù)評估和改善 ............................................................................................................. 438
22.5 實踐案例分析 ................................................................................................................. 439
第23 章 基于微服務(wù)和容器化的高可用架構(gòu) .............................................................................. 440
23.1 高可用架構(gòu)設(shè)計 ............................................................................................................. 440
23.2 Kubernetes+微服務(wù)+DevOps 的實踐思路 ..................................................................... 443
23.2.1 整體原則 ................................................................................................................ 443
23.2.2 多層級的高可用性 .................................................................................................. 444
23.2.3 專注于業(yè)務(wù)開發(fā)的微服務(wù) ........................................................................................ 445
23.2.4 保駕護航的DevOps ................................................................................................ 446