持續集成與持續交付之間的聯繫和區別

作者 | Rebecca Pruess

編譯 | 毛智偉

隨着DevOps理念的普及與擴散,大家經常會看到持續集成(Continuous Integration)與持續交付(Continuous Delivery)這樣的字眼,而怎樣使用與選擇這些方法成了大多數IT團隊必須面對的問題。在討論更加深入地討論問題之前,首先需要清楚這兩者之間的主要區別是什麼,以及用什麼方法可以更好改善工作流程,從而在更短的時間內爲目標用戶提供更高質量的軟件。

devops

持續集成(CI)和持續交付(CD)都體現瞭如今快節奏市場中的文化和發展原則,旨在縮短開發週期、提高軟件交付效率以及實現全流程的自動化。同時,兩者都有着共同的目標:讓軟件開發更少地依賴於手動執行的任務,在此基礎上使得軟件的發佈更加頻繁、更加安全可靠。由於有着相同的目標,因此持續集成和持續交付並非相互排斥的。只是它們的應用範圍有所不同。

那下面就來看下CI與CD之間的聯繫與區別。

什麼是持續集成

如上所述,CI和CD是相互關聯的。持續集成是指軟件個人研發的部分向軟件整體部分交付,頻繁進行集成以便更快地發現其中的錯誤。由此可見,CI專注於定期地讓開發人員構建小批量的代碼。而對於更新或新增的代碼,它們會被上傳至統一的代碼庫,執行自動構建與自動化測試的步驟。 頻繁地向主幹提交代碼,意味着可以針對整個軟件執行所有的自動化測試,並且在應用或接口的某個部分出現問題時,及時收到告警信息。

由於合併問題能被及時發現,因此也能被及時解決。此外,由於測試過程採用的是自動化測試,因此最終的主幹分支一直處於可發佈的狀態。而這對傳統的瀑布式的開發流程來說就很棘手。遵循CI中定義的原則,有助於進一步提高代碼的可測試性和可部署性。通過將代碼保持在可部署狀態,就能避免在項目後期才進行單獨的測試和Bug的修復,由此使得開發人員避開了“集成地獄”。而這也是Choerodon豬齒魚開發流水線模塊的主要目的。

CI

什麼是持續交付

持續集成包含了構建與自動化測試的階段,而持續交付在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境的“類生產環境”之中。持續交付優先於整個產品生命週期的軟件部署,建立在高水平自動化持續集成之上。此外,持續交付同樣遵循一個小型的構建週期,可以將一小批代碼推送到多個環境:開發,測試或生產。

在此過程中,它結合了持續集成和持續部署的實踐(即:讓主幹始終處於可部署狀態)。而在Choerodon豬齒魚平臺中,當提交的代碼完成以上步驟後,可以在“部署流水線-流水線管理”中創建對應的CD流水線將持續集成後產生的應用版本自動部署到對應的環境中去。此外,對於部署到正式環境的代碼,可以在流水線中間添加一個人工卡點任務,只有通過人工審覈後,才能執行後續的自動部署任務。

CD

理論上來說,CD使得IT團隊可以每天發佈與更新應用程序,但大多數IT團隊選擇每月或每兩個月發佈更完整的更新。

持續集成與持續交付的區別

CI和CD之間的區別在於使用的範圍和主要的受益者。

(1)持續集成

持續集成對於加快編碼和構建階段的軟件交付過程至關重要。因此,它的目標對象主要是開發人員,特別是那些處在複雜組織架構中的開發人員。通過自動構建和測試的流程,將對軟件做的所有更改都集成到統一的代碼庫中,而無需進行手動任務。此外,由於CI是一個持續的過程,因此開發人員可以即時得到問題的反饋。他們可以實時獲取到相關錯誤的信息,以便快速地定位與解決問題。顯然這個過程可以大大地提高開發人員以及整個IT團隊的工作效率。

(2)持續交付

持續交付涵蓋了軟件交付生命週期的絕大部分,能爲目標用戶和客戶帶來重大利益。CD中包含了自動構建,打包,部署與測試的流程,以此來減少手動任務並加快軟件交付速度。小批量的代碼成功完成整個流程的每個階段後,目標用戶或客戶便能在類生產環境中進行驗收。因此目標用戶可以在幾天或幾周內就收到修復後的功能與新增的功能,而無需等待數月後才更新。

CD的部署頻率也加快了整個流程中的反饋循環。最新版本真的解決了預期的問題嗎?是否滿足了用戶的需求?在此用戶就可以快速地驗收並作出判斷,而IT團隊也可以在問題影響到開發週期之前就解決反饋的問題。持續的反饋循環使得用戶與IT團隊更緊密地合作,以確保能準確的理解與滿足他們的需求。整個交付過程進度可視化,方便團隊人員與客戶瞭解項目的進度。

在當前快節奏的市場中,這無疑是一個重大的優勢。當您將軟件更快地推向市場時,您將獲得更大的競爭優勢。

CI或CD適合您的業務場景嗎

持續集成可確保代碼庫中始終保持最新的代碼,同時可以快速集成來自多個開發人員的代碼,並確保這些代碼可在多個環境中協同工作。它通常有助於減少錯誤並通過自動化流程來減少手動任務。CI可以實現代碼的自動構建與測試,減少開發中的Bug。因此,CI適用於那些過度依賴手動任務和複雜構建過程的企業。

持續交付適用於需要縮短開發週期,更快地爲目標用戶提供軟件的企業。CD降低了部署新軟件或升級已有軟件的難度,且實現了全流程的自動化,因此您的團隊無需手動執行復雜繁瑣的任務,從而加快反饋速度,來確保您增加的功能真正地滿足用戶的需求。

總而言之,CI和CD是相互補充的。CI的統一代碼庫和自動化測試的方法可用於支持CD中更大規模的自動化和更頻繁的部署。因此將CI和CD結合到您開發與交付的流程中,會使您的IT團隊更加敏捷,更加快速地開發。

目前,大多數CI / CD的工具採用的方法都大同小異。 而一般的DevOps工具通常都會支持CI和CD方法,相應地還會提供相關的自動化測試框架。Choerodon豬齒魚平臺中的DevOps模塊便是結合了CI與CD的方法,並在此基礎上實現了測試與部署的自動化。用戶需要根據自己的實質需求來創建CD流水線,以此來實現不同環境不同版本類型的自動化部署;當然,您還可以在其中設置人工卡點任務,使得CD流水線隨時處於人工的監控之下。

此外,也有不少人認爲CI是CD的前提與基礎,沒有CI就不能實現CD。這種說法也是比較流行的,其思路如下圖。因此,不管是哪種說法,CI與CD都是DevOps工具中不可或缺的理念與方法。

devops flow

原文地址:
https://dzone.com/articles/continuous-integration-vs-continuous-delivery

更多Choerodon豬齒魚持續交付相關文章▼

關於Choerodon豬齒魚

Choerodon豬齒魚開源多雲技術平臺,是基於開源技術Kubernetes,Istio,knative,Gitlab,Spring Cloud來實現本地和雲端環境的集成,實現企業多雲/混合雲應用環境的一致性。平臺通過提供精益敏捷、持續交付、容器環境、微服務、DevOps等能力來幫助組織團隊來完成軟件的生命週期管理,從而更快、更頻繁地交付更穩定的軟件。

大家也可以通過以下社區途徑瞭解豬齒魚的最新動態、產品特性,以及參與社區貢獻:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章