持續(xù)交付和持續(xù)部署的區(qū)別
- 持續(xù)交付并不是指軟件每一個改動都要盡快的部署到產(chǎn)品環(huán)境中。它指的是任何的修改都已證明可以在任何時候?qū)嵤┎渴稹?/li>
- — Carl Caum (@ccaum) August 28, 2013
我在上周三寫的這條微博。它在微博上激起了活躍的討論,周四的時候已經(jīng)被轉(zhuǎn)發(fā)了87次,獲得了25個贊。
很顯然,這是個很火的話題,很多人對持續(xù)交付和持續(xù)部署之間的區(qū)別很困惑。有必要用超出微博字數(shù)限制的文字來說說這個概念。
持 續(xù)交付(Continuous Delivery)是一系列的開發(fā)實踐方法,用來確保讓代碼能夠快速、安全的部署到產(chǎn)品環(huán)境中,它通過將每一次改動都提交到一個模擬產(chǎn)品環(huán)境中,使用嚴格 的自動化測試,確保業(yè)務(wù)應(yīng)用和服務(wù)能符合預(yù)期。因為使用完全的自動化過程來把每個變更自動的提交到測試環(huán)境中,所以當業(yè)務(wù)開發(fā)完成時,你有信心只需要按一 次按鈕就能將應(yīng)用安全的部署到產(chǎn)品環(huán)境中。
- @ccaum @steveburnett 我想很多人都混淆了“交付”和“部署”。
- — Magnus Hedemark (@Magnus919) August 29, 2013
持續(xù)部署(Continuous deployment)是持續(xù)交付的更高階段:所有通過了自動化測試的改動都自動的部署到產(chǎn)品環(huán)境里。大多數(shù)的公司如果沒有制度的約束或其它條件的影響,都應(yīng)該以持續(xù)部署為目標。
有很多的業(yè)務(wù)場景里,一種業(yè)務(wù)需要等待另外的功能特征出現(xiàn)才能上線,這使得持續(xù)部署成為不可能。雖然使用功能切換能解決很多這樣的情況,但并不是每次都會這樣。所以,持續(xù)部署是否適合你的公司是基于你們的業(yè)務(wù)需求——而不是技術(shù)限制。
Inspired by Yassal Sundman’s blog post on Crisp’s Blog.
雖然持續(xù)部署并不適合所有公司,但持續(xù)交付絕對應(yīng)該是每個公司需要追求的目標。只有當你能夠持續(xù)交付你的代碼時,你才能有信心通過點擊“go”按鈕,在幾分鐘內(nèi)讓你的修改提交給客戶、服務(wù)于客戶。才有信心在任何時候——一旦業(yè)務(wù)允許——可以立即點這個按鈕。