- 持續交付:發布可靠軟件的系統方法
- (英)Jez Humble David Farley
- 993字
- 2019-04-02 18:36:40
第一部分 基礎篇
第1章 軟件交付的問題
1.1 引言
作為軟件從業人員,我們面臨的最重要問題就是,如果有人想到了一個好點子,我們如何以最快的速度將它交付給用戶?本書將給出這個問題的答案。
我們將專注于構建、部署、測試和發布過程,因為相對于軟件生產全過程的其他環節來說,這部分內容的論著較為稀少。確切地說,我們并不認為軟件開發方法不重要,如果沒有對軟件生命周期中其他方面的關注,只把它們作為全部問題的次要因素草率對待的話,就不可能實現可靠、迅速且低風險的軟件發布,無法以高效的方式將我們的勞動成果交到用戶手中。
現在有很多種軟件開發方法,但它們主要關注于需求管理及其對開發工作的影響。市面上也有很多優秀的書,它們詳細討論了在軟件設計、開發和測試方面各種各樣的方法,但它們都僅僅講述了將軟件交付給作為客戶的人或組織這一完整價值流的一部分。
一旦完成了需求定義以及方案的設計、開發和測試,我們接下來做什么?我們如何協調這些活動,盡可能地使交付過程更加可靠有效呢?我們如何讓開發人員、測試人員,以及構建和運維人員在一起高效地工作呢?
本書描述了軟件從開發到發布這一過程的有效模式。書中講述了幫助大家實現這種模式的技術和最佳實踐,展示了它與軟件交付中其他活動是如何聯系的。
本書的中心模式是部署流水線。從本質上講,部署流水線就是指一個應用程序從構建、部署、測試到發布這整個過程的自動化實現。部署流水線的實現對于每個組織都將是不同的,這取決于他們對軟件發布的價值流的定義,但其背后的原則是相同的。
部署流水線的示例如圖1-1所示。

圖1-1 一個簡單的部署流水線
部署流水線大致的工作方式如下。對于應用程序的配置、源代碼、環境或數據的每個變更都會觸發創建一個新流水線實例的過程。流水線的首要步驟之一就是創建二進制文件和安裝包,而其余部分都是基于第一步的產物所做的一系列測試,用于證明其達到了發布質量。每通過一步測試,我都會更加相信這些二進制文件、配置信息、環境和數據所構成的特殊組合可以正常工作。如果這個產品通過了所有的測試環節,那么它就可以發布了。
部署流水線以持續集成過程為其理論基石,從本質上講,它是采納持續集成原理后的自然結果。
部署流水線的目標有三個。首先,它讓軟件構建、部署、測試和發布過程對所有人可見,促進了合作。其次,它改善了反饋,以便在整個過程中,我們能夠更早地發現并解決問題。最后,它使團隊能夠通過一個完全自動化的過程在任意環境上部署和發布軟件的任意版本。