持續交付實戰 A Practical Guide to Continuous Delivery

[德]埃伯哈德·沃爾夫(Eberhard Wolff) 夏雪

  • 持續交付實戰-preview-1
  • 持續交付實戰-preview-2
持續交付實戰-preview-1

買這商品的人也買了...

商品描述

本書是持續交付實戰指南,具體內容包括:持續交付能夠解決的問題以及它具體如何解決問題,
PaaS雲解決方案,用Gradle、Maven和Jenkins實現自動化構建和持續集成,
用SonarQube執行靜態代碼,如何通過容量測試確保性能,探索式測試的新特性和問題,
在生產環境中發布版本和運行應用程序,等等。  

作者簡介

Eberhard Wolff

德國技術諮詢公司innoQ的研究員,一位立足於業務和技術交匯點、擁有超過15年經驗的架構師和諮詢師。
他曾多次在國際會議上做過報告,擔任若干會議的委員會成員,並撰寫了100多篇文章,出版了多本圖書。
他的技術關注點是現代架構,主要涉及雲計算、持續交付、DevOps、微服務和NoSQL。
其著作《微服務:靈活的軟件架構》中文版已經由人民郵電出版社出版。

 

【譯者介紹】

夏雪

曾擔任功能測試經理、敏捷教練,具有豐富的測試及測試管理經驗,在代碼靜態分析領域獲得過國家發明專利。
現主要負責質量及過程改進管理,從事CI/CD、DevOps

的推進工作,並於2019年通過了EXIN DevOps Master認證。
他非常樂於將國外的技術新聞和文章分享到國內,除本書外,另譯有《深入敏捷測試》。

目錄大綱

目錄:  
第一部分基礎  
第1章持續交付:是什麼和怎麼做2  
1.1什麼是持續交付2  
1.2為什麼軟件發佈如此復雜2  
1.2.1持續集成帶來希望2  
1.2.2過程緩慢且有風險3  
1.2. 3變快是有可能的3  
1.3持續交付的價值3  
1.3.1規律性3  
1.3.2可追溯性4  
1.3.3退化4  
1.4持續交付的優勢4  
1.4.1持續交付可加快上市速度5  
1.4. 2示例5  
1.4.3實現特性並將其發佈到生產環境5  
1.4.4下一個特性5  
1.4.5持續交付能帶來競爭優勢5  
1.4.6如果沒有持續交付6  
1.4.7持續交付和精益創業6  
1.4.8對開發過程的影響6  
1.4.9 *小化風險7  
1.4.10更快的反饋和精益9  
1.5持續交付流水線的生成及其結構10  
1.6小結12  

第2章提供基礎設施13  
2.1概述13  
2.2安裝腳本14  
2.3 Chef 16  
2.3.1對比Chef與Puppet 17  
2.3.2其他備選方案18  
2.3.3技術基礎18  
2.3.4 Chef Solo 23  
2.3.5 Chef Solo總結24  
2.3.6 Knife和Chef Server 24  
2.3.7 Chef Server總結27  
2.4 Vagrant 28  
2.4.1 Chef和Vagrant實例29  
2.4.2 Vagrant總結30  
2.5 Docker 30  
2.5.1 Docker解決方案31  
2.5.2創建Docker容器32  
2.5.3使用Docker運行示例應用程序35  
2.5.4 Docker和Vagrant 36  
2.5.5 Docker Machine 38  
2.5.6 Docker的複雜配置39  
2.5.7 Docker Compose 41  
2.6不可變的服務器43  
2.6.1冪等性的缺點43  
2.6.2不可變服務器和Docker 43  
2.7基礎設施即代碼44  
2.8平台即服務45  
2.9數據和數據庫的處理47  
2.9.1模式的處理47  
2.9.2測試和主數據48  
2.10小結49  

*二部分持續交付流水線  
第3章構建自動化和持續集成52  
3.1概述52  
3.2構建自動化和構建工具52  
3.2.1 Java世界中的構建工具53  
3.2.2 Ant 54  
3.2.3 Maven 54  
3.2.4 Gradle 58  
3.2.5其他構建工具60  
3.2.6選擇合適的工具60  
3.3單元測試61  
3.3.1編寫好的單元測試62  
3.3.2測試驅動開發64  
3.3.3整潔的代碼和軟件工藝65  
3.4持續集成65  
3.4.1 Jenkins 66  
3.4.2持續集成基礎設施70  
3.4.3結論71  
3.5度量代碼質量73  
3.6工件管理76  
3.6.1集成到構建中78  
3.6.2倉庫的*級特性79  
3.7小結80  

第4章驗收測試81  
4.1概述81  
4.2測試金字塔82  
4.3什麼是驗收測試84  
4.3.1自動化驗收測試84  
4.3.2不僅僅是提升效率84  
4.3.3手動測試85  
4.3.4客戶85  
4.3.5對比驗收測試與單元測試86  
4.3.6測試環境86  
4.4基於圖形用戶界面的驗收測試87  
4.4.1圖形用戶界面測試的問題87  
4.4.2針對脆弱的圖形用戶界面測試的抽象87  
4.4.3使用Selenium實現自動化88  
4.4.4 WebDriver API 88  
4.4 .5無須Web瀏覽器的測試:HtmlUnit 88  
4.4.6 Selenium WebDriver API 88  
4.4.7 Selenium IDE 88  
4.4.8自動化圖形用戶界面測試的問題90  
4.4.9執行圖形用戶界面測試90  
4.4.10將測試導出為代碼90  
4.4.11手動修改測試用例90  
4.4.12測試數據91  
4.4.13 Page對象91  
4.5圖形用戶界面測試的替代工具91  
4.5.1 PhantomJS 92  
4.5.2 Windmill 92  
4.6文本化驗收測試93  
4.6.1行為驅動開發93  
4.6.2不同的適配器95  
4.7其他可選框架96  
4.8驗收測試策略97  
4.8.1合適的工具97  
4.8.2快速反饋97  
4.8 .3測試覆蓋率98  
4.9小結98  

