瞬息萬變的商業環境,客戶需求隨時更迭,為了縮短響應周期、促進工作效率,企業重新審視專案管理與技術實踐的方式,後續衍生出的敏捷軟體開發(Agile software development)、敏捷管理(Agile Management)等方法論,讓企業組織能夠迅速「適應」變化中的專案開發、IT 系統、生產流程與營運模式。
傳統開發
軟體開發過程是確定的、可預測,在一開始收集到需要的資訊並制定好計劃,然後執行計劃就應該可以成功。如果開發失敗一定是在一開始就沒有做好,沒收集到必要的關鍵資訊,導致其開發失敗結果。傳統開發模式會試圖引入更多的流程,文件,並且讓每一步都做到萬無一失。
敏捷開發
敏捷軟體開發的世界中,開發中無法 100% 預測充滿多變性的計劃,但可以肯定的是隨著開發的進行,我們會對開發中內容的認識越來越明確。而執行一段時間後常常有發現需要的進階測試及調整的項目,甚至發現之前的規劃方向不對,即刻調整計劃。 傳統開發的缺點無法緊跟市場趨勢,容易因為過長的開發時間導致被市場淘汰,而敏捷開發核心是快速跌代、擁抱瞬息萬變的市場變化。
CI / CD 替企業帶來的更多創新及測試
持續整合 ( 編碼 ➔ 構建 ➔ 整合 ➔ 測試 ➔ 交付 ➔ 部署 )
如上圖所示:「CI 持續整合(Continuous Integration)」、「CD 持續交付(Continuous Delivery)」和「持續部署(Continuous Deployment)」,有著不同的軟體自動化交付週期。
CI 持續整合(Continuous Integration)
CI:最常是指軟體發行程序的建置或整合階段,而且需要自動化元件 (例如 CI 或建置服務) 與文化元件 (例如: 學習經常進行整合)。持續整合的主要目標是更快發現及解決錯誤、改善軟體品質、減少驗證與發行新軟體更新所需的時間。
CD 持續交付(Continuous Delivery)
CD:開發人員不只是自動化單元之類的測試,他們將應用程式更新,並部署到客戶之前可以從多方面進行驗證更新。這些測試可能包含 UI 測試、負載測試、整合測試、API 可靠性測試等。這可以協助開發人員更徹底地驗證更新,並提前發現問題與改善問題。如果善用雲端服務,要自動建立和複寫多個測試環境,不但輕鬆而且經濟實惠,這優勢於只在現場部署環境是很難達到的。
持續部署(Continuous Deployment)
持續部署:當交付的程式碼通過評審之後,自動部署到生產環境中,不間斷部署是持續交付的最高階段。
CD 持續交付與 持續部署的關係
持續部署的變更都會被自動部署到生產環境中。持續交付則為所有的變更都可以被部署到生產環境中,如果要實施持續部署,必須先實施持續交付,但可能出於團隊考量等,可選擇不部署。
圖片出處:什麼是持續整合?(AWS Taiwan)
延伸閱讀:敏捷開發結合雲端服務,加速企業專案開發