Agile, CI/CD,DevOps
隨著DevOps理念的普及與擴散,可能會被一大堆名字概念搞的莫名其妙,理清它們之間的關系可以幫助團隊知道DevOps如何落地,改善工作流程。
Here’s a quick and easy way to differentiate agile, DevOps, and CI/CD:
- Agile focuses on processes highlighting change while accelerating delivery.
- CI/CD focuses on software-defined life cycles highlighting tools that emphasize automation.
- DevOps focuses on culture highlighting roles that emphasize responsiveness.

Agile Development
- 擁抱變化
- 快速迭代

CI /CD
CI/CD 都體現(xiàn)了如今快節(jié)奏市場中的文化和發(fā)展原則,旨在縮短開發(fā)周期、提高軟件交付效率以及實現(xiàn)全流程的自動化。同時,兩者都有著共同的目標:讓軟件開發(fā)更少地依賴于手動執(zhí)行的任務,在此基礎上使得軟件的發(fā)布更加頻繁、更加安全可靠。由于有著相同的目標,因此持續(xù)集成和持續(xù)交付并非相互排斥的, 只是它們的應用范圍有所不同。
- CI:持續(xù)集成(CONTINUOUS INTEGRATION)
- CD:持續(xù)部署(CONTINUOUS DEPLOYMENT)
- CD:持續(xù)交付(CONTINUOUS DELIVERY)
持續(xù)集成CI(Continuous Integration)
參考大師的定義: http://www.martinfowler.com/articles/continuousIntegration.html
持續(xù)集成(CI)是在源代碼變更后自動檢測、拉取、構(gòu)建和(在大多數(shù)情況下)進行單元測試的過程
-
對項目而言,持續(xù)集成(CI)的目標是確保開發(fā)人員新提交的變更是好的, 不會發(fā)生break build; 并且最終的主干分支一直處于可發(fā)布的狀態(tài),
-
對于開發(fā)人員而言,要求他們必須頻繁地向主干提交代碼,相應也可以即時得到問題的反饋。實時獲取到相關錯誤的信息,以便快速地定位與解決問題

顯然這個過程可以大大地提高開發(fā)人員以及整個IT團隊的工作效率,避免陷入好幾天得不到好的“部署產(chǎn)出”,影響后續(xù)的測試和交付。
持續(xù)交付 (Continuous Delivery)
持續(xù)交付在持續(xù)集成的基礎上,將集成后的代碼部署到更貼近真實運行環(huán)境的「預發(fā)布環(huán)境」(production-like environments)中。交付給質(zhì)量團隊或者用戶,以供評審。如果評審通過,代碼就進入生產(chǎn)階段 持續(xù)交付并不是指軟件每一個改動都要盡快部署到產(chǎn)品環(huán)境中,它指的是任何的代碼修改都可以在任何時候?qū)崟r部署。

強調(diào):
1、手動部署
2、有部署的能力,但不一定部署
持續(xù)部署(Continuous Deployment)
代碼通過評審之后,自動部署到生產(chǎn)環(huán)境中。持續(xù)部署是持續(xù)交付的最高階段。
強調(diào)
1、持續(xù)部署是自動的
2、持續(xù)部署是持續(xù)交付的最高階段
3、持續(xù)交付表示的是一種能力,持續(xù)部署則是一種方式

- DEV Development environment -開發(fā)環(huán)境,用于開發(fā)者調(diào)試使用
- FAT Feature Acceptance Test environment -功能驗收測試環(huán)境,用于軟件測試者測試使用
- UAT User Acceptance Test environment -用戶驗收測試環(huán)境,用于生產(chǎn)環(huán)境下的軟件測試者測試使用
- PRO Production environment -生產(chǎn)環(huán)境
通過CD可以加快軟件交付速度,目標用戶可以在幾天或幾周內(nèi)就收到修復后的功能與新增的功能,而無需等待數(shù)月后才更新。CD的部署頻率也加快了整個流程中的反饋循環(huán)。最新版本真的解決了預期的問題嗎?是否滿足了用戶的需求?用戶就可以快速地驗收并作出判斷,而IT團隊也可以在問題影響到開發(fā)周期之前就解決反饋的問題。持續(xù)的反饋循環(huán)使得用戶與IT團隊更緊密地合作,以確保能準確的理解與滿足他們的需求。整個交付過程進度可視化,方便團隊人員與客戶了解項目的進度。
-
持續(xù)集成可確保代碼庫中始終保持最新的代碼,同時可以快速集成來自多個開發(fā)人員的代碼,并確保這些代碼可在多個環(huán)境中協(xié)同工作。它通常有助于減少錯誤并通過自動化流程來減少手動任務。CI可以實現(xiàn)代碼的自動構(gòu)建與測試,減少開發(fā)中的Bug。因此,CI適用于那些過度依賴手動任務和復雜構(gòu)建過程的企業(yè)。
-
持續(xù)交付適用于需要縮短開發(fā)周期,更快地為目標用戶提供軟件的企業(yè)。CD降低了部署新軟件或升級已有軟件的難度,且實現(xiàn)了全流程的自動化,因此您的團隊無需手動執(zhí)行復雜繁瑣的任務,從而加快反饋速度,來確保您增加的功能真正地滿足用戶的需求。
此外,也有不少人認為CI是CD的前提與基礎,沒有CI就不能實現(xiàn)CD。這種說法也是比較流行的,其思路如下圖。因此,不管是哪種說法,CI與CD都是DevOps工具中不可或缺的理念與方法。

“持續(xù)交付與持續(xù)部署,到底誰應該包含誰?”
持續(xù)部署是自動化的將一切變更放到生產(chǎn)環(huán)境,而持續(xù)交付則有判斷決策過程,并直接說“In order to do Continuous Deployment you must be doing Continuous Delivery.”
“Continuous Delivery is sometimes confused with Continuous Deployment.Continuous Deploymentmeans that every change goes through the pipeline and automatically gets put into production, resulting in many production deployments every day. Continuous Delivery just means that you are able to do frequent deployments but may choose not to do it, usually due to businesses preferring a slower rate of deployment. In order to do Continuous Deployment you must be doing Continuous Delivery.”
對持續(xù)交付與持續(xù)部署的關系,Martin也承認兩個概念容易造成困惑,持續(xù)部署代表將所有變更自動通過流水線推到生產(chǎn)環(huán)境,持續(xù)交付則意味著你有能力這樣做,但可以基于業(yè)務選擇不這樣做。
所以我不覺得兩者有誰包含誰,兩者在這個層面講,一個是技術領域,一個是業(yè)務領域。
參考
-
Continuous integration vs. continuous delivery vs. continuous deployment
https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment -
Continuous Integration vs. Continuous Delivery
https://dzone.com/articles/continuous-integration-vs-continuous-delivery -
The Product Managers’ Guide to Continuous Delivery and DevOps
https://www.mindtheproduct.com/what-the-hell-are-ci-cd-and-devops-a-cheatsheet-for-the-rest-of-us/ -
What Is DevOps? https://theagileadmin.com/what-is-devops/
-
What is CI/CD? https://www.mabl.com/blog/what-is-cicd
-
What’s the difference between agile, CI/CD, and DevOps?
https://www.synopsys.com/blogs/software-security/agile-cicd-devops-difference/

浙公網(wǎng)安備 33010602011771號