內容簡介
本書由
南京大學軟體學院三位資深教師聯合行業一線專家編寫而成,系統全面地介紹DevOps這一網際網路時代新型軟體開發模式的原理、方法和實踐。內容詳實、結構清晰、表述淺顯易懂,非常適合在校學生學習使用,也可供產業界DevOps初學者學習參考。
全書第一部分首先從時代背景出發,介紹DevOps模式的淵源,然後結合雲時代運維的特徵,進一步闡明DevOps模式是適應當前軟體系統開發、部署和維護的必然選擇。第二部分介紹了主流軟體開發方法及其流程,作為DevOps的基礎理論的精益生產和看板方法是這部分的重點。第三部分則重點闡述了DevOps模式下的典型實踐,例如微服務架構、持續集成、持續交付(部署)、虛擬化、
Docker容器、自動化等。
圖書目錄
第1章 DevOps概述 …… 1
1.1 網際網路時代的轉型挑戰 …… 1
1.2 獨角獸公司 …… 4
1.2.1 Netflix公司 …… 4
1.2.2 Instagram …… 8
1.2.3 成功秘訣 …… 9
1.3 什麼是DevOps …… 10
1.3.1 發展淵源 …… 10
1.3.2 價值觀 …… 12
1.3.3 原則 …… 13
1.3.4 方法 …… 15
1.3.5 實踐 …… 16
1.3.6 工具 …… 16
1.4 DevOps套用與研究現狀 …… 17
1.4.1 微服務 …… 17
1.4.2 持續集成和持續交付 …… 19
1.4.3 工具研究和開發 …… 21
本章小結 …… 23
思考題 …… 23
參考文獻 …… 23
第2章 雲時代的運維 …… 26
2.1 雲計算概述 …… 26
2.1.1 IaaS …… 26
2.1.2 PaaS …… 28
2.1.3 SaaS …… 29
2.1.4 XaaS …… 30
2.2 IT服務標準介紹 …… 30
2.2.1 CMMI-SVC …… 30
2.2.2 ITIL …… 33
2.2.3 ISO20000 …… 33
2.2.4 ITSS …… 36
2.3 什麼是運維 …… 39
2.3.1 運維的價值 …… 39
2.3.2 運維的技術與技能 …… 40
2.3.3 傳統運維的轉型之路 …… 40
本章小結 …… 41
思考題 …… 41
參考文獻 …… 42
第3章 軟體架構演進 …… 44
3.1 軟體架構概述 …… 44
3.1.1 什麼是軟體架構 …… 44
3.1.2 軟體架構的目標 …… 46
3.1.3 軟體架構的不同視角 …… 46
3.2 軟體架構的演進 …… 51
3.2.1 傳統軟體架構的演進 …… 51
3.2.2 流量爆炸時代的大型網際網路軟體架構 …… 54
3.2.3 網際網路軟體架構演進實例 …… 60
本章小結 …… 66
思考題 …… 67
參考文獻 …… 67
更多閱讀 …… 67
第4章 軟體開發過程和方法 …… 68
4.1 軟體過程概述 …… 68
4.1.1 軟體開發方法發展歷史 …… 69
4.1.2 軟體過程的多維視角 …… 77
4.2 個體過程和實踐 …… 79
4.2.1 PSP過程基本原則 …… 80
4.2.2 PSP過程度量 …… 81
4.2.3 PROBE估算原理 …… 82
4.2.4 PROBE估算流程 …… 83
4.2.5 通用計畫框架 …… 85
4.2.6 PSP質量與質量策略 …… 87
4.2.7 評審與測試 …… 88
4.2.8 評審過程質量 …… 89
4.2.9 設計與質量 …… 98
4.2.10 設計過程 …… 100
4.2.11 設計的層次 …… 101
4.3 小組過程和實踐 …… 102
4.3.1 XP實踐 …… 102
4.3.2 Scrum方法 …… 105
4.3.3 TSP過程 …… 106
4.4 軟體過程改進 …… 108
4.4.1 元模型 …… 108
4.4.2 過程改進參考模型與標準 …… 112
4.5 DevOps中的開發過程和方法 …… 121
本章小結 …… 121
思考題 …… 121
參考文獻 …… 122
第5章 精益思想和看板方法 …… 124
5.1 從精益思想說起 …… 124
5.1.1 精益起源於豐田 …… 124
5.1.2 精益實踐的傳播 …… 124
5.1.3 精益作為方法學開始超越生產製造 …… 126
5.1.4 上升至精益的價值觀 …… 126
5.2 精益的三個層面 …… 128
5.3 精益產品開發實踐體系 …… 129
5.3.1 精益產品開發的目標 …… 129
5.3.2 精益產品開發的原則 …… 130
5.3.3 精益產品開發的運作實踐 …… 131
5.4 看板方法的起源 …… 132
5.4.1 看板的中文意思帶來誤解 …… 132
5.4.2 看板是精益製造系統的核心工具 …… 133
5.4.3 看板形成拉式生產方式 …… 135
5.5 什麼是產品開發中的看板方法 …… 136
5.5.1 產品開發中的看板方法的誕生 …… 136
5.5.2 看板方法的第一組實踐—建立看板系統的3個實踐 …… 136
5.5.3 看板方法的第二組實踐—運作看板系統的2個實踐 …… 140
本章小結 …… 142
思考題 …… 142
參考文獻 …… 143
第6章 微服務軟體架構 …… 144
6.1 軟體架構的發展 …… 144
6.1.1 單體架構 …… 144
6.1.2 分層架構 …… 144
6.1.4 分散式架構 …… 148
6.2 現代套用的12範式 …… 150
6.3 什麼是微服務架構 …… 150
6.4 微服務架構的特徵 …… 151
6.4.1 通過服務組件化 …… 152
6.4.2 圍繞業務能力組織 …… 152
6.4.3 是產品不是項目 …… 153
6.4.4 智慧型端點和啞管道 …… 153
6.4.5 去中心化治理 …… 154
6.4.6 去中心化數據管理 …… 154
6.4.7 基礎設施自動化 …… 155
6.4.8 為失效設計 …… 155
6.4.9 進化式設計 …… 155
6.5 微服務核心模式 …… 156
6.5.1 服務註冊與發現 …… 156
6.5.2 配置中心 …… 157
6.5.3 API網關 …… 157
6.5.4 熔斷器 …… 158
6.5.5 分散式追蹤 …… 160
本章小結 …… 161
思考題 …… 162
參考文獻 …… 162
第7章 容器技術基礎 …… 163
7.1 核心基礎 …… 163
7.1.1 Linux namespace …… 164
7.1.2 Linux CGroup …… 168
7.2 Docker架構概覽 …… 169
7.2.1 Client …… 170
7.2.2 Docker Daemon …… 171
7.2.3 Docker Registry …… 172
7.2.4 Graph …… 173
7.2.5 Driver …… 173
7.2.6 libcontainer …… 173
7.3 鏡像管理 …… 174
7.3.1 什麼是Docker鏡像 …… 174
7.3.2 Dockerfile、Docker鏡像和Docker容器的關係 …… 174
7.3.3 Dockerfile …… 176
7.4 Docker網路管理 …… 178
7.4.1 Docker網路模式 …… 178
7.4.2 libnetwork和Docker網路 …… 179
7.4.3 Docker的內置Overlay網路 …… 180
7.5 Docker存儲 …… 181
7.5.1 Docker存儲驅動 …… 181
7.5.2 Docker驅動比較 …… 182
7.6 Docker編排 …… 183
7.6.1 Docker Swarm …… 183
7.6.2 Kubernetes …… 185
本章小結 …… 186
思考題 …… 186
參考文獻 …… 187
第8章 基於容器技術的DevOps實踐 …… 188
8.1 概述 …… 188
8.2 代碼管理 …… 188
8.2.1 Git介紹 …… 190
8.2.2 Git工作流程 …… 191
8.3 持續交付流水線 …… 194
8.3.1 預備步驟 …… 194
8.3.2 實現持續交付流水線 …… 199
8.3.3 持續交付最佳實踐 …… 201
8.3.4 檢查列表 …… 204
8.4 持續集成工具 …… 205
8.4.1 傳統的CI工具 …… 205
8.4.2 雲計算環境中的CI工具 …… 206
8.4.3 用於移動套用的CI工具 …… 206
8.4.4 使用Docker的CI工具 …… 207
8.5 Java套用持續交付實踐舉例 …… 207
8.5.1 持續集成 …… 207
8.5.2 持續部署 …… 209
8.5.3 版本管理 …… 211
本章小結 …… 212
思考題 …… 212
參考文獻 …… 212
第9章 DevOps工具集 …… 214
9.1 概述 …… 214
9.2 協同開發工具 …… 215
9.2.1 JIRA …… 215
9.2.2 Kanboard …… 216
9.2.3 Rally …… 218
9.3 持續集成工具 …… 219
9.3.1 Jenkins …… 219
9.3.2 Bamboo …… 220
9.3.3 Travis CI …… 220
9.4 版本管理工具 …… 221
9.4.1 Git …… 221
9.4.2 GitHub …… 223
9.4.3 GitLab …… 223
9.4.4 Subversion …… 223
9.4.5 Mercurial …… 223
9.5 編譯工具 …… 224
9.5.1 Ant …… 224
9.5.2 Maven …… 225
9.5.3 Gradle …… 226
9.5.4 MSBuild …… 226
9.6 配置管理工具 …… 227
9.6.1 Chef …… 227
9.6.2 Puppet …… 228
9.6.3 Ansible …… 228
9.7 測試工具 …… 228
9.7.1 JUnit …… 228
9.7.2 Selenium …… 229
9.7.3 Cucumber …… 229
9.7.4 FitNesse …… 230
9.8 監控工具 …… 231
9.8.1 Nagios …… 231
9.8.2 Zabbix …… 231
9.9 工具網址 …… 232
作者簡介
榮國平 南京大學軟體學院教師,長期從事軟體過程改進相關的工作。從2006年開始,多次赴美參加SEI的相關培訓,並在當年成為國內唯一的SEI授權PSP培訓師和TSP團隊教練。在JSS、軟體學報等期刊以及包括ICSE、ESEM、ICSSP、EASE、CSEE&T、APSEC等在內的一流國際會議上發表論文40餘篇。DevOps中國技術社區發起人之一。
張賀 南京大學軟體工程教授、博士生導師,入選登峰人才計畫(A層次),澳大利亞聯邦科學院(CSIRO)主任科學家。在歐洲和澳洲從事軟體工程研究與實踐