DevOps為加速新軟件功能的發布和改善對生産環境係統的監控帶來瞭希望,但是對軟件架構師和軟件架構來說,DevOps的關鍵意義卻常常被忽視。本書全麵解決瞭這些問題,不僅剖析瞭軟件架構師為實現DevOps目標必須要做齣的決策,並且說明瞭DevOps的其他參與者有可能以哪種方式來影響架構師的工作,還詳細介紹瞭高效部署DevOps所需要的組織、技術和運營環境,以及DevOps對每個開發階段的影響。作者解決瞭把多個功能關聯起來的橫切關注點問題,提供瞭對閤規性、性能、可靠性、可重復性和安全方麵的切閤實際的洞察。
《DevOps:軟件架構師行動指南》從軟件架構師視角講解瞭引入DevOps實踐所需要擁有的技術能力,涵蓋運維、部署流水綫、監控、安全與審計以及質量關注。通過三個經典案例研究,講解在不同場景下應用DevOps實踐的方法,對於想應用DevOps實踐的組織提供切實的指導。
全書共五部分。第一部分(第1~3章)討論DevOps的背景,包括DevOps的目標和期望使用DevOps解決的問題、雲、運維等。第二部分(第4~6章)介紹部署流水綫,從功能性視角介紹部署實踐的內容,涵蓋微服務架構風格、構建和測試過程、工具鏈,以及具體的部署問題。第三部分(第7~10章)介紹橫切關注點,討論瞭計算監控、實時測試、安全與安全審計,以及部署流水綫的性能、可靠性、可修改性等。還介紹瞭業務關注點,包括為引進DevOps所需要準備的業務計劃的組成元素,以及如何進行論證、推齣和測量業務計劃。第四部分(第11~13章)描述3個案例研究:為瞭實現業務連續性如何維護兩個數據中心,管理一個持續部署流水綫,一個組織如何遷移到微服務架構上。第五部分(第14~15章)設想evOps的未來,介紹瞭目前的研究以及如何基於把運維視作一係列過程來進行,並給齣瞭3~5年內DevOps將如何發展的預測。
作者簡介:
倫恩·拜斯(Len Bass) 澳大利亞NICTA的高級首席研究員。他曾在卡內基梅隆大學軟件工程研究所工作25年,有超過50年的軟件開發和研究經驗。他是兩本軟件架構方麵獲奬圖書的閤作者(《Software Architecture in Practice, Third Edition》和《Documenting Software Architectures:Views and Beyond,Second Edition》),他還與人閤作齣版或發錶瞭數篇計算機科學與軟件工程領域的其他書籍和論文。
英戈·韋伯(Ingo Weber) 澳大利亞NICTA軟件係統研究組的高級研究員,也是新南威爾士大學計算機科學與工程係的兼職高級講師。他的研究領域包括雲計算、DevOps、業務過程管理以及人工智能。
硃黎明(Liming Zhu) 澳大利亞NICTA一個研究小組的負責人和首席研究員。他擁有新南威爾士大學和悉尼大學的聯閤職位。曾就職於數個在軟件領域具有領先地位的技術公司。
譯者簡介:
胥峰 資深運維專傢,有10年運維經驗,在業界頗具威望和影響力。2011年加入盛大遊戲,工作至今,曾參與盛大遊戲多款大型端遊和手遊的運維,主導 運維自動化平颱的功能設計和實施。通過公眾號“運維技術實踐”發布 “網絡分析技術實踐”係列主題技術文章,引發萬人閱讀轉發。擁有工信部認證高級信息係統項目管理師資格。
任發科目前擔任融數數據研發總監,曾任職唯品會、會唐網、亞*遜、ThoughtWorks,有十餘年軟件開發、架構和管理經驗。曾參與多個電商相關係統的研發工作,近年主要從事DevOps工具鏈的設計與實現,大數據平颱的組建,以及高效研發團隊的組建與管理。
“橫看成嶺側成峰,遠近高低各不同”。當我們愈是從不同角度和層麵解讀DevOps,就有機會愈加接近DevOps的本質,並正確地指導企業經營和技術實踐。本書少有的從軟件架構層麵係統性地闡述DevOps,令人耳目一新並大呼過癮,再加之譯者深厚的DevOps實踐功底,相信本書能成為您床頭案尾必備好書。
——蕭田國,高效運維社區發起人、DevOpsDays中國聯閤發起人
作為一名持續交付領域的倡導者和先行者,我欣喜地看到首本以軟件架構師視角全方位講解DevOps實踐的書。尤其是案例研究部分,為不同場景下引入DevOps實踐提供瞭有價值的指引,希望每個軟件開發者都能從書中得到啓示。胥峰和任發科都是各自公司DevOps實踐的先行者,對於DevOps有著深入的理解。另外,作為曆時8個月完成《持續交付》的譯者,我也深知技術翻譯的不易。感謝本書譯者的辛勤努力,相信讀者也能感受到譯著的專業性和質量保證。
——喬梁,《持續交付》譯者、敏思特谘詢公司閤夥人
胥峰作為國內實戰DevOps的運維人,譯者身上有著深厚的DevOps實踐和理論基礎。在推廣DevOps的過程中,不斷會遇到DevOps如何落地的問題?本書的實際操作性就非常強,從DevOps的核心-部署流水綫開始,逐步闡述DevOps的能力構成,並輔助案例,相信這個會給讀者帶來莫大的收益。
——王津銀,優維科技CEO
DevOps自誕生起,就為企業勾勒瞭一幅美好的圖譜,在業務生命周期中,企業的不同崗位和不同角色通力閤作,讓IT的效率與質量得到提升,這也是DevOps在IT界備受追捧的重要原因。本書從軟件架構師視角解讀DevOps,從方法論和自動化工具等不同角度全麵且深入的剖析、循序漸進地帶領讀者觸及那圖譜中美好的景象。這是一本難得的DevOps佳作,是每位希望掌握DevOps的IT工程師不可錯過的一本好書,值得大傢捧讀與收藏。
——梁定安,騰訊技術總監、織雲負責人
藉用我喜歡的吳軍老師一句話“對於一個弄潮的年輕人來說,幸運的莫過於趕上一波浪潮。每一個人都應該看清楚浪潮,趕上浪潮,如此,便不枉此生”。今天,對於技術工程師來說,DevOps就是新的一波技術革命、技術浪潮。在它來臨之際,作為行業中人,無疑應該擁抱它,讓自己成為時代的弄潮兒,成為那2%的受益者。
——陳桂新,盛大遊戲高級總監
譯者序
前言
第一部分 背 景
第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
譯 者 序
為什麼要翻譯這本書
2016年7月中旬,機械工業齣版社華章公司王春華老師問我有沒有興趣翻譯一本DevOps實踐的書,在看過這本書的英文版之後,我欣然答應瞭。
因為,我知道這是一本有重要價值的書,我願意花時間把它翻譯齣來,我想讓它被更多人研讀學習。
自從在Agile 2008大會上討論DevOps一詞以來,DevOps理念得到瞭IT從業者的認可和追捧。數年之後,再次客觀地審視DevOps運動時,我們發現從整個信息技術領域來看,DevOps還沒有成為開發和運維的事實標準。
原因何在?
我想,其中最重要的一個原因是,很多組織缺少在業務中引入DevOps實踐的專傢知識,也沒有很多可以藉鑒的成功案例。而這本書正好可以解決這個問題。
本書從軟件架構師的視角講解瞭引入DevOps實踐所需要掌握的技術能力,涵蓋瞭運維、部署流水綫、監控、安全與審計以及質量關注。第四部分通過3個經典案例研究,講解瞭在不同場景下應用DevOps實踐的方法。這對於想應用DevOps實踐的組織具有切實的指導意義。
初識本書,我有一種相見恨晚的感覺。研讀之後,這種感覺尤甚。相信讀者也一定會有這樣的感覺。
衷心希望本書中文版能給讀者帶來有價值的信息,為推動DevOps進一步發展和應用做齣貢獻。
讀者對象
本書適閤以下幾類讀者閱讀:
軟件架構師
中高級運維工程師
計算機相關專業的學生
希望提高IT生産力的人員
勘誤支持
雖然譯者試圖努力保證本書翻譯中不齣現錯誤,但鑒於譯者的知識和視角,書中難免齣現用詞錯誤、技術適用性的問題。在此,譯者懇請讀者不吝指教,指齣錯誤。請讀者發送郵件到xufengnju@163.com或者加入QQ群434242482,幫助譯者修正錯誤。本書的勘誤將在網站http://xufeng.info/刊載。
譯者說明
本書由來自盛大遊戲、唯品會等互聯網企業的資深DevOps專傢聯閤翻譯完成。
除胥峰、任發科外,參與翻譯的人員還有米全喜、吳昊、黃靈等。全書由胥峰完成統稿和技術審校。
緻謝
感謝華章公司引進瞭本書的中譯本版權,這是本中譯本得以麵市的最核心要素。
感謝華章公司盛思源、關敏和王春華老師,你們專業的編輯能力為本書提供瞭重要的質量保證。
感謝盛大遊戲各位領導對我翻譯本書的關心和支持。
感謝我的妻子呂寜和可愛的女兒胥欣,謝謝你們的支持和理解。
前言
多年以來,我們一直在探索研究運維中的問題。自然而然地,我們也一直在追蹤DevOps運動。它正在沿著Gartner成熟度麯綫嚮上發展。這種現象有著堅實的業務原因。我們能夠找到從信息技術經理視角對DevOps的探討(例如小說《鳳凰項目:一個IT運維的傳奇故事》),也能找到從項目經理視角對DevOps的探討(例如《持續交付:發布可靠軟件的係統方法》)。而且,關於文化變革和文化變革對於打破組織單元之間障礙的意義,也有大量的資料。
然而,令我們感到失望的是,鮮有從軟件架構師角度對DevOps探討的資料。把運維人員視為首要乾係人並且聆聽他們的需求當然是非常重要的。使用工具來支持運維和項目管理也是非常重要的。然而,我們強烈感覺到,DevOps並不僅僅是關於乾係人管理和工具使用的。
事實上,正是因為目前缺少這方麵的資料,所以我們纔決定撰寫本書,把這些缺失的內容填充起來。DevOps與設計、過程、工具化和組織結構之間的相互作用令人著迷。我們試圖迴答兩個主要問題:作為軟件架構師,我需要做齣什麼樣的技術決策纔能夠實現DevOps目標?DevOps領域的其他參與者會對我産生什麼樣的影響?
以上這些問題的答案是,實現DevOps目標可能包含著對你的係統架構和角色以及責任做齣重大變更,在把係統部署到生産環境以及在生産環境中支持這些係統時,需要以上角色及責任。
正如軟件架構師必須理解他們所設計與構建的係統的業務情境和目標一樣,理解DevOps也要理解組織和業務情境,同時也要理解技術和運維情境。我們探索瞭所有這些內容。
本書的主要讀者是那些曾經被問過或者將被問到“這個項目或者組織是否應該采用DevOps實踐”這個問題的執業軟件架構師。甚至他們不是被追問這個問題,而是他們有可能被告知是否應該采用DevOps實踐。與所有書一樣,我們期望還有其他類型的讀者。那些有興趣學習更多關於軟件架構實踐的學生應該可以在本書中找到一些感興趣的資料。那些想探索研究DevOps課題的研究人員可以在本書中找到重要的背景資料。然而,我們的主要讀者還是那些執業軟件架構師。
概述
在本書的開始,我們討論瞭DevOps的背景。在第一部分中,我們研究瞭DevOps的目標以及期望使用DevOps來解決的問題。我們會涉及組織和文化問題,也會涉及DevOps實踐和敏捷方法學的關係。
在第2章中,我們研究瞭雲。隨著雲即平颱(Cloud as a Platform)的增長,DevOps實踐也得到瞭發展。理論上,DevOps和雲即平颱是可分開的,但是事實上,虛擬化和雲是推動DevOps實踐的重要力量。
在介紹背景知識的最後一章(第3章)中,我們按照信息技術基礎設施庫(Information Technology Infrastructure Library,ITIL)的理論研究瞭運維。ITIL是對運維組的最重要功能進行組織的體係。不是所有的運維工作都包含在DevOps實踐中,但是理解運維組的職責卻會提供重要的上下文信息,特彆是當需要理解角色和職責時。
第二部分描述瞭部署流水綫(Deployment Pipeline)。在這一部分中,我們首先探索瞭微服務架構風格,這齣現在第4章中。為瞭應用DevOps實踐而以微服務風格進行係統架構並不是必需的,但是,卻能用微服務架構風格來解決DevOps所需要解決的一些問題。
在第5章中,我們簡略介紹瞭構建和測試過程以及工具鏈。理解這些內容很重要,但它們不是我們的焦點。我們介紹瞭把係統部署到生産環境所關聯的各種不同環境以及在這些環境上執行的不同類型的測試。因為在DevOps中用到的很多工具也在構建和測試過程中被用到瞭,所以我們提供瞭理解這些工具和如何控製它們的上下文信息。
我們以討論部署結束第二部分。DevOps的目標之一是加速部署。實現這個目標的一種技術是,使得每個開發團隊可以在完成準備後獨立地部署他們的代碼。獨立部署帶來瞭很多一緻性的問題。我們將討論不同的部署模型;管理同時運行在生産環境中不同版本的係統;在發生錯誤時迴滾;以及與實際把係統部署到生産環境中有關的其他主題。
第二部分提供瞭從功能視角觀察部署實踐的內容。然而,與其他任何係統一樣,質量視角常常是控製係統設計和係統接受度的主要因素。在第三部分中,我們聚焦在橫切關注點上。我們首先在第7章中討論瞭監控和現場測試(live testing)。現代軟件測試實踐在將係統部署到生産環境中以後並沒有結束。首先,係統被廣泛地監控以檢測問題;其次,在將係統部署到生産環境以後,測試正以各種形式繼續進行。
另一個橫切關注點是安全。我們在第8章中討論瞭該內容。我們展示瞭環境中各種不同類型的安全控製,包括組織範圍和特定係統範圍的安全控製。我們討論瞭與實現安全相關聯的不同角色以及在安全審計案例中如何評估這些角色。
安全不是質量關注的全部。在第9章中,我們討論瞭與DevOps實踐有關的其他方麵的質量。我們討論的主題包括部署流水綫的性能、可靠性和可修改性。
第三部分的最後,我們在第10章中討論瞭業務關注。像DevOps這種涉及麵廣泛的實踐,如果得不到來自管理層的支持,是無法被采用的。業務計劃是尋求這種支持的一種典型方法。因此,我們描述瞭為引進DevOps所需要準備的業務計劃的組成元素,然後討論瞭如何進行論證、推齣和測量業務計劃。
在第四部分中,我們描述瞭3個案例研究。這些實施瞭DevOps實踐的組織給我們講解瞭他們所采用的一些技巧。第11章討論瞭為瞭實現業務連續性如何維護兩個數據中心;第12章展示瞭一個持續部署流水綫的細節;第13章描述瞭一個組織是如何遷移到微服務架構上的。
作為本書的結尾,我們在第五部分展望瞭DevOps的未來。第14章描述瞭我們的研究以及它是如何基於把運維視作一係列過程來進行的。第15章預測瞭未來3~5年DevOps將如何發展。
緻謝
本書離不開眾多人的幫助。在此,感謝Chris Williams、John Painter、Daniel Hand和Sidney Shek,他們為案例研究做齣瞭貢獻。同時,感謝Adnene Guabtni、Kanchana Wickremasinghe、Min Fu和Xiwei Xu在有些章節中提供的幫助。
感謝Manuel Pais幫助我們編排瞭案例研究。感謝Philippe Kruchten、Eoin Woods、Gregory Hartman、Sidney Shek、Michael Lorant、Wouter Geurts和Eltjo Poort對本書做齣瞭評論或者為本書的某些方麵做齣瞭貢獻。
下列人士對第13章做齣瞭評論,在此錶示感謝:Jean-Michel、Lemieux、Greg Warden、Robin Fernandes、Jerome Touffe-Blin、Felipe Cuozzo、Pramod Korathota、Nick Wright、Vitaly Osipov、Brad Baker和Jim Watts。
在齣版階段,Addison-Wesley齣版社的編輯用他們一貫的專業和高效的工作為本書順利齣版做齣瞭貢獻。他們的專業知識和工作經驗提升瞭本書的質量。
最後,感謝NICTA和NICTA的管理層。NICTA是由澳大利亞政府通過通信部(Department of Communications)和由澳大利亞研究委員會(Australian Research Council)通過ICT卓越中心(Centre of Excellence)項目組建的。如果沒有他們的慷慨支持,本書將難以完成。
圖例說明
對於圖,我們使用瞭4種不同的圖例。我們使用架構標注法來識彆我們使用的關鍵架構概念;使用業務流程建模標注(Business Process Model and Notation,BPMN)來描述一些過程;使用波特價值鏈標注(Porter’s Value Notation)來描述一些其他的過程;使用UML時序圖來組織活動的順序。這裏沒有給齣UML時序圖標注。我們給齣瞭通過其他方法進行的標注。
看介绍不错,正准备学习参考。
评分完美的一次购物。下次还在京东购买。京豆省了好多钱。
评分学习学习
评分很不错的
评分照见五蕴皆空,
评分对devops讲解的很透彻,实践指导意义很好
评分看介绍不错,正准备学习参考。
评分活动购买,价格便宜,物流给力!
评分有些书的质量还可以,价格有些实在太贵了,比其他书店贵一些
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有