注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件工程及軟件方法學(xué)持續(xù)交付:發(fā)布可靠軟件的系統(tǒng)方法

持續(xù)交付:發(fā)布可靠軟件的系統(tǒng)方法

持續(xù)交付:發(fā)布可靠軟件的系統(tǒng)方法

定 價:¥89.00

作 者: (英) Jez Humble David Farley 著,喬梁 譯
出版社: 人民郵電出版社
叢編項:
標(biāo) 簽: 軟件工程/開發(fā)項目管理

ISBN: 9787115264596 出版時間: 2011-10-01 包裝: 平裝
開本: 16開 頁數(shù): 360 字?jǐn)?shù):  

內(nèi)容簡介

  軟件發(fā)布是一個令人頭痛的過程,非常耗時且風(fēng)險很高。本書獨特而有條理地闡述了以快速、高效、可靠的方式向用戶交付新功能的原則和技術(shù)實踐。通過實現(xiàn)自動化的構(gòu)建、部署和測試過程,并改進開發(fā)人員、測試人員、運維人員之間的協(xié)作,交付團隊可以在幾小時(甚至幾分鐘)內(nèi)發(fā)布軟件變更,而這不受項目大小和代碼復(fù)雜性的影響。本書首先給出了實現(xiàn)快速、可靠、低風(fēng)險交付過程的基礎(chǔ)知識,然后介紹了部署流水線,即從簽入到發(fā)布的過程中管理所有變更的一個自動化過程。最后,書中探討了支撐持續(xù)交付的“交付生態(tài)圈”,內(nèi)容涉及基礎(chǔ)設(shè)施、數(shù)據(jù)和配置的管理,以及組織治理。作者為我們呈現(xiàn)了最新的技術(shù),包括自動化的基礎(chǔ)設(shè)施管理和數(shù)據(jù)遷移,以及虛擬化的使用,并分別探討了各種技術(shù)中的關(guān)鍵問題和最佳實踐,演示了降低風(fēng)險的方法。內(nèi)容涉及:? 將軟件構(gòu)建、集成、測試和部署全面實現(xiàn)自動化?在團隊級別和組織級別實現(xiàn)部署流水線? 改進開發(fā)人員、測試人員和運維人員間的協(xié)作?在大型分布式團隊中增量開發(fā)軟件功能?實施高效的配置管理策略?分析并實現(xiàn)自動化驗收測試?容量測試和其他非功能性需求的測試?實現(xiàn)持續(xù)部署和零停機發(fā)布?管理基礎(chǔ)設(shè)施、數(shù)據(jù)、組件和依賴?風(fēng)險管理、符合度和審計無論是開發(fā)人員、系統(tǒng)管理人員、測試人員,還是經(jīng)理人員,本書都能前所未有地加速你將想法變成可發(fā)布軟件的步伐,為企業(yè)迅速可靠地增添價值。作者介紹:(其中兩個作者,只有其一有照片,所以就只一個作者和一個譯者放照片,另一作者不必放)Jez HumbleToughtWorks公司首席咨詢顧問,致力于幫助企業(yè)快速、可靠地交付高質(zhì)量軟件,經(jīng)常在各種敏捷技術(shù)大會上發(fā)表演講,擁有牛津大學(xué)物理學(xué)學(xué)士學(xué)位和倫敦大學(xué)民族音樂學(xué)的碩士學(xué)位。2000年至今,他曾在各行業(yè)和不同技術(shù)領(lǐng)域擔(dān)任系統(tǒng)管理員、開發(fā)人員、培訓(xùn)人員、咨詢師和經(jīng)理人員。David Farley正在幫助構(gòu)建倫敦多資產(chǎn)交易所(LMAE)。他具有20年的大型分布式系統(tǒng)開發(fā)經(jīng)驗,是采用敏捷開發(fā)技術(shù)的先行者,曾作為技術(shù)負責(zé)人參加了ThoughtWorks公司許多極具挑戰(zhàn)性的軟件項目。譯者介紹:喬 梁 擁有多年軟件開發(fā)及管理經(jīng)驗,對敏捷開發(fā)管理及持續(xù)交付有深入的理解與豐富的實踐經(jīng)驗,專注于提高軟件企業(yè)的高質(zhì)量交付能力,推廣最佳實踐。為多個大型電信企業(yè)、互聯(lián)網(wǎng)企業(yè)提供過專業(yè)的軟件交付咨詢服務(wù)。曾在ThoughtWorks任職多年,現(xiàn)任百度項目管理部高級架構(gòu)師。InfoQ特約編輯,主持“持續(xù)集成”專欄。

