持續交付

透過建置、測試和部署自動化,實現可靠的軟體發布

作者:Jez Humble 和 David Farley

2010

90 年代後期,我拜訪了 Kent Beck,當時他在瑞士為一家保險公司工作。他向我展示了他的專案,而他這個高度紀律團隊的一個有趣面向,就是他們每晚都會將軟體部署到生產環境。這種定期部署為他們帶來了許多優點:編寫的軟體不會在使用前白白等待,他們可以快速回應問題和機會,而快速的週轉也讓他們與業務客戶和最終客戶之間的關係更加緊密。

在過去十年,我在 Thoughtworks 工作,而我們專案的共同主題是縮短構想和可用軟體之間的週期時間。我看到許多專案故事,而它們幾乎都涉及到決心縮短該週期。雖然我們通常不會每天將成果交付到生產環境,但現在常見到團隊進行兩週一次的發布。

Dave 和 Jez 一直參與這項變革,積極參與建立頻繁、可靠交付文化的專案。他們和我們的同事已經讓那些每年掙扎著部署一次軟體的組織,進入持續交付的世界,在這個世界中,發布成為例行公事。

這種方法的基礎,至少對開發團隊來說,是持續整合 (CI)。CI 讓開發團隊彼此同步,消除了因整合問題而產生的延遲。幾年前,Paul Duvall 在這個系列中撰寫了有關 CI 的書籍。但 CI 只是第一步。已成功整合到主線程式碼串流的軟體,仍然不是在生產環境中執行其工作的軟體。Dave 和 Jez 的書從 CI 開始,處理「最後一哩路」,描述如何建置將整合程式碼轉換為生產軟體的部署管線。

這種交付思維在軟體開發中早已被遺忘在角落,掉進開發人員和營運團隊之間的洞裡。因此,本書中的技術建立在讓這些團隊齊聚一堂,這一點也不令人意外,是新興且日益壯大的「DevOps」運動的先驅。這個流程也包含測試人員,因為測試是確保版本無錯誤發布的關鍵元素。貫穿始終的是高度自動化,因此可以快速且無誤地完成工作。

讓這一切運作需要付出努力,但好處深遠。漫長、高強度的版本發布將成為過去。軟體客戶會看到想法快速轉變為他們每天都能使用的運作程式碼。也許最重要的是,我們消除了軟體開發中最大的壓力來源之一。沒有人喜歡在緊張的週末,試圖在星期一開始之前發布系統升級。

對我來說,一本書可以告訴你如何頻繁且無壓力地交付軟體,這是一本非讀不可的書。為了你的團隊,我希望你同意。

延伸閱讀

本書網站

建置管線的免費章節

InformIT 已將本書的第五章提供為免費下載。這提供了部署管線的良好介紹。

軟體交付指南

此網站上擴充持續交付的文章指南