大規模組織 DevOps 實踐
內容描述
DevOps是開發運維一體化的軟件工程思想,DevOps嘗試打破部門牆,構建一個協同的IT建設運行環境,通過工具鏈形成數據關聯的規範化、規模化的軟件持續交付流水線,從而助力企業業務的敏捷發展。本書用9章內容,結合項目實戰案例和業界主流工具,從思想、實踐方法、工具技術、案例等方面闡述了DevOps在傳統規模化IT組織中實施落地的方法。本書適合IT主管、項目經理、開發、測試、配置管理、運維等IT從業人員閱讀。
目錄大綱
第一部分思想篇
第1章軟件工廠2
1.1軟件的生產力2
1.2軟件工廠——軟件的標準化生產4
1.2.1標準化生產模式需要一個集成底座——PaaS 4
1.2.2標準化軟件生產流水線6
第2章DevOps思想8
2.1 DevOps思想與生產流水線8
2.1.1 DevOps的起源8
2.1.2 DevOps對軟件工廠的啟發9
2.1.3從DevOps實踐原則看軟件生產工藝化水平的提高10
2.1.4軟件工廠模式下對生產工具發展的促進作用10
2.2從瀑佈到敏捷11
2.2.1傳統項目管理問題12
2.2.2向互聯網企業學習的“敏捷” 13
2.2.3敏捷的起源14
2.2.4瀑布模型15
2.2.5傳統企業不可能全盤敏捷化15
2.2.6從版本上線過程管理看敏捷與瀑布16
2.2.7敏捷的前提是“不敏捷” 17
2.3敏捷與DevOps核心思想18
2.3.1增量開發與測試18
2.3 .2持續集成與持續交付19
2.3.3自動化21
2.4規模化的敏捷22
2.4.1從敏捷項目管理到敏捷項目集群管理22
2.4.2企業規模化敏捷思想24
2.4.3規模化敏捷方法——SAFe 25
……
2.5企業規模化敏捷與軟件工廠31
2.5.1軟件生產環境31
2.5.2軟件工廠生產環境管理——開發測試雲33
2.5.3整合環境仿真37
2.5.4不可忽略的辦公環境因素43
2.5.5軟件工廠質量檢測——深度自動化測試裝置45
第二部分實踐方法篇
第3章DevOps體系的建立49
3.1構建DevOps流水線,打通開發—測試—運維持續交付通道49
3.2敏捷開發知識體系50
3.3 Scrum框架51
3.3.1 Scrum的3類角色52
3.3.2 Scrum的3份工件52
3.3.3 Scrum的5項活動53
3.3.4 Scrum的5個價值觀54
3.4敏捷、DevOps與協作54
3.5開發域DevOps實踐55
3.5.1敏捷需求55
3.5.2傳統需求分析55
3.5.3敏捷需求方法57
3.5.4面向敏捷的架構設計61
3.5.5向微服務架構遷移的基本做法63
3.5.6向微服務架構遷移的低風險演進方法64
3.5.7微服務架構設計模式74
3.5.8開發敏捷77
3.5.9分支策略77
3.5.10依賴包管理79
3.5.11技術債務80
3.5.12技術債務的形成80
3.5.13技術債務的分類83
3.5.14技術債務與質量投資84
3.5.15技術債務處理方法85
3.5.16持續集成88
……
3.5.23企業持續集成實施方法95
3.5.24持續集成實施案例介紹96
3.6測試域DevOps實踐96
3.6.1敏捷測試環境管理96
3.6. 2業界關於測試環境管理的實踐98
3.6.3測試如何納入持續集成體系中100
3.6.4敏捷測試方法與傳統測試方法的不同之處105
3.6.5敏捷測試人員的定義106
3.6.6敏捷測試過程管理107
3.6.7敏捷測試團隊管理112
3.7運維域DevOps實踐113
3.7.1敏捷基礎設施113
3.7.2自動化部署113
3.7.3自動化部署的要素114
3.7.4部署常見場景及問題115
3.7.5部署服務工具鏈116
3.7.6資源部署117
3.7.7自動化資源部署117
3.7.8應用部署119
3.7.9應用交付容器化120
3.7.10應用容器化改造121
3.7.11不中斷服務的部署方法121
3.7.12敏捷運維125
第4章DevOps的有效實踐129
4.1敏捷模式與傳統企業研發模式的結合129
4.2敏捷模式與傳統ISO、CMMI標準規範的兼容131
4.2.1需求獲取131
4.2.2方案製定(或技術評估) 132
4.2.3生產任務排期135
4.2.4 Sprint 0——迭代前準備135
4.2.5 Sprint 0——基礎框架搭建143
4.2.6迭代實施143
4.2.7驗收測試154
4.2.8投產155
4.3敏捷與DevOps基礎實踐155
4.3.1 SRE與發布工程155
4.3.2配置管理——版本管理161
4.3.3配置管理——發布包製作規範165
4.3.4缺陷管理167
4.3.5缺陷預防168
4.3.6迭代周期的時間169
4.4敏捷與DevOps反模式170
4.4 .1急功近利170
4.4.2跨部門協作的浪費172
4.4.3持續集成“壞味道” 176
4.4.4手工完成所有部署178
4.4.5開發與運維各一套自動化部署系統178
4.4.6重建數據庫比較困難179
第三部分工具技術篇
第5章精準測試技術182
5.1什麼是精準測試技術182
5.1.1傳統測試方法面臨大型軟件時的問題與瓶頸182
5.1.2傳統白盒測試方法的問題183
5.1.3開發團隊和測試團隊協同工作難183
5.1.4精準測試方法解決的問題184
5.1. 5精準測試的工作模式與工作原理185
5.2精準測試雲平台186
5.2.1測試複雜度分析186
5.2.2測試複雜度種類187
5.2.3覆蓋率分析188
5.2.4軟件內部邏輯結構可視化192
5.2. 5函數列表功能說明196
5.2.6覆蓋率可視化197
5.2.7動態實時測試監控199
5.2.8缺陷管理系統199
5.2.9 Bug與崩潰代碼級捕獲201
5.2.10雙向追溯202
5.2.11多版本與累計覆蓋率205
5.2.12智能的回歸測試用例選取分析算法206
5.2.13測試用例的聚類分析算法207
5.3精準測試與度量分析208
5.3.1獲取度量信息208
5.3.2項目度量指標208
5.3.3項目匯總211
5.3.4測試用例——按日趨勢圖213
5.3.5測試用例——測試用例列表215
5.3.6測試人、機218
5.3.7測試缺陷——Bug信息匯總219
5.3.8測試缺陷——Bug詳細列表220
5.3.9覆蓋率——按日增長趨勢圖221
5.3.10函數、類、文件覆蓋率統計223
5.3. 11函數、類、文件複雜度和覆蓋率關係圖223
5.3.12覆蓋率列表224
5.3.13函數、類、包複雜度統計226
5.3.14測試覆蓋率漏洞的智能分析227
第6章雙模發布管理平台的設計與應用229
6.1產生背景229
6.1.1傳統企業數字化轉型浪潮下的雙模挑戰229
6.1.2雙模發布管理平台230
6.2雙模發布管理平台設計231
6.2.1設計思路231
6.2.2架構設計233
6.3案例及功能說明234
6.3.1案例背景介紹235
6.3.2痛點診斷及建設目標236
6.3.3功能說明236
第7章整合環境仿真技術252
7.1服務虛擬化技術252
7.2 Lisa解決方案特色253
7.3採用Lisa方案的預期效果254
7.4 Lisa實施和服務模式舉例256
第8章容器技術259
8.1容器與Docker 259
8.2應用容器化261
8.3 Dockerfile命令詳解266
8.4 Dockerfile使用建議270
8.5應用上雲容器271
8.5.1上雲應用的場景271
8.5.2軟件和硬件的限制272
8.5.3應用架構的限制272
8.5.4應用上雲建議274
8.6容器化應用開發規範275
8.6.1應用預編譯275
8.6.2熱點數據緩存277
8.6.3應用無狀態化277
8.6.4應用上配置的定時任務需與應用分離278
8.6.5應用使用固定的服務監聽端口278
8.6.6主機名和服務端口獲取278
8.6.7數據庫連接池279
8.6.8應用日誌279
8.6.9應用中間件選型279
8.6.10應用環境配置規範280
8.6.11硬件負載280
8.6.12不要在容器中存儲數據281
8.6.13不要發布兩個應用281
8.6.14清除不必要的包和文件281
8.6.15不要在容器中運行多個進程281
8.6.16不要在鏡像中存儲憑據、使用環境變量281
8.6.17使用非root用戶運行281
8.6.18不要依賴IP