譯者序
前言
第一部分 背 景
第1章 DevOps是什麼 …… 2
1.1 概述 …… 2
1.1.1 定義DevOps …… 2
1.1.2 DevOps實踐 …… 3
1.1.3 持續部署的例子:IMVU …… 5
1.2 為什麼是DevOps …… 5
1.2.1 發布過程 …… 5
1.2.2 配閤不佳的原因 …… 7
1.2.3 運維人員能力有限 …… 7
1.3 DevOps視角 …… 8
1.3.1 自動化 …… 8
1.3.2 開發團隊的職責 …… 9
1.4 DevOps與敏捷 …… 9
1.5 團隊結構 …… 10
1.5.1 團隊規模 …… 10
1.5.2 團隊角色 …… 10
1.6 協作 …… 13
1.6.1 協作的形式 …… 13
1.6.2 團隊協作 …… 14
1.6.3 跨團隊協作 …… 14
1.7 障礙 …… 15
1.7.1 文化及組織類型 …… 15
1.7.2 部門類型 …… 16
1.7.3 筒倉思維方式(Silo Mentality) …… 17
1.7.4 工具支持 …… 17
1.7.5 人員問題 …… 17
1.8 小結 …… 18
1.9 更多閱讀材料 …… 18
第2章 雲即平颱 …… 20
2.1 概述 …… 20
2.2 雲的特性 …… 21
2.2.1 虛擬化 …… 22
2.2.2 IP和域名係統管理 …… 23
2.2.3 平颱即服務 …… 25
2.2.4 分布式環境 …… 25
2.3 獨特的雲特性對DevOps的影響 …… 30
2.3.1 環境 …… 30
2.3.2 輕鬆創建虛擬機 …… 31
2.3.3 數據考量 …… 31
2.4 小結 …… 32
2.5 更多閱讀材料 …… 33
第3章 運維 …… 34
3.1 概述 …… 34
3.2 運維服務 …… 34
3.2.1 供給硬件 …… 34
3.2.2 供給軟件 …… 35
3.2.3 IT功能 …… 36
3.2.4 服務級彆協議 …… 36
3.2.5 容量規劃 …… 36
3.2.6 業務連續性和安全 …… 37
3.2.7 服務策略 …… 38
3.2.8 服務設計 …… 39
3.2.9 服務移交 …… 39
3.2.10 服務運維 …… 40
3.2.11 服務運維概念 …… 40
3.3 服務運維功能 …… 41
3.4 持續服務改進 …… 42
3.5 運維和DevOps …… 43
3.6 小結 …… 44
3.7 更多閱讀材料 …… 44
第二部分 部署流水綫
第4章 整體架構 …… 48
4.1 DevOps實踐是否需要架構調整 …… 48
4.2 架構結構總覽 …… 49
4.2.1 協作模式 …… 50
4.2.2 資源管理 …… 51
4.2.3 架構元素之間的映射 …… 52
4.3 微服務架構的質量 …… 52
4.3.1 可靠性 …… 53
4.3.2 可修改性 …… 54
4.4 團隊的亞馬遜規則 …… 55
4.5 現有係統的微服務方案 …… 56
4.6 小結 …… 56
4.7 更多閱讀材料 …… 57
第5章 構建與測試 …… 58
5.1 概述 …… 58
5.2 在部署流水綫中移動係統 …… 59
5.2.1 可追溯性 …… 59
5.2.2 環境 …… 60
5.3 橫切關注點 …… 61
5.4 開發及提交前測試 …… 63
5.4.1 版本控製與分支 …… 63
5.4.2 功能開關 …… 65
5.4.3 配置參數 …… 66
5.4.4 在開發和提交前測試中的測試 …… 67
5.5 構建與集成測試 …… 67
5.5.1 構建腳本 …… 67
5.5.2 打包 …… 68
5.5.3 持續集成與構建狀態 …… 69
5.5.4 集成測試 …… 70
5.6 用戶驗收測試/預發布/性能測試 …… 70
5.7 生産環境 …… 71
5.7.1 早期發布測試 …… 71
5.7.2 錯誤檢測 …… 72
5.7.3 現場測試 …… 72
5.8 事件 …… 73
5.9 小結 …… 73
5.10 更多閱讀材料 …… 74
第6章 部署 …… 75
6.1 概述 …… 75
6.2 部署管理的策略 …… 76
6.2.1 藍/綠部署 …… 76
6.2.2 滾動升級 …… 77
6.3 邏輯一緻性 …… 78
6.3.1 相同服務的多個版本同時存在 …… 78
6.3.2 兼容數據庫中保存的數據 …… 81
6.4 打包 …… 82
6.5 多環境部署 …… 84
6.6 部分部署 …… 86
6.6.1 金絲雀測試 …… 86
6.6.2 A/B測試 …… 87
6.7 迴滾 …… 87
6.8 工具 …… 89
6.9 小結 …… 90
6.10 更多閱讀材料 …… 90
第三部分 橫切關注點
第7章 監控 …… 94
7.1 概述 …… 94
7.2 監控什麼 …… 95
7.2.1 故障檢測 …… 96
7.2.2 性能下降檢測 …… 96
7.2.3 容量規劃 …… 97
7.2.4 用戶交互 …… 98
7.2.5 入侵檢測 …… 99
7.3 如何監控 …… 99
7.3.1 基於代理的監控和無代理的監控 …… 101
7.3.2 監控運維活動 …… 102
7.3.3 收集和存儲 …… 102
7.4 什麼時候變更監控配置 …… 103
7.5 解釋監控數據 …… 103
7.5.1 日誌 …… 104
7.5.2 繪圖和展示 …… 105
7.5.3 警報和警告 …… 105
7.5.4 診斷和反應 …… 106
7.5.5 監控DevOps過程 …… 106
7.6 挑戰 …… 107
7.6.1 挑戰1:持續變更下的監控 …… 107
7.6.2 挑戰2:自下嚮上與自上嚮下和在雲中的監控 …… 108
7.6.3 挑戰3:監控微服務架構 …… 109
7.6.4 挑戰4:處理大容量的分布式(日誌)數據 …… 109
7.7 工具 …… 109
7.8 從監控數據中診斷齣異常——Platformer.com的案例 …… 110
7.8.1 背景 …… 111
7.8.2 數據收集 …… 112
7.8.3 檢測異常 …… 112
7.8.4 思考 …… 113
7.9 小結 …… 113
7.10 更多閱讀材料 …… 114
第8章 安全與安全審計 …… 115
8.1 安全是什麼 …… 115
8.2 威脅 …… 117
8.3 需要保護的資源 …… 118
8.4 安全角色和活動 …… 120
8.5 身份管理 …… 122
8.5.1 認證 …… 123
8.5.2 授權 …… 125
8.6 訪問控製 …… 126
8.6.1 阻止訪問 …… 127
8.6.2 誰負責預防控製 …… 129
8.7 檢測、審計和拒絕服務 …… 129
8.8 開發 …… 130
8.9 審計者 …… 130
8.10 應用設計考慮 …… 131
8.11 部署流水綫設計考慮 …… 132
8.12 小結 …… 133
8.13 更多閱讀材料 …… 134
第9章 其他非功能需求 …… 135
9.1 概述 …… 135
9.2 可重復性 …… 136
9.2.1 在恰當的層級上定義和執行過程 …… 136
9.2.2 版本控製所有事物 …… 138
9.3 性能 …… 139
9.3.1 測量重要的事物 …… 139
9.3.2 提高資源使用率 …… 140
9.4 可靠性 …… 141
9.4.1 理解不同服務的可靠性特性 …… 141
9.4.2 早期檢測和修復錯誤 …… 142
9.5 可恢復性 …… 142
9.6 互操作性 …… 143
9.6.1 注意接口的互操作性 …… 143
9.6.2 理解現有的數據模型 …… 143
9.7 可測試性 …… 144
9.8 可修改性 …… 145
9.8.1 一個工具內的修改 …… 145
9.8.2 工具之間交互行為的修改 …… 146
9.9 小結 …… 146
9.10 更多閱讀材料 …… 147
第10章 業務關注點 …… 148
10.1 概述 …… 148
10.2 業務案例 …… 148
10.2.1 問題和解決問題所帶來的好處 …… 149
10.2.2 成本 …… 149
10.2.3 乾係人影響 …… 150
10.2.4 風險及其減緩 …… 151
10.2.5 推齣計劃 …… 153
10.2.6 成功標準 …… 154
10.3 度量和對DevOps實踐的閤規性 …… 155
10.3.1 測量DevOps實踐的成功度 …… 155
10.3.2 測量對DevOps實踐的閤規性 …… 156
10.3.3 測量乾係人的滿意度 …… 157
10.4 Dev和Ops之間的交互點 …… 157
10.4.1 許可 …… 157
10.4.2 事故處理 …… 158
10.5 小結 …… 159
10.6 更多閱讀材料 …… 159
第四部分 案 例 研 究
第11章 支持多數據中心 …… 162
11.1 概述 …… 162
11.2 當前的情況 …… 163
11.3 業務邏輯和Web層 …… 163
11.3.1 應用邏輯 …… 163
11.3.2 基礎設施 …… 164
11.3.3 增加一個應用 …… 164
11.3.4 發現基礎設施 …… 165
11.4 數據庫層 …… 167
11.4.1 事務數據 …… 167
11.4.2 基礎設施支持 …… 168
11.4.3 會話數據 …… 168
11.5 其他基礎設施工具 …… 168
11.5.1 gem存儲庫服務器 …… 169
11.5.2 Elasticsearch …… 169
11.5.3 域名係統 …… 169
11.6 數據中心切換 …… 170
11.6.1 受控切換步驟 …… 170
11.6.2 非受控切換 …… 174
11.6.3 定義和自動化切換步驟 …… 175
11.7 測試 …… 177
11.7.1 數據中心切換應用程序 …… 177
11.7.2 基礎設施測試 …… 177
11.7.3 持續交付流水綫 …… 177
11.8 小結 …… 178
11.9 更多閱讀材料 …… 179
第12章 實施企業的持續部署流水綫 …… 180
12.1 概述 …… 180
12.2 組織背景 …… 180
12.3 持續部署流水綫 …… 182
12.3.1 持續部署流水綫工具 …… 183
12.3.2 使用AWS CloudFormation的環境定義 …… 184
12.3.3 標準化的應用程序生命周期概覽及其使用 …… 186
12.3.4 標準化的應用程序生命周期階段 …… 188
12.3.5 管理復雜的應用程序和流水綫狀態 …… 194
12.3.6 管理持久化 …… 196
12.4 讓安全成為持續部署流水綫的基礎 …… 196
12.4.1 使用Amazon CloudFormation分離職責 …… 196
12.4.2 身份和訪問管理 …… 197
12.5 高級概念 …… 198
12.5.1 最小化生産環境和非生産環境之間的偏移 …… 198
12.5.2 解決供應商的限製 …… 198
12.5.3 廠商鎖定 …… 199
12.5.4 新的AWS內置服務的展望 …… 199
12.6 小結 …… 199
12.7 更多閱讀材料 …… 200
第13章 遷移到微服務 …… 202
13.1 Atlassian概述 …… 202
13.2 構建部署微服務的平颱 …… 203
13.3 BlobStore:一個微服務例子 …… 206
13.3.1 架構 …… 206
13.3.2 通過純函數式架構和編程實現安全性和性能 …… 207
13.3.3 解決“非功能需求” …… 210
13.4 開發過程 …… 210
13.4.1 開發人員和支持 …… 211
13.4.2 構建和部署流水綫 …… 212
13.4.3 客戶應用的生産環境的零停機時間路徑 …… 214
13.5 BlobStore演進 …… 215
13.6 小結 …… 219
13.7 更多閱讀材料 …… 219
第五部分 走 嚮 未 來
第14章 作為過程的運維 …… 222
14.1 概述 …… 222
14.2 動機和概覽 …… 223
14.3 離綫活動 …… 224
14.4 在綫活動 …… 227
14.4.1 錯誤檢測 …… 227
14.4.2 錯誤恢復 …… 229
14.5 錯誤診斷 …… 229
14.6 監控 …… 231
14.7 小結 …… 231
14.8 更多閱讀材料 …… 231
第15章 DevOps的未來 …… 232
15.1 概述 …… 232
15.2 組織問題 …… 233
15.2.1 DevOps活動中可能涉及的其他組 …… 233
15.2.2 所有關係和重組 …… 234
15.2.3 授權與控製 …… 234
15.3 過程問題 …… 235
15.3.1 廠商鎖定和標準 …… 235
15.3.2 計費模型 …… 235
15.3.3 變更的速度 …… 236
15.4 技術問題 …… 237
15.4.1 持續部署流水綫概念 …… 237
15.4.2 在持續部署流水綫中獲得質量 …… 239
15.4.3 實現 …… 239
15.5 錯誤報告和修復 …… 240
15.6 結束語 …… 240
15.7 更多閱讀材料 …… 240
參考文獻 …… 241
· · · · · · (
收起)