開發(fā)人員的cicd(devops)集成

Devops

Devops是什么?

DevOps 就是開發(fā)(Development)和運維(Operations)這兩個領(lǐng)域的合并。

為什么要合并這倆個領(lǐng)域?

主要是開發(fā)和運維的脫節(jié)。

DevOps 就是想方設(shè)法的避免這種問題,同時讓大家用更聰明更有效的方式去工作。它是一種框架,包含了很多優(yōu)秀想法和原則,它鼓勵開發(fā)部門和運維部門通力合作。在DevOps環(huán)境中,開發(fā)人員和系統(tǒng)管理員會構(gòu)建一些關(guān)系、流程和工具,從而更好的與客戶互動,最終提供更好的服務(wù)。


使用了DevOps模型之后,會使兩個部門更好的交互,使兩者的關(guān)系得到改善,從而讓很多領(lǐng)域從中受益,例如:自動化、監(jiān)視、能力規(guī)劃和性能、備份與恢復、安全、網(wǎng)絡(luò)以及服務(wù)提供(provisioning)等等。

--容器化與虛擬化

一個容器中運行原生?Linux和共享主機與其它容器的內(nèi)核。它運行一個獨立的進程,不占用任何其他可執(zhí)行文件的內(nèi)存,使其輕量化。

相比之下,虛擬機(VM)運行一個完整的“客戶”操作系統(tǒng),通過虛擬機管理程序虛擬訪問主機資源。一般來說,虛擬機提供的環(huán)境比大多數(shù)應(yīng)用程序需要的資源更多。


服務(wù)器虛擬化解決的核心問題是資源調(diào)配,而容器解決的核心問題是應(yīng)用開發(fā)、測試和部署。

虛擬機技術(shù)通過Hypervisor層抽象底層基礎(chǔ)設(shè)施資源,提供相互隔離的虛擬機,通過統(tǒng)一配置、統(tǒng)一管理,計算資源的可運維性,以及資源利用率都能夠得到有效的提升。同時,虛擬機提供客戶機操作系統(tǒng),客戶機變化不會影響宿主機,能夠提供可控的測試環(huán)境,更能夠屏蔽底層硬件甚至基礎(chǔ)軟件的差異性,讓應(yīng)用做到的廣泛兼容。然而,再牛逼的虛擬化技術(shù),都不可避免地出現(xiàn)計算、IO、網(wǎng)絡(luò)性能損失,畢竟多了一層軟件,畢竟要運行一個完整的客戶機操作系統(tǒng)。

容器技術(shù)嚴格來說并不是虛擬化,沒有客戶機操作系統(tǒng),是共享內(nèi)核的。容器可以視為軟件供應(yīng)鏈的集裝箱,能夠把應(yīng)用需要的運行環(huán)境、緩存環(huán)境、數(shù)據(jù)庫環(huán)境等等封裝起來,以最簡潔的方式支持應(yīng)用運行,輕裝上陣,當然是性能更佳。Docker鏡像特性則讓這種方式簡單易行。當然,因為共享內(nèi)核,容器隔離性也沒有虛擬機那么好。

但是,更重要的是,通過Docker的特性,以容器化封裝為基礎(chǔ),企業(yè)就可以很好地實現(xiàn)云原生(向云而生的架構(gòu)),包括大家聽得耳朵都起繭子的微服務(wù)架構(gòu)、DevOps,讓開發(fā)團隊可以從苦逼的運維工作中解脫,讓應(yīng)用快速上線、快速迭代。微服務(wù)架構(gòu)下,將系統(tǒng)拆分成多個服務(wù),每個部分都可以獨立開發(fā)測試部署,同時我們也可以只擴展需要擴展的部分,也就是變一個三頭六臂的哪吒,而不是總要變?nèi)齻€孫悟空。微服務(wù)如何設(shè)計,基于容器的規(guī)模部署、高可用如何實現(xiàn)等,是另外的問題了。對云原生內(nèi)容感興趣的朋友,可以參考這篇綜述文章:[《云原生應(yīng)用架構(gòu)》]。

所以說,虛擬機和容器被大家比較,主要是在于它們都提供隔離環(huán)境的相似性,但相似僅此而已,它們各有各的應(yīng)用場景,如何選擇還是要看根據(jù)具體的業(yè)務(wù)需求,包括業(yè)務(wù)成長預期。

如何選擇?

通常來說,這取決于你的需求。如果你只是希望將應(yīng)用運行的實例進行隔離,那么對于管理應(yīng)用運行環(huán)境、啟動應(yīng)用實例以及控制資源開銷方面容器將是一個極為高效的工具。像Docker這一類的容器,其設(shè)計原則就是為了解決這種應(yīng)用環(huán)境的修改以及應(yīng)用部署的問題,并且這十分符合DevOps理念(你可能希望知道更多關(guān)于DevOps理念的內(nèi)容)。如果你從服務(wù)器虛擬化的角度來尋找最好的環(huán)境隔離方案,那么系統(tǒng)級的虛擬化是更好的方案:和容器相比,鄰居租戶(Noisy

neighbours )對系統(tǒng)的影響在虛擬化的方案下將不是一個問題。盡管現(xiàn)在很多容器都在專注于提高其隔離能力,但是虛擬機的隔離還是要優(yōu)于容器。從物理服務(wù)器過渡到虛擬服務(wù)器是一個很自然的過程,并且現(xiàn)在針對虛擬服務(wù)器的管理的生態(tài)系統(tǒng)也很完善。

開發(fā)人員cicd步驟


支持以上過程的基礎(chǔ)環(huán)境:

一個源代碼倉庫,gitlab。

一個持續(xù)集成和部署的工具,jenkins。

一個私有registry,docker容器。

一個主機運行Docker的環(huán)境。系統(tǒng)擁有幾個目標環(huán)境,每個目標環(huán)境都包含過渡性(staging)部署和生產(chǎn)部署。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容