DevOps、CI、CD都是什么鬼?
DevOps是 DevOps是一種重視“軟件開發(fā)人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。通過自動化“軟件交付”和“架構變更”的流程,來使得構建、測試、發(fā)布軟件能夠更加地快捷、頻繁和可靠。具體來說,就是在軟件交付和部署過程中提高溝通與協(xié)作的效率,旨在更快、更可靠的的發(fā)布更高質量的產品。 也就是說DevOps是一組過程和方法的統(tǒng)稱,并不指代某一特定的軟件工具或軟件工具組合。各種工具軟件或軟件組合可以實現(xiàn)DevOps的概念方法。其本質是一整套的方法論,而不是指某種或某些工具集合,與軟件開發(fā)中設計到的 CI的英文名稱是 CI中,開發(fā)人員將會頻繁地向主干提交代碼,這些新提交的代碼在最終合并到主干前,需要經過編譯和自動化測試流進行驗證。 持續(xù)集成(CI)是在源代碼變更后自動檢測、拉取、構建和(在大多數(shù)情況下)進行單元測試的過程。持續(xù)集成的目標是快速確保開發(fā)人員新提交的變更是好的,并且適合在代碼庫中進一步使用。CI的流程執(zhí)行和理論實踐讓我們可以確定新代碼和原有代碼能否正確地集成在一起。 CD可對應多個英文名稱,持續(xù)交付 查了一些資料,關于持續(xù)交付和持續(xù)部署的概念比較混亂,以下的概念總結按大部分的資料總結而來。 完成 CI 中構建及單元測試和集成測試的自動化流程后,持續(xù)交付可自動將已驗證的代碼發(fā)布到存儲庫。為了實現(xiàn)高效的持續(xù)交付流程,務必要確保 CI 已內置于開發(fā)管道。持續(xù)交付的目標是擁有一個可隨時部署到生產環(huán)境的代碼庫。 在持續(xù)交付中,每個階段(從代碼更改的合并,到生產就緒型構建版本的交付)都涉及測試自動化和代碼發(fā)布自動化。在流程結束時,運維團隊可以快速、輕松地將應用部署到生產環(huán)境中或發(fā)布給最終使用的用戶。 對于一個成熟的CI/CD管道(Pipeline)來說,最后的階段是持續(xù)部署。作為持續(xù)交付——自動將生產就緒型構建版本發(fā)布到代碼存儲庫——的延伸,持續(xù)部署可以自動將應用發(fā)布到生產環(huán)境。 持續(xù)部署意味著所有的變更都會被自動部署到生產環(huán)境中。持續(xù)交付意味著所有的變更都可以被部署到生產環(huán)境中,但是出于業(yè)務考慮,可以選擇不部署。如果要實施持續(xù)部署,必須先實施持續(xù)交付。 持續(xù)交付并不是指軟件每一個改動都要盡快部署到產品環(huán)境中,它指的是任何的代碼修改都可以在任何時候實施部署。 持續(xù)交付表示的是一種能力,而持續(xù)部署表示的則一種方式。持續(xù)部署是持續(xù)交付的最高階段 另外一個概念,也就是所謂的敏捷開發(fā),似乎還沒有所謂的簡稱,而且這個稱呼似乎在國內被濫用了。敏捷開發(fā)著重于一種開發(fā)的思路,擁抱變化和快速迭代。如何實現(xiàn)敏捷開發(fā),目前似乎尚沒有完善的工具鏈,更多的是一種概念性,調侃的說法“既想馬爾跑得快,又想馬兒不吃草”的另外一種說法。 上圖揭示了敏捷開發(fā)的一些內涵和目標,似乎有點兒一本真經的胡說八道的意思。 概念性的內容,每個人的理解都有所不同。就好比DevOps
Development
和Operations
的組合,是一種方法論,是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進應用開發(fā)、應用運維和質量保障(QA)部門之間的溝通、協(xié)作與整合。以期打破傳統(tǒng)開發(fā)和運營之間的壁壘和鴻溝。OOP
、AOP
、IOC
(或DI)等類似,是一種理論或過程或方法的抽象或代稱。CI
Continuous Integration
,中文翻譯為:持續(xù)集成。CD
Continuous Delivery
和持續(xù)部署Continuous Deployment
,一下分別介紹。持續(xù)交付
持續(xù)部署
Agile Development
CI、CD、DevOps關系
CGI
這個詞,即可以理解成CGI這種協(xié)議,也可以理解成實現(xiàn)了CGI協(xié)議的軟件工具,都沒有問題,咬文嚼字過猶不及。留下一圖: