注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡(luò)軟件工程及軟件方法學基礎(chǔ)設(shè)施即代碼 云服務(wù)器管理

基礎(chǔ)設(shè)施即代碼 云服務(wù)器管理

基礎(chǔ)設(shè)施即代碼 云服務(wù)器管理

定 價:¥89.00

作 者: [美] 基夫·莫里斯(Kief Morris) 著,金明,錢偉,馬博文,黃博文,禚嫻靜 譯
出版社: 人民郵電出版社
叢編項:
標 簽: 暫缺

ISBN: 9787115490636 出版時間: 2018-09-01 包裝: 平裝
開本: 16開 頁數(shù): 240 字數(shù):  

內(nèi)容簡介

  本書旨在解釋如何利用“云時代”基礎(chǔ)設(shè)施即代碼的方法來管理IT基礎(chǔ)設(shè)施。主要內(nèi)容包括:組織在采用新一代基礎(chǔ)設(shè)施技術(shù)時經(jīng)常掉進的陷阱以及避免這些陷阱的核心原則和基礎(chǔ)設(shè)施即代碼的關(guān)鍵實踐;動態(tài)基礎(chǔ)設(shè)施平臺的性能和服務(wù)模型;提供、確認核心基礎(chǔ)設(shè)施資源的工具;規(guī)定服務(wù)器、構(gòu)建服務(wù)器模板和更新運行服務(wù)器的實踐和模型。

作者簡介

  【作者簡介】基夫·莫里斯(Kief Morris)是ThoughtWorks歐洲區(qū)持續(xù)交付和DevOps帶頭人,致力于幫助客戶尋找建立和管理基礎(chǔ)設(shè)施運維工作的更有效方法;擁有近20年設(shè)計、構(gòu)建和運行自動化IT服務(wù)器基礎(chǔ)設(shè)施的經(jīng)驗?!咀g者簡介】金明益輔金服CTO,ThoughtWorks前咨詢師,ScaleWorks云創(chuàng)始人及架構(gòu)師。擁有超過十年的互聯(lián)網(wǎng)產(chǎn)品以及云計算的研發(fā)管理經(jīng)驗,為國內(nèi)外多家銀行、華為、中興等大中型企業(yè)提供了技術(shù)變革的咨詢服務(wù),并多次在國內(nèi)外軟件大會上做主題演講。譯有《敏捷軟件開發(fā)實踐》《項目百態(tài)》等書。錢偉千米網(wǎng)內(nèi)部敏捷教練,在通信行業(yè)有十年研發(fā)、售后、交付經(jīng)驗,兩年IT咨詢經(jīng)驗,深信“只要姿勢對,敏捷治百病”。馬博文ThoughtWorks前咨詢師,AWS助理架構(gòu)師。擁有多年Web開發(fā)和DevOps經(jīng)驗,熟悉持續(xù)交付、微服務(wù)。曾參與翻譯《Scala編程實戰(zhàn)》《DevOps實踐》和《DevOps實踐指南》,是西安DevOps Meetup活動的發(fā)起人。黃博文阿里巴巴技術(shù)專家,多年一線開發(fā)老兵,在持續(xù)集成、持續(xù)部署等DevOps領(lǐng)域擁有豐富的經(jīng)驗。曾在國內(nèi)外多家企業(yè)從事過技術(shù)教練以及技術(shù)咨詢工作,擅長敏捷工作方式。擁有AWS解決方案架構(gòu)師,譯有《面向?qū)ο蟮乃伎歼^程》。禚嫻靜ThoughtWorks咨詢師,擁有多年企業(yè)和互聯(lián)網(wǎng)應(yīng)用的一線開發(fā)經(jīng)驗,參與和主導過多個大型敏捷項目的技術(shù)交付、遺留系統(tǒng)重構(gòu)和微服務(wù)架構(gòu)轉(zhuǎn)型。曾參與翻譯《遺留系統(tǒng)重建實戰(zhàn)》,享受跳躍的代碼和專注帶來的樂趣。

圖書目錄

