- 持續(xù)交付:發(fā)布可靠軟件的系統(tǒng)方法
- (英)Jez Humble David Farley
- 10字
- 2019-04-02 18:36:39
第一部分 基礎(chǔ)篇
第1章 軟件交付的問題
1.1 引言
作為軟件從業(yè)人員,我們面臨的最重要問題就是,如果有人想到了一個(gè)好點(diǎn)子,我們?nèi)绾我宰羁斓乃俣葘⑺桓督o用戶?本書將給出這個(gè)問題的答案。
我們將專注于構(gòu)建、部署、測試和發(fā)布過程,因?yàn)橄鄬?duì)于軟件生產(chǎn)全過程的其他環(huán)節(jié)來說,這部分內(nèi)容的論著較為稀少。確切地說,我們并不認(rèn)為軟件開發(fā)方法不重要,如果沒有對(duì)軟件生命周期中其他方面的關(guān)注,只把它們作為全部問題的次要因素草率對(duì)待的話,就不可能實(shí)現(xiàn)可靠、迅速且低風(fēng)險(xiǎn)的軟件發(fā)布,無法以高效的方式將我們的勞動(dòng)成果交到用戶手中。
現(xiàn)在有很多種軟件開發(fā)方法,但它們主要關(guān)注于需求管理及其對(duì)開發(fā)工作的影響。市面上也有很多優(yōu)秀的書,它們?cè)敿?xì)討論了在軟件設(shè)計(jì)、開發(fā)和測試方面各種各樣的方法,但它們都僅僅講述了將軟件交付給作為客戶的人或組織這一完整價(jià)值流的一部分。
一旦完成了需求定義以及方案的設(shè)計(jì)、開發(fā)和測試,我們接下來做什么?我們?nèi)绾螀f(xié)調(diào)這些活動(dòng),盡可能地使交付過程更加可靠有效呢?我們?nèi)绾巫岄_發(fā)人員、測試人員,以及構(gòu)建和運(yùn)維人員在一起高效地工作呢?
本書描述了軟件從開發(fā)到發(fā)布這一過程的有效模式。書中講述了幫助大家實(shí)現(xiàn)這種模式的技術(shù)和最佳實(shí)踐,展示了它與軟件交付中其他活動(dòng)是如何聯(lián)系的。
本書的中心模式是部署流水線。從本質(zhì)上講,部署流水線就是指一個(gè)應(yīng)用程序從構(gòu)建、部署、測試到發(fā)布這整個(gè)過程的自動(dòng)化實(shí)現(xiàn)。部署流水線的實(shí)現(xiàn)對(duì)于每個(gè)組織都將是不同的,這取決于他們對(duì)軟件發(fā)布的價(jià)值流的定義,但其背后的原則是相同的。
部署流水線的示例如圖1-1所示。

圖1-1 一個(gè)簡單的部署流水線
部署流水線大致的工作方式如下。對(duì)于應(yīng)用程序的配置、源代碼、環(huán)境或數(shù)據(jù)的每個(gè)變更都會(huì)觸發(fā)創(chuàng)建一個(gè)新流水線實(shí)例的過程。流水線的首要步驟之一就是創(chuàng)建二進(jìn)制文件和安裝包,而其余部分都是基于第一步的產(chǎn)物所做的一系列測試,用于證明其達(dá)到了發(fā)布質(zhì)量。每通過一步測試,我都會(huì)更加相信這些二進(jìn)制文件、配置信息、環(huán)境和數(shù)據(jù)所構(gòu)成的特殊組合可以正常工作。如果這個(gè)產(chǎn)品通過了所有的測試環(huán)節(jié),那么它就可以發(fā)布了。
部署流水線以持續(xù)集成過程為其理論基石,從本質(zhì)上講,它是采納持續(xù)集成原理后的自然結(jié)果。
部署流水線的目標(biāo)有三個(gè)。首先,它讓軟件構(gòu)建、部署、測試和發(fā)布過程對(duì)所有人可見,促進(jìn)了合作。其次,它改善了反饋,以便在整個(gè)過程中,我們能夠更早地發(fā)現(xiàn)并解決問題。最后,它使團(tuán)隊(duì)能夠通過一個(gè)完全自動(dòng)化的過程在任意環(huán)境上部署和發(fā)布軟件的任意版本。
- Vue.js 3.x+Element Plus前端開發(fā)實(shí)戰(zhàn)
- JavaScript框架設(shè)計(jì)
- 業(yè)務(wù)驅(qū)動(dòng)的推薦系統(tǒng):方法與實(shí)踐
- Android 網(wǎng)絡(luò)開發(fā)與應(yīng)用實(shí)戰(zhàn)詳解
- 程序員的制勝技
- CATIA V5 從入門到精通(第二版)
- 深入淺出數(shù)據(jù)結(jié)構(gòu)與算法(微課視頻版)
- 構(gòu)建跨平臺(tái)APP:jQuery Mobile移動(dòng)應(yīng)用實(shí)戰(zhàn)(第2版) (跨平臺(tái)移動(dòng)開發(fā)叢書)
- 軟件測試項(xiàng)目實(shí)戰(zhàn)
- Kubernetes Operator開發(fā)進(jìn)階
- 劍指大前端全棧工程師(全2冊(cè))
- Unity 3D游戲開發(fā)技術(shù)詳解與典型案例
- 微信公眾平臺(tái)開發(fā)實(shí)例教程
- OpenGL ES 2.0游戲開發(fā)(下卷)
- Unity游戲案例開發(fā)大全