天天看點

DevOps知識點——3C知多少

CI / CD是任何DevOps操作的兩大基石,這是一種開發軟體的方式,旨在生産快速而強大的軟體,随時以可持續的方式釋出更新。 當例行更改代碼時,開發周期會更加頻繁、更有意義且更快速。通過此過程,我們可以確定隻有已知良好的代碼才能成為軟體産品的一部分。

Continuous Integration,Continuous Delivery,Continuous Deployment,即持續內建、持續傳遞和持續部署構成DevOps的3C。在這篇文章中,将從以下幾個方面闡述:傳統內建、持續內建及過程、持續傳遞、持續部署、3C優勢。

傳統內建時,團隊沒有任何類型的中央建構伺服器。源代碼可以存儲在中央源代碼存儲庫中,但是開發人員不必定期送出更改。在計劃釋出之前,開發人員可能會手動內建更改,這會導緻許多問題,例如由于許多開發人員同時內建而帶來的最後一刻的沖突,或者由于內建而導緻的元件故障。

傳統內建的某些缺點如下:**開發人員不經常內建代碼,導緻最後一刻的隐患;回報回路慢;由于需要修複許多元件而無法輕松解決問題;難以按時傳遞産品;高成本。**為了克服這些問題,CI和CD應運而生,它們從技術角度和業務角度都具有許多優點。

持續內建是一種開發實踐,要求開發人員每天多次将代碼內建到共享存儲庫中,以避免代碼沖突。

然後,每個簽入均由自動建構進行驗證,進而使團隊可以及早發現問題。這使團隊可以花更少的時間進行回溯,而将更多的時間用于建構新功能。

這裡的概念是在一個項目上有多個開發人員,以将資源庫的主分支保持為最新形式的源代碼,是以每個開發人員都可以簽出或者從最新的代碼中提取,以避免發生沖突。

DevOps知識點——3C知多少

開發人員在自己特定的分支中開發其功能,然後将其新分支推送到協作存儲庫中。 運作自動化的單元測試和內建測試,并将錯誤和其他代碼品質問題通知團隊。一旦自動測試通過,開發人員就會建立拉取請求。開發人員和審閱者可以直接對開發人員送出給主分支的更改發表評論。

完成評審過程并将新代碼合并到主分支後,功能開發和錯誤修複周期将從內建的主分支繼續運作。這在團隊内(特别是每個人都在處理許多小任務的大型團隊)通常會在一天内發生多次,這意味着每個人都在同一個通用代碼庫上工作。這樣就大大減少了代碼的差異以及功能開發人員彼此之間不同步而引起的相關問題。

持續傳遞是一個更改代碼會自動生成、自動測試并為釋出到生産環境中做好準備的過程,軟體可以在任何時候釋出到生産環境中。

持續內建的代碼送出将進一步進行性能和功能測試,直到準許釋出為止。要有效執行持續傳遞,需要強大的持續內建。如果正确實施,開發人員将始終擁有已認證标準化測試過程的可部署的建構工件。

這個過程在開發人員送出代碼時開始,在登台環境中完成測試後結束,以便代碼可以部署到生産環境中。如果在自動測試過程中出現任何錯誤或Bug,CI工具将自動通過任意一種通知(如電子郵件或短信)告知開發人員。

持續傳遞通常涉及一個類似于生産的暫存區域,在将更改釋出到生産之前,需要手動接受這些更改。

釋出到生産環境的決策更多地是業務決策,而不是技術決策。

持續部署與持續傳遞非常相似。二者唯一差別是,在持續部署中,所有通過自動化測試階段的代碼送出都将自動釋出到生産環境中。

持續部署不需要在登台環境中進行任何手動測試,因為自動化測試将在發行版的所有階段中執行。

這兩種CD都依賴于實時基礎設施配置和應用程式監視工具,用以在部署之前發現由于缺乏人工驗證而在測試回報循環中沒有被找出的問題。

1、緩解風險

許多開發人員面臨這樣的問題:應用程式在本地環境可運作,但是在面對更進階可用性時無法運作。這是因為在本地環境和投入生産的地方可能存在很多不同之處。一些品質保證任務如浏覽器測試,可以降低将Bug一直傳播到活動站點的風險。

2、加快上市時間

持續內建、持續部署和持續傳遞的應用可以讓團隊更快地發現故障并快速修複,進而提高軟體釋出率,加快傳遞速度。

3、更改可追溯

所有團隊成員必須使用相同的源存儲庫來維護其代碼。很明顯,可以看到代碼庫被進行了哪些更改以及由誰進行了更改。

4、提高代碼覆寫率

CI伺服器檢查每一次建構的測試覆寫率。無論你在何處送出未經測試類的新代碼,伺服器都會顯示錯誤,因為沒有足夠的代碼覆寫率,是以開發人員将緻力于增加低層級可用性的覆寫率,以便在部署到更進階的可用性時不會出現與代碼覆寫率有關的問題。

5、品質:從優秀到卓越

CI有助于測試人員将項目總時間的50%用于運作內建的标稱測試、查找Bug和其他細微問題。這使得測試團隊能夠更深入地研究問題,測試更多的場景,并産生更好的總體品質和結果。

6、更少的積壓工作

将CI/CD納入團隊的開發過程中可以減少積壓工作中非關鍵缺陷的數量。這些小缺陷會在生産前被檢測出來,并在釋出給最終使用者之前被修複。

7、使用者滿意度

随着部署在連續的周期中運作,這将使團隊能夠跟蹤項目并實時提供回報,并在必要時修複團隊中的缺點。通過一緻的評審,新産品的開發将更加精細,并将更加符合終端使用者的期望。

8、減少團隊成員之間的摩擦

確定跨多個位置的多個開發人員工作的代碼始終內建到一個公共存儲庫中。這避免了由于大量和沖突的代碼送出而導緻的混亂。

在當今瞬息萬變的競争環境中,開發商正努力将他們的産品快速投放市場,如果沒有一套簡潔而合适的流程,幾乎不可能釋出高品質的代碼。因而,轉向持續內建和持續部署将極大地改變軟體開發過程。它将簡化整個過程,進而幫助團隊提供更穩定、更安全、更優質的産品。

參考文獻:Krishnagayathri Gopinath .Continuous Integration And Delivery [OL].(2020-04-27) https://dzone.com/articles/continuous-integration-and-delivery

繼續閱讀