第 一部分 基礎(chǔ)
第 1章 挑戰(zhàn)與原則 3
1.1 為什么采用基礎(chǔ)設(shè)施即代碼 3
1.2 什么是基礎(chǔ)設(shè)施即代碼 4
1.3 動態(tài)基礎(chǔ)設(shè)施的挑戰(zhàn) 5
1.3.1 服務(wù)器蔓延 5
1.3.2 配置漂移 6
1.3.3 雪花服務(wù)器 6
1.3.4 脆弱的基礎(chǔ)設(shè)施 7
1.3.5 自動化恐懼癥 7
1.3.6 侵蝕 8
1.4 基礎(chǔ)設(shè)施即代碼的原則 8
1.4.1 系統(tǒng)能夠輕松復制 8
1.4.2 系統(tǒng)是用完可扔的 9
1.4.3 系統(tǒng)是一致的 10
1.4.4 過程是可重復的 10
1.4.5 設(shè)計經(jīng)常變更 10
1.5 實踐 11
1.5.1 使用定義文件 11
1.5.2 自文檔化的系統(tǒng)和流程 11
1.5.3 一切版本化 12
1.5.4 持續(xù)測試系統(tǒng)和流程 13
1.5.5 小的變更,而不是批量變更 13
1.5.6 讓服務(wù)持續(xù)可用 13
1.6 反脆弱性:超越“穩(wěn)健性” 14
1.7 結(jié)語 15
1.8 下一步 15
第 2章 動態(tài)基礎(chǔ)設(shè)施平臺 16
2.1 什么是動態(tài)基礎(chǔ)設(shè)施平臺 16
2.2 對動態(tài)基礎(chǔ)設(shè)施平臺的要求 17
2.2.1 可編程 17
2.2.2 按需獲取 19
2.2.3 自服務(wù) 19
2.3 平臺提供的基礎(chǔ)設(shè)施資源 19
2.3.1 計算資源 20
2.3.2 存儲資源 20
2.3.3 網(wǎng)絡(luò)資源 22
2.4 動態(tài)基礎(chǔ)設(shè)施平臺的類型 23
2.4.1 公有IaaS云 23
2.4.2 社區(qū)IaaS云 23
2.4.3 私有IaaS云 23
2.4.4 反模式:手搖云 24
2.4.5 混合云服務(wù) 24
2.4.6 裸機云 24
2.5 如何選擇動態(tài)基礎(chǔ)設(shè)施平臺 25
2.5.1 公有還是私有 25
2.5.2 云的可移植性 27
2.6 與云和虛擬化的“機械通感” 29
2.7 結(jié)語 30
第3章 基礎(chǔ)設(shè)施定義工具 31
3.1 選擇基礎(chǔ)設(shè)施即代碼的工具 31
3.1.1 需求:腳本接口 32
3.1.2 需求:無人值守的命令行工具 32
3.1.3 需求:支持無人值守的執(zhí)行 33
3.1.4 需求:外部化配置 34
3.2 配置定義文件 36
3.3 使用基礎(chǔ)設(shè)施定義工具 37
3.3.1 用過程化腳本置備基礎(chǔ)設(shè)施 38
3.3.2 聲明式定義基礎(chǔ)設(shè)施 40
3.3.3 使用基礎(chǔ)設(shè)施定義工具 41
3.3.4 配置服務(wù)器 41
3.4 配置注冊表 42
3.4.1 輕量級配置注冊表 42
3.4.2 配置注冊表是CMDB嗎 43
3.4.3 CMDB的審計與修復反模式 44
3.4.4 CMDB的基礎(chǔ)設(shè)施即代碼方式 44
3.5 結(jié)語 44
第4章 服務(wù)器配置工具 45
4.1 自動化服務(wù)器管理的目標 45
4.2 具有不同的服務(wù)器管理功能的工具 46
4.2.1 創(chuàng)建服務(wù)器的工具 46
4.2.2 配置服務(wù)器的工具 47
4.2.3 打包服務(wù)器模板的工具 48
4.2.4 在服務(wù)器上運行命令的工具 49
4.2.5 從中央注冊中心獲取配置 50
4.3 服務(wù)器變更管理模型 51
4.3.1 臨時變更管理 51
4.3.2 配置同步 51
4.3.3 不可變的基礎(chǔ)設(shè)施 51
4.3.4 容器化服務(wù) 52
4.4 容器 52
4.4.1 以容器方式和非容器方式管理Ruby應(yīng)用程序 53
4.4.2 容器是虛擬機嗎 54
4.4.3 使用容器而不是虛擬機 55
4.4.4 運行容器 56
4.4.5 安全和容器 56
4.5 結(jié)語 58
第5 基礎(chǔ)服務(wù)概述 59
5.1 基礎(chǔ)設(shè)施服務(wù)和工具的考慮 59
5.1.1 支持外部配置的工具優(yōu)先 60
5.1.2 假定基礎(chǔ)設(shè)施是動態(tài)的工具優(yōu)先 61
5.1.3 具有云兼容許可的產(chǎn)品優(yōu)先 61
5.1.4 支持松耦合的產(chǎn)品優(yōu)先 62
5.2 團隊之間共享服務(wù) 62
5.3 監(jiān)控:告警、指標和日志 63
5.3.1 告警:出現(xiàn)問題時告訴我 64
5.3.2 指標:收集和分析數(shù)據(jù) 65
5.3.3 日志聚合和分析 65
5.4 發(fā)現(xiàn)服務(wù) 66
5.4.1 服務(wù)器端的服務(wù)發(fā)現(xiàn)模式 67
5.4.2 客戶端的服務(wù)發(fā)現(xiàn)模式 67
5.5 分布式進程管理 67
5.5.1 使用服務(wù)器角色編排進程 67
5.5.2 使用容器編排進程 67
5.5.3 調(diào)度短期任務(wù) 68
5.5.4 容器編排工具 68
5.6 軟件部署 68
5.6.1 部署流水線軟件 68
5.6.2 打包軟件 69
5.7 結(jié)語 70
第二部分 模式
第6章 置備服務(wù)器的模式 73
6.1 服務(wù)器置備 74
6.1.1 服務(wù)器的生命周期 74
6.1.2 服務(wù)器都承載了什么 77
6.1.3 服務(wù)器上東西的類型 77
6.1.4 服務(wù)器角色 79
6.2 創(chuàng)建服務(wù)器的模式 80
6.2.1 反模式:手動制作服務(wù)器 80
6.2.2 實踐:將服務(wù)器創(chuàng)建參數(shù)放在腳本中 81
6.2.3 反模式:熱克隆服務(wù)器 82
6.2.4 模式:服務(wù)器模板 82
6.2.5 反模式:雪花工廠 82
6.3 引導新服務(wù)器的模式 83
6.3.1 推送引導 83
6.3.2 拉取引導 84
6.3.3 實踐:對每個新服務(wù)器實例進行冒煙測試 84
6.4 結(jié)語 85
第7章 管理服務(wù)器模板的模式 86
7.1 供應(yīng)模板:不能讓別人來做嗎 86
7.2 使用模板置備服務(wù)器 87
7.2.1 創(chuàng)建時置備服務(wù)器 87
7.2.2 在模板中置備 88
7.2.3 平衡模板和創(chuàng)建之間的置備工作 88
7.3 構(gòu)建服務(wù)器模板的流程 89
7.4 原始鏡像 90
7.4.1 反模式:熱復制服務(wù)器模板 90
7.4.2 基于操作系統(tǒng)安裝鏡像烘焙模板 91
7.4.3 基于供應(yīng)鏡像烘焙模板 91
7.4.4 基于Unikernel構(gòu)建模板 92
7.4.5 在不啟動服務(wù)器的情況下自定義服務(wù)器模板 92
7.5 更新服務(wù)器模板 92
7.5.1 重新烘烤模板 93
7.5.2 烘焙新模板 93
7.5.3 版本控制服務(wù)器模板 93
7.6 構(gòu)建基于角色的模板 95
7.6.1 模式:分層模板 95
7.6.2 共享模板的基礎(chǔ)腳本 96
7.7 自動化服務(wù)器模板管理 96
7.7.1 在烘焙前自定義服務(wù)器 96
7.7.2 實踐:自動測試服務(wù)器模板 97
7.8 結(jié)語 97
第8章 服務(wù)器更新與變更模式 98
8.1 服務(wù)器變更管理模型 99
8.1.1 臨時性變更管理 99
8.1.2 持續(xù)配置同步 99
8.1.3 不可變服務(wù)器 99
8.1.4 容器化服務(wù)器 100
8.2 通用模式和實踐 100
8.2.1 實踐:最小化服務(wù)器模板 101
8.2.2 實踐:當服務(wù)器模板變更時更換服務(wù)器 101
8.2.3 模式:鳳凰服務(wù)器 101
8.3 持續(xù)部署的模式與實踐 102
8.3.1 模式:無主服務(wù)器的配置管理 102
8.3.2 實踐:應(yīng)用Cron 103
8.3.3 持續(xù)同步流 104
8.3.4 未配置領(lǐng)域 104
8.4 不可變服務(wù)器的模式與實踐 106
8.4.1 服務(wù)器鏡像作為制品 106
8.4.2 使用不可變服務(wù)器簡化確認管理工具 106
8.4.3 不可變服務(wù)器流程 107
8.4.4 使用不可變服務(wù)器引導配置 108
8.4.5 事務(wù)性服務(wù)器更新 109
8.5 管理配置定義的實踐 109
8.5.1 實踐:保持配置定義最小化 109
8.5.2 組織定義 110
8.5.3 實踐:使用測試驅(qū)動開發(fā)來驅(qū)動良好的設(shè)計 110
8.6 結(jié)語 110
第9章 定義基礎(chǔ)設(shè)施的模式 111
9.1 環(huán)境 112
9.1.1 反模式:手動制作的基礎(chǔ)設(shè)施 112
9.1.2 定義基礎(chǔ)設(shè)施棧即代碼 112
9.1.3 反模式:每個環(huán)境單獨的定義文件 114
9.1.4 模式:可重用的定義文件 114
9.1.5 實踐:測試并推進棧定義 115
9.1.6 自服務(wù)的環(huán)境 116
9.2 組織基礎(chǔ)設(shè)施 116
9.2.1 反模式:單體?!?16
9.2.2 遷移基礎(chǔ)設(shè)施時避免“直接遷移” 118
9.2.3 將應(yīng)用程序環(huán)境分到不同的棧中 118
9.2.4 管理棧之間的配置參數(shù) 119
9.2.5 共享基礎(chǔ)設(shè)施元素 120
9.2.6 實踐:應(yīng)用程序代碼和基礎(chǔ)設(shè)施代碼一起管理 122
9.2.7 共享定義的方法 123
9.2.8 實踐:基礎(chǔ)設(shè)施設(shè)計要與變更范圍匹配 124
9.2.9 示例:微服務(wù)的基礎(chǔ)設(shè)施設(shè)計 125
9.3 運行定義工具 128
9.4 結(jié)語 128
第三部分 實踐
第 10章 基礎(chǔ)設(shè)施的軟件工程實踐 131
10.1 系統(tǒng)質(zhì)量 132
10.1.1 低質(zhì)量的系統(tǒng)很難變更 132
10.1.2 高質(zhì)量的系統(tǒng)能更容易、更安全地變更 132
10.1.3 基于代碼的基礎(chǔ)設(shè)施質(zhì)量 133
10.1.4 快速反饋 133
10.2 基礎(chǔ)設(shè)施管理的版本控制系統(tǒng) 133
10.3 持續(xù)集成 134
10.3.1 持續(xù)測試分支不是持續(xù)集成 134
10.3.2 誰破壞了構(gòu)建 136
10.3.3 忽略失敗的測試 137
10.3.4 針對基礎(chǔ)設(shè)施的持續(xù)集成 137
10.4 持續(xù)交付 137
10.4.1 集成階段的問題 137
10.4.2 部署流水線和變更流水線 138
10.4.3 持續(xù)交付不是持續(xù)部署 139
10.5 代碼質(zhì)量 140
10.5.1 整潔代碼 140
10.5.2 實踐:管理技術(shù)債務(wù) 140
10.6 管理重大的基礎(chǔ)設(shè)施變更 141
10.7 結(jié)語 142
第 11章 測試基礎(chǔ)設(shè)施變更 143
11.1 敏捷測試方法 144
11.1.1 自動化測試提供快速反饋 144
11.1.2 有機地構(gòu)建一個測試套件 145
11.2 構(gòu)建測試套件:測試金字塔 145
11.2.1 避免失衡的測試套件 146
11.2.2 實踐:盡可能在最低層級進行測試 147
11.2.3 實踐:僅實現(xiàn)需要的層級 148
11.2.4 實踐:經(jīng)常刪減測試套件 148
11.2.5 實踐:持續(xù)評審測試的有效性 148
11.3 實現(xiàn)均衡的測試套件 149
11.3.1 低層級測試 150
11.3.2 中間層級測試 151
11.3.3 高層級測試 154
11.3.4 測試運維質(zhì)量 155
11.4 管理測試代碼 156
11.4.1 實踐:將測試代碼與所測代碼放在一起 156
11.4.2 反模式:反射測試 156
11.4.3 隔離組件進行測試的技巧 157
11.4.4 重構(gòu)組件以便隔離 158
11.4.5 管理外部依賴 158
11.4.6 測試設(shè)置 159
11.5 測試的角色和工作流 161
11.5.1 原則:人們應(yīng)該為所構(gòu)建的東西編寫測試 161
11.5.2 編寫測試的習慣 162
11.5.3 原則:每個人都應(yīng)該能夠使用測試工具 162
11.5.4 質(zhì)量分析師的價值 162
11.5.5 測試驅(qū)動開發(fā) 163
11.6 結(jié)語 164
第 12章 基礎(chǔ)設(shè)施的變更管理流水線 165
12.1 變更管理流水線的好處 166
12.2 設(shè)計流水線的準則 166
12.2.1 確保每個階段的一致性 167
12.2.2 對于每個變更都立即得到反饋 167
12.2.3 在手動階段之前運行自動階段 168
12.2.4 盡早獲得類生產(chǎn)環(huán)境 168
12.3 基本流水線設(shè)計 169
12.3.1 本地開發(fā)階段 169
12.3.2 構(gòu)建階段 169
12.3.3 發(fā)布配置制品 170
12.3.4 自動化測試階段 171
12.3.5 手動驗證階段 172
12.3.6 上線 173
12.3.7 流水線的節(jié)奏 173
12.4 使用流水線的實踐 174
12.4.1 實踐:證明每個變更都對生產(chǎn)準備就緒 174
12.4.2 實踐:每個變更都始于流水線起點 175
12.4.3 實踐:出現(xiàn)錯誤時停止流水線 175
12.5 擴展流水線到更復雜的系統(tǒng) 175
12.5.1 模式:扇入型流水線 176
12.5.2 實踐:保持較短的流水線 179
12.5.3 實踐:解耦流水線 179
12.5.4 集成模型 180
12.6 處理組件之間依賴的技巧 181
12.6.1 模式:庫依賴 181
12.6.2 模式:自置備的服務(wù)實例 183
12.6.3 提供預發(fā)布的庫構(gòu)建 183
12.6.4 為消費者提供服務(wù)的測試實例 184
12.6.5 將服務(wù)的測試實例用作消費者185
12.7 管理組件間接口的實踐 186
12.7.1 實踐:保證接口的向后兼容性 186
12.7.2 實踐:從發(fā)布解耦部署 186
12.7.3 實踐:使用版本相容 187
12.7.4 實踐:提供測試替身 187
12.7.5 實踐:用契約測試來測試提供者 188
12.7.6 實踐:用參考消費者來測試 188
12.7.7 實踐:提供者接口的冒煙測試 188
12.7.8 實踐:運行消費者驅(qū)動契約測試 188
12.8 結(jié)語 189
第 13章 基礎(chǔ)設(shè)施團隊的工作流 190
13.1 任何可以自動化的都要自動化 190
13.1.1 手動變更 191
13.1.2 臨時的自動化 191
13.1.3 自主的自動化 192
13.1.4 自主的自動化工作流 193
13.2 使用本地沙箱 194
13.2.1 使用本地虛擬化做沙箱 194
13.2.2 具有本地測試的工作流示例 196
13.2.3 使用虛擬化平臺做沙箱 197
13.3 代碼庫組織模式 197
13.3.1 反模式:基于分支的代碼庫 198
13.3.2 模式:每個組件一個主干 199
13.3.3 模式:單一主干 199
13.4 工作流的效率 199
13.4.1 加快變更 199
13.4.2 代碼評審 200
13.4.3 將治理融入工作流 200
13.5 結(jié)語 202
第 14章 動態(tài)基礎(chǔ)設(shè)施的連續(xù)性 203
14.1 服務(wù)連續(xù)性 204
14.1.1 真實可用性 204
14.1.2 用動態(tài)服務(wù)器池做恢復 205
14.1.3 為動態(tài)基礎(chǔ)設(shè)施設(shè)計軟件 206
14.1.4 為連續(xù)性劃分系統(tǒng) 208
14.2 零停機變更 208
14.2.1 模式:藍綠替換 209
14.2.2 模式:鳳凰替換 209
14.2.3 實踐:縮小替換的范圍 210
14.2.4 模式:金絲雀替換 211
14.2.5 為零停機替換路由流量 212
14.2.6 有數(shù)據(jù)的零停機變更 213
14.3 數(shù)據(jù)連續(xù)性 214
14.3.1 冗余地復制數(shù)據(jù) 214
14.3.2 重新生成數(shù)據(jù) 215
14.3.3 委托數(shù)據(jù)持久化 215
14.3.4 備份到持久存儲 215
14.4 災難恢復 216
14.4.1 持續(xù)的災難恢復 217
14.4.2 災備計劃:為災難做計劃 218
14.4.3 實踐:優(yōu)先重建而不是冷備份 218
14.4.4 通過流水線持續(xù)監(jiān)控 219
14.5 安全 220
14.5.1 自動掩蓋危害 220
14.5.2 以可靠的更新作為防護 221
14.5.3 包的來源 221
14.5.4 自動加固 222
14.5.5 流水線中安全驗證的自動化 223
14.5.6 變更流水線的漏洞 223
14.5.7 管理云賬號的安全風險 224
14.6 結(jié)語 225
第 15章 基礎(chǔ)設(shè)施即代碼的組織要求 226
15.1 演進式架構(gòu) 226
15.1.1 在實戰(zhàn)中學習 228
15.1.2 從先驅(qū)者流水線開始 228
15.2 度量有效性 229
15.2.1 首先對期望的結(jié)果達成一致 229
15.2.2 選擇有助于團隊的度量指標 230
15.2.3 跟蹤和改善周期時間 230
15.2.4 使用看板可視化工作 232
15.2.5 回顧會議及事后分析 233
15.3 組織授權(quán)用戶 233
15.3.1 劃分功能模型的陷阱 233
15.3.2 采取自服務(wù)模型 235
15.3.3 承擔全部責任:誰構(gòu)建,誰運行 235
15.3.4 組織跨職能團隊 236
15.4 持續(xù)變更管理的治理 237
15.4.1 提供穩(wěn)固的構(gòu)建單元 237
15.4.2 在流水線中證明運維就緒 238
15.4.3 共享運維質(zhì)量的所有權(quán) 238
15.4.4 審查和審計自動化流程 238
15.4.5 優(yōu)化發(fā)現(xiàn)和修復問題的時間 239
15.5 結(jié)語:永無止境 239
關(guān)于作者 240
關(guān)于封面 240

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.afriseller.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號