第5章容量測試99  
5.1概述99  
5.2如何進行容量測試99  
5.2.1容量測試的目標100  
5.2.2數據量與環境100  
5.2.3只在實現結束時才進行性能測試嗎100  
5.2.4容量測試=風險管理100  
5.2.5用戶模擬101  
5.2.6記錄性能需求101  
5.2.7用於容量測試的硬件101  
5.2.8雲和虛擬化102  
5.2.9通過持續測試使風險*小化102  
5.2.10容量測試是否明智102  
5.3實現容量測試103  
5.4使用Gatling實現容量測試104  
5.5 Gatling的替代工具108  
5.5.1 Grinder 108  
5.5.2 Apache JMeter 108  
5.5.3 Tsung 109  
5.5.4商業解決方案109  
5.6小結109  

第6章探索式測試110  
6.1概述110  
6.2為什麼要進行探索式測試110  
6.2.1有時手動測試會更好110  
6.2.2由客戶測試111  
6.2.3非功能性需求的手動測試111  
6.3該怎麼做111  
6.3.1測試任務指南112  
6.3.2自動化的環境112  
6.3.3以展示為依據112  
6.3 .4示例:電子商務應用程序112  
6.3.5 Beta測試112  
6.3.6基於會話的測試113  
6.4小結114  

第7章部署:在生產環境中發布版本115  
7.1概述115  
7.2發布和回滾115  
7.2.1優點116  
7.2.2缺點116  
7.3前滾116  
7.3.1優點117  
7.3.2缺點117  
7.4藍/綠部署117  
7.4.1優點118  
7.4.2缺點118  
7.5金絲雀發布118  
7.5.1優點119  
7.5.2缺點119  
7.6持續部署120  
7.6.1優點120  
7.6.2缺點121  
7.7虛擬化121  
7.8 Web應用程序之外122  
7.9小結123  

第8章運維124  
8.1概述124  
8.2運維中的挑戰124  
8.3日誌文件125  
8.3.1應該記錄什麼126  
8.3.2處理日誌文件的工具127  
8.3.3示例應用程序中的日誌記錄128  
8.4示例應用程序的日誌分析129  
8.4.1用Kibana做分析131  
8.4.2 ELK——可擴展性132  
8.5用於日誌的其他技術134  
8.6 *級日誌技術135  
8.6.1匿名化135  
8.6.2性能136  
8.6.3時間136  
8.6.4運維數據庫136  
8.7監控136  
8.8 Graphite指標137  
8.9示例應用程序中的指標138  
8.10其他監控解決方案140  
8.11運維應用程序時的額外挑戰141  
8.11.1腳本141  
8.11.2客戶數據中心內的應用程序141  
8.12小結142  

第三部分持續交付的管理、組織和架構  
第9章引入持續交付144  
9.1概述144  
9.2從一開始就引入持續交付144  
9.3價值流映射145  
9.3.1描述事件序列的價值流映射145  
9.3.2優化145  
9.4其他優化措施146  
9.4.1質量投資146  
9.4.2成本147  
9.4.3收益147  
9.4.4不要在“紅色構建”上檢入147  
9.4.5立即停止148  
9.4.6 “五個為什麼” 148  
9.4.7 DevOps 149  
9.5小結149  

第10章持續交付和DevOps 150  
10.1概述150  
10.2什麼是DevOps 150  
10.2.1問題150  
10.2.2客戶視角151  
10.2.3先鋒:亞馬遜151  
10.2.4 DevOps 151  
10.3持續交付和DevOps 152  
10.3.1 DevOps:不只是持續交付153  
10.3.2個體責任和自組織153  
10.3. 3技術決策154  
10.3.4減少集中控制154  
10.3.5技術多元化154  
10.3.6團隊間的交流154  
10.3.7架構155  
10.4沒有DevOps的持續交付156  
10.5小結157  

第11章持續交付、DevOps和軟件架構158  
11.1概述158  
11.2軟件架構158  
11.3針對持續交付優化架構160  
11.4接口161  
11.4.1伯斯塔爾法則162  
11.4.2容錯設計162  
11.4.3狀態163  
11.5數據庫163  
11.5.1保持數據庫穩定163  
11.5 .2數據庫=組件164  
11.5.3視圖和存儲過程164  
11.5.4每個組件一個數據庫165  
11.5.5 NoSQL數據庫165  
11.6微服務165  
11.6.1微服務與持續交付165  
11.6.2借助微服務引入持續交付166  
11.6.3微服務需要持續交付166  
11.6.4組織166  
11.7新特性的處理167  
11.7.1特性分支167  
11.7.2特性開關167  
11.7.3優點167  
11.7.4特性開關的用例168  
11.7.5缺點168  
11.8小結169 
 
第12章總結:收益是什麼170