編輯推薦
- 第21屆Jolt大奬獲奬作品
- Martin Fowler作序推薦
- 軟件開發領域新經典
軟件發布是一個令人頭痛的過程,非常耗時且風險很高。本書獨特而有條理地闡述瞭以快速、高效、可靠的方式嚮用戶交付新功能的原則和技術實踐。通過實現自動化的構建、部署和測試過程,並改進開發人員、測試人員、運維人員之間的協作,交付團隊可以在幾小時(甚至幾分鍾)內發布軟件變更,而這不受項目大小和代碼復雜性的影響。
本書首先給齣瞭實現快速、可靠、低風險交付過程的基礎知識,然後介紹瞭部署流水綫,即從簽入到發布的過程中管理所有變更的一個自動化過程。書中探討瞭支撐持續交付的“交付生態圈”,內容涉及基礎設施、數據和配置的管理,以及組織治理。
作者為我們呈現瞭新的技術,包括自動化的基礎設施管理和數據遷移,以及虛擬化的使用,並分彆探討瞭各種技術中的關鍵問題和實踐,演示瞭降低風險的方法。
無論是開發人員、係統管理人員、測試人員,還是經理人員,本書都能前所未有地加速你將想法變成可發布軟件的步伐,為企業迅速可靠地增添價值。
內容簡介
本書講述如何實現更快、更可靠、低成本的自動化軟件交付,描述瞭如何通過增加反饋,並改進開發人員、測試人員、運維人員和項目經理之間的協作來達到這個目標。本書由三部分組成:部分闡述瞭持續交付背後的一些原則,以及支持這些原則的實踐;二部分是本書的核心,全麵講述瞭部署流水綫;第三部分圍繞部署流水綫的投入産齣討論瞭更多細節,包括增量開發技術、高級版本控製模式,以及基礎設施、環境和數據的管理和組織治理。
本書適閤所有開發人員、測試人員、運維人員和項目經理學習參考。
作者簡介
Jez Humble ThoughtWorks公司首席谘詢顧問,緻力於幫助企業快速、可靠地交付高質量軟件,經常在各種敏捷技術大會上發錶演講,擁有牛津大學物理學學士學位和倫敦大學民族音樂學碩士學位。2000年至今,他曾在各行業和不同技術領域擔任係統管理員、開發人員、培訓人員、谘詢師和經理人員。
David Farley 具有20多年的大型分布式係統開發經驗,是采用敏捷開發技術的先行者,曾作為技術負責人參加瞭ThoughtWorks公司許多極具挑戰性的軟件項目。目前幫助構建倫敦多項金融衍生品交易所(London Multi-Asset Exchange,LMAE)。
內頁插圖
目錄
Part I: Foundations / 基礎篇 1
Chapter 1: The Problem of Delivering Software / 軟件交付的問題 3
Introduction / 引言 3
Some Common Release Antipatterns / 一些常見的發布反模式 4
Antipattern: Deploying Software Manually / 反模式:手工部署軟件 5
Antipattern:Deploying to a Production-like Environment Only after Development Is Complete / 反模式:開發完成之後纔嚮類生産環境部署 7
Antipattern: Manual Configuration Management of Production Environments / 反模式:生産環境的手工配置管理 9
Can We Do Better? / 我們能做得更好嗎 10
How Do We Achieve Our Goal? / 如何實現目標 11
Every Change Should Trigger the Feedback Process / 每次修改都應該觸發反饋流程 13
The Feedback Must Be Received as Soon as Possible / 必須盡快接收反饋/ 14
The Delivery Team Must Receive Feedback and Then Act on It / 交付團隊必須接收反饋並作齣反應 15
Does This Process Scale? / 這個流程可以推廣嗎 16
What Are the Benefits? / 收效 17
Empowering Teams / 授權團隊 17
Reducing Errors / 減少錯誤 18
Lowering Stress / 緩解壓力 20
Deployment Flexibility / 部署的靈活性 21
Practice Makes Perfect / 多加練習,使其完美 22
The Release Candidate / 候選發布版本 22
Every Check-in Leads to a Potential Release 23
Principles of Software Delivery / 軟件交付的原則 24
Create a Repeatable,Reliable Process for Releasing Software / 為軟件的發布創建一個可重復且可靠的過程 24
Automate Almost Everything / 將幾乎所有事情自動化 25
Keep Everything in Version Control / 把所有的東西都納入版本控製 26
If It Hurts, Do It More Frequently, and Bring the Pain Forward / 提前並頻繁地做讓你感到痛苦的事 26
Build Quality In / 內建質量 27
Done Means Released / “DONE”意味著“已發布” 27
Everybody Is Responsible for the Delivery Process / 交付過程是每個成員的責任 28
Continuous Improvement / 持續改進 28
Summary / 小結 29
Chapter 2: Configuration Management / 配置管理 31
Introduction / 引言 31
Using Version Control / 使用版本控製 32
Keep Absolutely Everything in Version Control / 對所有內容進行版本控製 33
Check In Regularly to Trunk / 頻繁提交代碼到主乾 35
Use Meaningful Commit Messages / 使用意義明顯的提交注釋 37
Managing Dependencies / 依賴管理 38
Managing External Libraries / 外部庫文件管理 38
Managing Components / 組件管理 39
Managing Software Configuration / 軟件配置管理 39
Configuration and Flexibility / 配置與靈活性 40
Types of Configuration / 配置的分類 41
Managing Application Configuration / 應用程序的配置管理 43
Managing Configuration across Applications / 跨應用的配置管理 47
Principles of Managing Application Configuration / 管理配置信息的原則 47
Managing Your Environments / 環境管理 49
Tools to Manage Environments / 環境管理的工具 53
Managing the Change Process / 變更過程管理 53
Summary / 小結 54
Chapter 3: Continuous Integration / 持續集成 55
Introduction / 引言 55
Implementing Continuous Integration / 實現持續集成 56
What You Need Before You Start / 準備工作 56
A Basic Continuous Integration System / 一個基本的持續集成係統 57
Prerequisites for Continuous Integration / 持續集成的前提條件 59
Check In Regularly / 頻繁提交 59
Create a Comprehensive Automated Test Suite / 創建全麵的自動化測試套件 60
Keep the Build and Test Process Short / 保持較短的構建和測試過程 60
Managing Your Development Workspace / 管理開發工作區 62
Using Continuous Integration Software / 使用持續集成軟件 63
Basic Operation / 基本操作 63
Bells and Whistles / 鈴聲和口哨 63
Essential Practices / 必不可少的實踐 66
Don’t Check In on a Broken Build / 構建失敗之後不要提交新代碼 66
Always Run All Commit Tests Locally before Committing, or Get Your CI Server to Do It for You / 提交前在本地運行所有的提交測試,或者讓持續集成服務器完成此事 66
Wait for Commit Tests to Pass before Moving On / 等提交測試通過後再繼續工作 67
Never Go Home on a Broken Build / 迴傢之前,構建必須處於成功狀態 68
Always Be Prepared to Revert to the Previous Revision / 時刻準備著迴滾到前一個版本 69
Time-Box Fixing before Reverting / 在迴滾之前要規定一個修復時間 70
Don’t Comment Out Failing Tests / 不要將失敗的測試注釋掉 70
Take Responsibility for All Breakages That Result from Your Changes /為自己導緻的問題負責 70
Test-Driven Development / 測試驅動的開發 71
Suggested Practices / 推薦的實踐 71
Extreme Programming (XP) Development Practices / 極限編程開發實踐 71
Failing a Build for Architectural Breaches / 若違背架構原則,就讓構建失敗 72
Failing the Build for Slow Tests / 若測試運行變慢,就讓構建失敗 73
Failing the Build for Warnings and Code Style Breaches / 若有編譯警告或代碼風格問題,就讓測試失敗 73
Distributed Teams / 分布式團隊 75
The Impact on Process / 對流程的影響 75
Centralized Continuous Integration / 集中式持續集成 76
Technical Issues /技
前言/序言
持續交付 發布可靠軟件的係統方法(英文版) 下載 mobi epub pdf txt 電子書