作者簡介

  Jez Humble ToughtWorks公司首席咨詢顧問,致力于幫助企業(yè)快速、可靠地交付高質(zhì)量軟件,經(jīng)常在各種敏捷技術(shù)大會上發(fā)表演講,擁有牛津大學(xué)物理學(xué)學(xué)士學(xué)位和 倫敦大學(xué)民族音樂學(xué)的碩士學(xué)位。2000年至今,他曾在各行業(yè)和不同技術(shù)領(lǐng)域擔(dān)任系統(tǒng)管理員、開發(fā)人員、培訓(xùn)人員、咨詢師和經(jīng)理人員。

圖書目錄

第一部分  基礎(chǔ)篇
第1 章  軟件交付的問題   2
1.1  引言  2
1.2  一些常見的發(fā)布反模式   3
1.2.1  反模式:手工部署軟件   4
1.2.2  反模式:開發(fā)完成之后才向類生產(chǎn)環(huán)境部署   5
1.2.3  反模式:生產(chǎn)環(huán)境的手工配置管理  7
1.2.4  我們能做得更好嗎   8
1.3  如何實現(xiàn)目標(biāo)   9
1.3.1  每次修改都應(yīng)該觸發(fā)反饋流程  10
1.3.2  必須盡快接收反饋   11
1.3.3  交付團隊必須接收反饋并作出反應(yīng)   12
1.3.4  這個流程可以推廣嗎  12
1.4  收效  12
1.4.1  授權(quán)團隊  13
1.4.2  減少錯誤  13
1.4.3  緩解壓力  15
1.4.4  部署的靈活性  16
1.4.5  多加練習(xí),使其完美  17
1.5  候選發(fā)布版本  17
1.6  軟件交付的原則  19
1.6.1  為軟件的發(fā)布創(chuàng)建一個可重復(fù)且可靠的過程  19
1.6.2  將幾乎所有事情自動化  19
1.6.3  把所有的東西都納入版本控制  20
1.6.4  提前并頻繁地做讓你感到痛苦的事  20
1.6.5  內(nèi)建質(zhì)量  21
1.6.6  “DONE”意味著“已發(fā)布”    21
1.6.7  交付過程是每個成員的責(zé)任   22
1.6.8  持續(xù)改進  22
1.7  小結(jié)   23
第2 章  配置管理  24
2.1  引言  24
2.2  使用版本控制  25
2.2.1  對所有內(nèi)容進行版本控制  26
2.2.2  頻繁提交代碼到主干  28
2.2.3  使用意義明顯的提交注釋  29
2.3  依賴管理  30
2.3.1  外部庫文件管理  30
2.3.2  組件管理  30
2.4  軟件配置管理  31
2.4.1  配置與靈活性  31
2.4.2  配置的分類   33
2.4.3  應(yīng)用程序的配置管理  33
2.4.4  跨應(yīng)用的配置管理  36
2.4.5  管理配置信息的原則   37
2.5  環(huán)境管理   38
2.5.1  環(huán)境管理的工具  41
2.5.2  變更過程管理  41
2.6  小結(jié)   42
第3 章  持續(xù)集成  43
3.1  引言  43
3.2  實現(xiàn)持續(xù)集成  44
3.2.1  準(zhǔn)備工作  44
3.2.2  一個基本的持續(xù)集成系統(tǒng)  45
3.3  持續(xù)集成的前提條件  46
3.3.1  頻繁提交  46
3.3.2  創(chuàng)建全面的自動化測試套件  47
3.3.3  保持較短的構(gòu)建和測試過程  47
3.3.4  管理開發(fā)工作區(qū)   49
3.4  使用持續(xù)集成軟件  49
3.4.1  基本操作   49
3.4.2  鈴聲和口哨   50
3.5  必不可少的實踐   52
3.5.1  構(gòu)建失敗之后不要提交新代碼  52
3.5.2  提交前在本地運行所有的提交測試,或者讓持續(xù)集成服務(wù)器完成此事  53
3.5.3  等提交測試通過后再繼續(xù)工作  54
3.5.4  回家之前,構(gòu)建必須處于成功狀態(tài)   54
3.5.5  時刻準(zhǔn)備著回滾到前一個版本  55
3.5.6  在回滾之前要規(guī)定一個修復(fù)時間  56
3.5.7  不要將失敗的測試注釋掉   56
3.5.8  為自己導(dǎo)致的問題負責(zé)  56
3.5.9  測試驅(qū)動的開發(fā)  57
3.6  推薦的實踐   57
3.6.1  極限編程開發(fā)實踐  57
3.6.2  若違背架構(gòu)原則,就讓構(gòu)建失敗   58
3.6.3  若測試運行變慢,就讓構(gòu)建失敗   58
3.6.4  若有編譯警告或代碼風(fēng)格問題,就讓測試失敗  59
3.7  分布式團隊  60
3.7.1  對流程的影響  60
3.7.2  集中式持續(xù)集成   61
3.7.3  技術(shù)問題  61
3.7.4  替代方法   62
3.8  分布式版本控制系統(tǒng)  63
3.9  小結(jié)  66
第4 章  測試策略的實現(xiàn)   67
4.1  引言   67
4.2  測試的分類   68
4.2.1  業(yè)務(wù)導(dǎo)向且支持開發(fā)過程的測試  69
4.2.2  技術(shù)導(dǎo)向且支持開發(fā)過程的測試  72
4.2.3  業(yè)務(wù)導(dǎo)向且評價項目的測試  72
4.2.4  技術(shù)導(dǎo)向且評價項目的測試  73
4.2.5  測試替身  74
4.3  現(xiàn)實中的情況與應(yīng)對策略  75
4.3.1  新項目  75
4.3.2  項目進行中   76
4.3.3  遺留系統(tǒng)   77
4.3.4  集成測試  78
4.4  流程  80
4.5  小結(jié)  82
第二部分  部署流水線
第5 章  部署流水線解析  84
5.1  引言   84
5.2  什么是部署流水線  85
5.3  部署流水線的相關(guān)實踐  91
5.3.1  只生成一次二進制包   91
5.3.2  對不同環(huán)境采用同一部署方式  93
5.3.3  對部署進行冒煙測試   94
5.3.4  向生產(chǎn)環(huán)境的副本中部署  94
5.3.5  每次變更都要立即在流水線中傳遞   95
5.3.6  只要有環(huán)節(jié)失敗,就停止整個流水線  96
5.4  提交階段  96
5.5  自動化驗收測試之門  99
5.6  后續(xù)的測試階段  102
5.6.1  手工測試   103
5.6.2  非功能測試  103
5.7  發(fā)布準(zhǔn)備  104
5.7.1  自動部署與發(fā)布   104
5.7.2  變更的撤銷  106
5.7.3  在成功的基礎(chǔ)上構(gòu)建   107
5.8  實現(xiàn)一個部署流水線   107
5.8.1  對價值流進行建模并創(chuàng)建簡單的可工作框架   107
5.8.2  構(gòu)建和部署過程的自動化  108
5.8.3  自動化單元測試和代碼分析  109
5.8.4  自動化驗收測試   109
5.8.5  部署流水線的演進   110
5.9  度量  111
5.10  小結(jié)  113
第6 章  構(gòu)建與部署的腳本化   115
6.1  引言  115
6.2  構(gòu)建工具概覽  116
6.2.1  Make  118
6.2.2  Ant  118
6.2.3  NAnt 與 MSBuild  119
6.2.4  Maven  120
6.2.5  Rake   121
6.2.6  Buildr   121
6.2.7  Psake   121
6.3  構(gòu)建部署腳本化的原則與實踐   122
6.3.1  為部署流水線的每個階段創(chuàng)建腳本  122
6.3.2  使用恰當(dāng)?shù)募夹g(shù)部署應(yīng)用程序   122
6.3.3  使用同樣的腳本向所有環(huán)境部署  123
6.3.4  使用操作系統(tǒng)自帶的包管理工具  124
6.3.5  確保部署流程是冪等的(Idempotent)  125
6.3.6  部署系統(tǒng)的增量式演進  126
6.4  面向JVM 的應(yīng)用程序的項目結(jié)構(gòu)  126
6.5  部署腳本化  129
6.5.1  多層的部署和測試  130
6.5.2  測試環(huán)境配置  131
6.6  小貼士  132
6.6.1  總是使用相對路徑  132
6.6.2  消除手工步驟  132
6.6.3  從二進制包到版本控制庫的內(nèi)建可追溯性  133
6.6.4  不要把二進制包作為構(gòu)建的一部分放到版本控制庫中  133
6.6.5  “test”不應(yīng)該讓構(gòu)建失敗  134
6.6.6  用集成冒煙測試來限制應(yīng)用程序  134
6.6.7  .NET 小貼士  135
6.7  小結(jié)  135
第7 章  提交階段  137
7.1  引言  137
7.2  提交階段的原則和實踐  138
7.2.1  提供快速有用的反饋  138
7.2.2  何時令提交階段失敗  139
7.2.3  精心對待提交階段  140
7.2.4  讓開發(fā)人員也擁有所有權(quán)  140
7.2.5  在超大項目團隊中指定一個構(gòu)建負責(zé)人  141
7.3  提交階段的結(jié)果  141
7.4  提交測試套件的原則與實踐  144
7.4.1  避免用戶界面  145
7.4.2  使用依賴注入  145
7.4.3  避免使用數(shù)據(jù)庫  145
7.4.4  在單元測試中避免異步  146
7.4.5  使用測試替身   146
7.4.6  最少化測試中的狀態(tài)   149
7.4.7  時間的偽裝  150
7.4.8  蠻力  150
7.5  小結(jié)   151
第8 章  自動化驗收測試  152
8.1  引言   152
8.2  為什么驗收測試是至關(guān)重要的   153
8.2.1  如何創(chuàng)建可維護的驗收測試套件  155
8.2.2  GUI 上的測試   156
8.3  創(chuàng)建驗收測試  157
8.3.1  分析人員和測試人員的角色  157
8.3.2  迭代開發(fā)項目中的分析工作  157
8.3.3  將驗收條件變成可執(zhí)行的規(guī)格說明書   158
8.4  應(yīng)用程序驅(qū)動層  161
8.4.1  如何表述驗收條件   163
8.4.2  窗口驅(qū)動器模式:讓測試與GUI 解耦  164
8.5  實現(xiàn)驗收測試  166
8.5.1  驗收測試中的狀態(tài)   166
8.5.2  過程邊界、封裝和測試   168
8.5.3  管理異步與超時問題   169
8.5.4  使用測試替身對象   171
8.6  驗收測試階段  174
8.6.1  確保驗收測試一直處于通過狀態(tài)  175
8.6.2  部署測試  177
8.7  驗收測試的性能  178
8.7.1  重構(gòu)通用任務(wù)   178
8.7.2  共享昂貴資源   179
8.7.3  并行測試  180
8.7.4  使用計算網(wǎng)格   180
8.8  小結(jié)  181
第9 章  非功能需求的測試  183
9.1  引言  183
9.2  非功能需求的管理  184
9.3  如何為容量編程  186
9.4  容量度量  188
9.5  容量測試環(huán)境  191
9.6  自動化容量測試  194
9.6.1  通過UI 的容量測試  195
9.6.2  基于服務(wù)或公共API 來錄制交互操作  196
9.6.3  使用錄制的交互模板   197
9.6.4  使用容量測試樁開發(fā)測試  198
9.7  將容量測試加入到部署流水線中  199
9.8  容量測試系統(tǒng)的附加價值   201
9.9  小結(jié)   202
第10 章  應(yīng)用程序的部署與發(fā)布   203
10.1  引言  203
10.2  創(chuàng)建發(fā)布策略   204
10.2.1  發(fā)布計劃  205
10.2.2  發(fā)布產(chǎn)品  205
10.3  應(yīng)用程序的部署和晉級   206
10.3.1  首次部署  206
10.3.2  對發(fā)布過程進行建模并讓構(gòu)建晉級   207
10.3.3  配置的晉級  209
10.3.4  聯(lián)合環(huán)境  209
10.3.5  部署到試運行環(huán)境   210
10.4  部署回滾和零停機發(fā)布  211
10.4.1  通過重新部署原有的正常版本來進行回滾  211
10.4.2  零停機發(fā)布  212
10.4.3  藍綠部署   212
10.4.4  金絲雀發(fā)布  213
10.5  緊急修復(fù)  216
10.6  持續(xù)部署  216
10.7  小貼士和竅門   219
10.7.1  真正執(zhí)行部署操作的人應(yīng)該參與部署過程的創(chuàng)建  219
10.7.2  記錄部署活動   220
10.7.3  不要刪除舊文件,而是移動到別的位置   220
10.7.4  部署是整個團隊的責(zé)任   220
10.7.5  服務(wù)器應(yīng)用程序不應(yīng)該有GUI   220
10.7.6  為新部署留預(yù)熱期   221
10.7.7  快速失敗   221
10.7.8  不要直接對生產(chǎn)環(huán)境進行修改  222
10.8  小結(jié)  222
第三部分  交付生態(tài)圈
第11 章  基礎(chǔ)設(shè)施和環(huán)境管理   224
11.1  引言   224
11.2  理解運維團隊的需要   225
11.2.1  文檔與審計   226
11.2.2  異常事件的告警   227
11.2.3  保障IT 服務(wù)持續(xù)性的計劃  227
11.2.4  使用運維團隊熟悉的技術(shù)   228
11.3  基礎(chǔ)設(shè)施的建模和管理  229
11.3.1  基礎(chǔ)設(shè)施的訪問控制   230
11.3.2  對基礎(chǔ)設(shè)施進行修改   231
11.4  服務(wù)器的準(zhǔn)備及其配置的管理   232
11.4.1  服務(wù)器的準(zhǔn)備   233
11.4.2  服務(wù)器的持續(xù)管理   234
11.5  中間件的配置管理  239
11.5.1  管理配置項   239
11.5.2  產(chǎn)品研究   241
11.5.3  考查中間件是如何處理狀態(tài)的   242
11.5.4  查找用于配置的API    242
11.5.5  使用更好的技術(shù)   243
11.6  基礎(chǔ)設(shè)施服務(wù)的管理  243
11.7  虛擬化  245
11.7.1  虛擬環(huán)境的管理   247
11.7.2  虛擬環(huán)境和部署流水線  249
11.7.3  用虛擬環(huán)境做高度的并行測試  251
11.8  云計算  252
11.8.1  云中基礎(chǔ)設(shè)施  253
11.8.2  云中平臺  254
11.8.3  沒有普適存在  255
11.8.4  對云計算的批評  256
11.9  基礎(chǔ)設(shè)施和應(yīng)用程序的監(jiān)控  256
11.9.1  收集數(shù)據(jù)  257
11.9.2  記錄日志  259
11.9.3  建立信息展示板  259
11.9.4  行為驅(qū)動的監(jiān)控  261
11.10  小結(jié)  261
第12 章  數(shù)據(jù)管理  263
12.1  引言  263
12.2  數(shù)據(jù)庫腳本化  264
12.3  增量式修改  265
12.3.1  對數(shù)據(jù)庫進行版本控制  265
12.3.2  聯(lián)合環(huán)境中的變更管理  267
12.4  數(shù)據(jù)庫回滾和無停機發(fā)布  268
12.4.1  保留數(shù)據(jù)的回滾  268
12.4.2  將應(yīng)用程序部署與數(shù)據(jù)庫遷移解耦  269
12.5  測試數(shù)據(jù)的管理  270
12.5.1  為單元測試進行數(shù)據(jù)庫模擬  271
12.5.2  管理測試與數(shù)據(jù)之間的耦合  272
12.5.3  測試獨立性  272
12.5.4  建立和銷毀  273
12.5.5  連貫的測試場景  273
12.6  數(shù)據(jù)管理和部署流水線  274
12.6.1  提交階段的測試數(shù)據(jù)  274
12.6.2  驗收測試中的數(shù)據(jù)  275
12.6.3  容量測試的數(shù)據(jù)  276
12.6.4  其他測試階段的數(shù)據(jù)  277
12.7  小結(jié)  278
第13 章  組件和依賴管理  280
13.1  引言  280
13.2  保持應(yīng)用程序可發(fā)布  281
13.2.1  將新功能隱蔽起來,直到它完成為止  282
13.2.2  所有修改都是增量式的   283
13.2.3  通過抽象來模擬分支   284
13.3  依賴  285
13.3.1  依賴地獄   286
13.3.2  庫管理   287
13.4  組件  289
13.4.1  如何將代碼庫分成多個組件  289
13.4.2  將組件流水線化   292
13.4.3  集成流水線   293
13.5  管理依賴關(guān)系圖  295
13.5.1  構(gòu)建依賴圖   295
13.5.2  為依賴圖建立流水線   297
13.5.3  什么時候要觸發(fā)構(gòu)建   299
13.5.4  謹(jǐn)慎樂觀主義   300
13.5.5  循環(huán)依賴  302
13.6  管理二進制包  303
13.6.1  制品庫是如何運作的   303
13.6.2  部署流水線如何與制品庫相結(jié)合   304
13.7  用Maven 管理依賴  304
13.8  小結(jié)   308
第14 章  版本控制進階   309
14.1  引言  309
14.2  版本控制的歷史  310
14.2.1  CVS   310
14.2.2  SVN   311
14.2.3  商業(yè)版本控制系統(tǒng)   312
14.2.4  放棄悲觀鎖   313
14.3  分支與合并   314
14.3.1  合并   316
14.3.2  分支、流和持續(xù)集成   317
14.4  DVCS   319
14.4.1  什么是DVCS    319
14.4.2  DVCS 簡史   321
14.4.3  企業(yè)環(huán)境中的DVCS   321
14.4.4  使用DVCS   322
14.5  基于流的版本控制系統(tǒng)   324
14.5.1  什么是基于流的版本控制系統(tǒng)  324
14.5.2  使用流的開發(fā)模型   326
14.5.3  靜態(tài)視圖和動態(tài)視圖   327
14.5.4  使用基于流的版本控制系統(tǒng)做持續(xù)集成   328
14.6  主干開發(fā)  329
14.7  按發(fā)布創(chuàng)建分支  332
14.8  按功能特性分支  333
14.9  按團隊分支  335
14.10  小結(jié)  338
第15 章  持續(xù)交付管理  340
15.1  引言   340
15.2  配置與發(fā)布管理成熟度模型  341
15.3  項目生命周期   343
15.3.1  識別階段  344
15.3.2  啟動階段  345
15.3.3  初始階段  346
15.3.4  開發(fā)與發(fā)布  347
15.3.5  運營階段   349
15.4  風(fēng)險管理流程   350
15.4.1  風(fēng)險管理基礎(chǔ)篇   350
15.4.2  風(fēng)險管理時間軸   351
15.4.3  如何做風(fēng)險管理的練習(xí)  352
15.5  常見的交付問題、癥狀和原因  353
15.5.1  不頻繁的或充滿缺陷的部署  353
15.5.2  較差的應(yīng)用程序質(zhì)量   354
15.5.3  缺乏管理的持續(xù)集成工作流程  355
15.5.4  較差的配置管理   355
15.6  符合度與審計  356
15.6.1  文檔自動化  356
15.6.2  加強可跟蹤性   357
15.6.3  在筒倉中工作   358
15.6.4  變更管理  358
15.7  小結(jié)  360
參考書目  361

本目錄推薦

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