DevOps、CI、CD 都是什麼鬼?

DevOps

DevOps 是 Development 和 Operations 的組合,是一種方法論,是一組過程、方法與系統的統稱,用於促進應用開發、應用運維和質量保障(QA)部門之間的溝通、協作與整合。以期打破傳統開發和運營之間的壁壘和鴻溝。

DevOps 是一種重視 “軟件開發人員(Dev)” 和“IT 運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。通過自動化 “軟件交付” 和“架構變更”的流程,來使得構建、測試、發佈軟件能夠更加地快捷、頻繁和可靠。具體來說,就是在軟件交付和部署過程中提高溝通與協作的效率,旨在更快、更可靠的的發佈更高質量的產品。

也就是說 DevOps 是一組過程和方法的統稱,並不指代某一特定的軟件工具或軟件工具組合。各種工具軟件或軟件組合可以實現 DevOps 的概念方法。其本質是一整套的方法論,而不是指某種或某些工具集合,與軟件開發中設計到的 OOP、AOP、IOC(或 DI)等類似,是一種理論或過程或方法的抽象或代稱.

CI

CI 的英文名稱是 Continuous Integration,中文翻譯爲:持續集成。

CI 中,開發人員將會頻繁地向主幹提交代碼,這些新提交的代碼在最終合併到主幹前,需要經過編譯和自動化測試流進行驗證。

持續集成(CI)是在源代碼變更後自動檢測、拉取、構建和(在大多數情況下)進行單元測試的過程。持續集成的目標是快速確保開發人員新提交的變更是好的,並且適合在代碼庫中進一步使用。CI 的流程執行和理論實踐讓我們可以確定新代碼和原有代碼能否正確地集成在一起

CD

CD 可對應多個英文名稱,持續交付 Continuous Delivery 和持續部署 Continuous Deployment,以下分別介紹。

查了一些資料,關於持續交互和持續部署的概念比較混亂,以下的概念總結按大部分的資料總結而來

持續交付

完成 CI 中構建及單元測試和集成測試的自動化流程後,持續交付可自動將已驗證的代碼發佈到存儲庫。爲了實現高效的持續交付流程,務必要確保 CI 已內置於開發管道。持續交付的目標是擁有一個可隨時部署到生產環境的代碼庫。

在持續交付中,每個階段(從代碼更改的合併,到生產就緒型構建版本的交付)都涉及測試自動化和代碼發佈自動化。在流程結束時,運維團隊可以快速、輕鬆地將應用部署到生產環境中或發佈給最終使用的用戶.

持續部署

對於一個成熟的 CI/CD 管道(Pipeline)來說,最後的階段是持續部署。作爲持續交付——自動將生產就緒型構建版本發佈到代碼存儲庫——的延伸,持續部署可以自動將應用發佈到生產環境。

持續部署意味着所有的變更都會被自動部署到生產環境中。持續交付意味着所有的變更都可以被部署到生產環境中,但是出於業務考慮,可以選擇不部署。如果要實施持續部署,必須先實施持續交付。

持續交付並不是指軟件每一個改動都要儘快部署到產品環境中,它指的是任何的代碼修改都可以在任何時候實施部署。

持續交付表示的是一種能力,而持續部署表示的則一種方式。持續部署是持續交付的最高階段.

Agile Development

另外一個概念,也就是所謂的敏捷開發,似乎還沒有所謂的簡稱,而且這個稱呼似乎在國內被濫用了。敏捷開發着重於一種開發的思路,擁抱變化和快速迭代。如何實現敏捷開發,目前似乎尚沒有完善的工具鏈,更多的是一種概念性,調侃的說法 “既想馬兒跑得快,又想馬兒不喫草” 的另外一種說法。

上圖揭示了敏捷開發的一些內涵和目標,似乎有點兒一本真經的胡說八道的意思

CI、CD、DevOps 關係

概念性的內容,每個人的理解都有所不同。就好比 CGI 這個詞,即可以理解成 CGI 這種協議,也可以理解成實現了 CGI 協議的軟件工具,都沒有問題,咬文嚼字過猶不及。留下一圖:

原文鏈接:https://blog.jjonline.cn/linux/238.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/o9rcDLV5l4aH1yiaaGTPXQ