如今,圍繞持續(xù)集成、持續(xù)部署、持續(xù)交付的討論比以往任何時(shí)候都多,但實(shí)際上,持續(xù)集成/持續(xù)交付的實(shí)際使用似乎更少。這可能是因?yàn)镈evOps缺乏所需的技能集,或者企業(yè)仍然在實(shí)踐傳統(tǒng)的軟件開發(fā)方法。由于缺少持續(xù)集成/持續(xù)交付和DevOps自動(dòng)化實(shí)踐,企業(yè)無法了解需要花費(fèi)多少費(fèi)用。
對于許多企業(yè)而言,DevOps是他們必須嘗試的事情,因?yàn)樗麄兊母偁帉κ终谶@樣做或者這是一種趨勢。如果不了解DevOps原理和基本知識(shí),那么這將是一個(gè)令人絕望的嘗試。
在大多數(shù)情況下,客戶必須將一套不同的工具組合在一起才能交付軟件,這將會(huì)造成混亂。另一方面,很難選擇正確的工具并了解什么是最佳實(shí)踐。這就是人們開始看到DevOps公司具有提供統(tǒng)一工具集趨勢的原因,以使客戶可以立即使用完整的解決方案,而不必?fù)?dān)心采用不同供應(yīng)商的許多解決方案。
什么是持續(xù)集成/持續(xù)交付?
每當(dāng)開發(fā)人員提交并將更改推送到存儲(chǔ)庫時(shí),持續(xù)集成系統(tǒng)都會(huì)重建分支,并運(yùn)行所有相關(guān)測試用例,以驗(yàn)證新更改不會(huì)破壞現(xiàn)有應(yīng)用程序和功能。
持續(xù)交付是持續(xù)集成的擴(kuò)展,可以幫助用戶單擊按鈕來部署應(yīng)用程序。這意味著每次更改通過持續(xù)集成測試時(shí)都要進(jìn)行部署。這樣,就可以輕松地自動(dòng)完成構(gòu)建和測試階段以及大部分發(fā)布過程。
通過持續(xù)部署,開發(fā)人員將能夠自動(dòng)將軟件發(fā)布或部署到生產(chǎn)環(huán)境中。在這一階段,應(yīng)用程序中不會(huì)進(jìn)行任何人工代碼簽入。通過持續(xù)集成流程會(huì)自動(dòng)測試代碼是否存在問題,如果沒有發(fā)現(xiàn)問題,則會(huì)部署代碼。
為什么選擇持續(xù)集成/持續(xù)交付?
持續(xù)集成/持續(xù)交付是測試和部署應(yīng)用程序的最佳實(shí)踐。為了保證質(zhì)量,使持續(xù)集成/持續(xù)交付成為部署代碼的單一渠道是最佳實(shí)踐。DevOps團(tuán)隊(duì)?wèi)?yīng)確保一切都通過持續(xù)集成/持續(xù)交付管道進(jìn)行,以便測試和生產(chǎn)中的代碼相同。這還將減少人為錯(cuò)誤,并避免部署未經(jīng)錯(cuò)誤測試的其他版本。
很多企業(yè)如今使用持續(xù)集成/持續(xù)交付的最大原因之一是軟件交付速度更快,這導(dǎo)致對客戶的更新更加頻繁。并且經(jīng)常發(fā)布的不斷改進(jìn)將確保增強(qiáng)的客戶滿意度。這是一項(xiàng)競爭優(yōu)勢,因?yàn)樗蛊髽I(yè)可以更頻繁地交付新功能,可以幫助保持領(lǐng)先地位。
通過持續(xù)集成/持續(xù)交付管道傳遞代碼可確保所做的任何更改均符合既定標(biāo)準(zhǔn),然后再移至交付管道的下一個(gè)階段。任何故障或差異都會(huì)阻止將這類更改推進(jìn)到下一步,直到糾正為止。這只是意味著持續(xù)集成/持續(xù)交付的這種方法可確保不會(huì)將錯(cuò)誤代碼帶入生產(chǎn)環(huán)境。持續(xù)集成/持續(xù)交付可以快速促進(jìn)失敗、學(xué)習(xí)和交付方法。當(dāng)企業(yè)使用了自動(dòng)持續(xù)集成/持續(xù)交付時(shí),開發(fā)人員每次提交代碼時(shí),都會(huì)在持續(xù)集成/持續(xù)交付流程中不斷運(yùn)行代碼,從而可以快速捕獲錯(cuò)誤,由于每個(gè)小變化都需要單獨(dú)測試,因此更容易隔離錯(cuò)誤。
什么是持續(xù)集成/持續(xù)交付管道?
持續(xù)集成/持續(xù)交付管道是與自動(dòng)化集成的部署管道工作流。如果執(zhí)行得當(dāng),它將最大程度地減少人工切換和錯(cuò)誤,從而增強(qiáng)整個(gè)軟件交付生命周期中的反饋循環(huán),從而使開發(fā)團(tuán)隊(duì)可以在較短的時(shí)間內(nèi)交付較小的發(fā)行版塊。
持續(xù)集成/持續(xù)交付管道如今已成為軟件公司中的主流,并且已成為現(xiàn)代DevOps環(huán)境的骨干。盡管DevOps提出了與文化方面相關(guān)的原則和標(biāo)準(zhǔn),但持續(xù)集成/持續(xù)交付專注于自動(dòng)化、流程、過程和工具。隨著容器化和微服務(wù)的引入,持續(xù)集成/持續(xù)交付方案也發(fā)生了變化?,F(xiàn)在,每個(gè)云計(jì)算供應(yīng)商都具有支持和與Docker和Kubernetes之類的工具的集成,這些工具可以幫助擴(kuò)展持續(xù)集成/持續(xù)交付管道。
持續(xù)交付管道的階段
•測試自動(dòng)化和持續(xù)集成:這是準(zhǔn)備新功能和原型,完成編碼,然后將代碼與基礎(chǔ)集成的重要階段。通過使用持續(xù)集成服務(wù)器,可以完成單元測試和打包。
•構(gòu)建自動(dòng)化:這是工件被開發(fā)人員(即依賴項(xiàng)、Docker映像)推送到注冊表(即Amazon ECR或Docker Hub或任何容器注冊表)的階段。
•Alpha部署:在此階段,開發(fā)人員簽入更改。在這里,開發(fā)人員可以仔細(xì)查看他們所做的更改以及它們之間的交互方式以及對其他系統(tǒng)的影響。此外,在這里開發(fā)人員可以查看他們是否在主分支中破壞了任何內(nèi)容。
•Beta部署:這是測試人員執(zhí)行人工測試的階段。仍然需要人工測試才能看到持續(xù)集成工具的完善性。這使DevOps團(tuán)隊(duì)可以保證應(yīng)用程序的狀態(tài)良好,并且在部署后一定可以正常工作。
•生產(chǎn)部署:這是應(yīng)用程序上線的最后階段。
市場對持續(xù)集成/持續(xù)交付的看法是什么?
•谷歌公司在全球范圍內(nèi)對關(guān)鍵字“CI CD Pipeline”的搜索量逐漸增加。
•測試自動(dòng)化廠商Mabl公司對500名軟件測試人員進(jìn)行調(diào)查時(shí),有53%的人說他們的團(tuán)隊(duì)使用持續(xù)集成,而38%的人表示接受持續(xù)交付,只有29%的人采用持續(xù)部署。
•Codefresh公司進(jìn)行的與DevOps相關(guān)的調(diào)查表明,三分之一的公司已將一半以上的工作負(fù)載自動(dòng)化,但只有1%的自動(dòng)化。幾乎沒有人使整個(gè)持續(xù)集成/持續(xù)交付過程自動(dòng)化。多個(gè)工程團(tuán)隊(duì)只完成了不到10%的流程自動(dòng)化。
•iOS開發(fā)者社區(qū)調(diào)查是有史以來對蘋果平臺(tái)開發(fā)者進(jìn)行的最大規(guī)模的調(diào)查,其中2,290人填寫了問卷,其中持續(xù)集成/持續(xù)交付問題也參與了調(diào)查。
結(jié)果表明,大多數(shù)開發(fā)人員在使用商業(yè)應(yīng)用程序時(shí)都在實(shí)踐持續(xù)集成/持續(xù)交付。
•前進(jìn)的方向:除非企業(yè)使用適當(dāng)?shù)牟渴鸸艿溃駝t它們將無法充分利用容器和DevOps。企業(yè)將開始向客戶提供預(yù)建管道,例如JFrog管道。需要一個(gè)統(tǒng)一的平臺(tái),該平臺(tái)具有支持持續(xù)集成/持續(xù)交付系統(tǒng)所需的所有工具——自動(dòng)化(管道)、二進(jìn)制存儲(chǔ)庫管理(Artifactory)、安全性(Xray)、發(fā)行/部署(分發(fā))等。JFrog公司提供了統(tǒng)一的平臺(tái)。
•Codefresh公司進(jìn)行了一項(xiàng)調(diào)查,并在KubeCon + CloudNativeCon Europe 2019會(huì)議上發(fā)布了對130位開發(fā)人員的調(diào)查結(jié)果,其結(jié)果有些令人震驚。結(jié)果表明,將近三分之一(32%)的用戶根本不使用任何持續(xù)集成/持續(xù)交付平臺(tái)。60%的調(diào)查受訪者表示,他們的組織尚未充分利用自動(dòng)化來加速軟件開發(fā)和部署。
•GigaOm公司的《市場雷達(dá)報(bào)告》是有關(guān)企業(yè)持續(xù)集成/持續(xù)交付解決方案的最新研究,作者在此比較了業(yè)界領(lǐng)先的持續(xù)集成/持續(xù)交付解決方案,并根據(jù)不同的評估標(biāo)準(zhǔn)對其進(jìn)行了評估。
考慮持續(xù)集成/持續(xù)交付解決方案有AWS、CircleCI、CloudBees、CodeFresh、GitLab、IBM、JFrog、Micro Focus、Microsoft、Red Hat和Xebia Labs。
持續(xù)集成/持續(xù)交付是DevOps的最佳實(shí)踐之一,因?yàn)樗梢源_保開發(fā)人員和運(yùn)營部門之間的正確配合。它提高了自動(dòng)化程度,開發(fā)人員可以更可靠、更頻繁地推送代碼更改。同時(shí),由于環(huán)境具有標(biāo)準(zhǔn)配置,并且回滾過程是自動(dòng)化的,因此運(yùn)營團(tuán)隊(duì)可以看到更高的穩(wěn)定性。為了在持續(xù)集成/持續(xù)交付中獲勝,開發(fā)團(tuán)隊(duì)和運(yùn)營團(tuán)隊(duì)都需要就正確的工具和方法達(dá)成共識(shí),這從長遠(yuǎn)來看對業(yè)務(wù)增長是有益的。
云計(jì)算與DevOps齊頭并進(jìn)
沒有云計(jì)算,企業(yè)將無法進(jìn)行DevOps。而沒有DevOps,云計(jì)算也不會(huì)有太大價(jià)值。
云計(jì)算有許多定義,可以將對云計(jì)算的基本解釋定義為一個(gè)啟用并支持基礎(chǔ)設(shè)施供應(yīng)的系統(tǒng)。因此,它允許將其描述為代碼或模板,從而有助于創(chuàng)建可重復(fù)的過程。這也是DevOps的基本原理,可以最大程度地自動(dòng)化軟件開發(fā)生命周期中的流程/任務(wù)。
云計(jì)算對持續(xù)集成/持續(xù)交付的最大好處之一就是云計(jì)算基礎(chǔ)設(shè)施的動(dòng)態(tài)特性。對于持續(xù)集成/持續(xù)交付工作負(fù)載的短暫性和突發(fā)性,這是一個(gè)完美的選擇。云計(jì)算資源可以根據(jù)持續(xù)集成/持續(xù)交付工作負(fù)載自動(dòng)擴(kuò)大和縮小。這為企業(yè)帶來了巨大的管理和成本效益。企業(yè)不需要維護(hù)自己的服務(wù)器,而是隨著持續(xù)集成/持續(xù)交付工作負(fù)載的增加而增加這些服務(wù)器,或者在閑置時(shí)浪費(fèi)服務(wù)器資源。
無論企業(yè)如何定義云計(jì)算技術(shù),以及無論通過哪種DevOps路線通過云計(jì)算集成來實(shí)現(xiàn)數(shù)字化轉(zhuǎn)型,在DevOps詞典中都可以輕松地將云計(jì)算技術(shù)和服務(wù)融合在一起,因?yàn)樗鼈儚母旧涎a(bǔ)充了DevOps的原理和流程。
對于DevOps實(shí)施,敏捷原則可以作為驅(qū)動(dòng)因素,因?yàn)榘l(fā)布周期和自動(dòng)化時(shí)間較短,可以快速交付并按時(shí)交付。為了實(shí)施連續(xù)的實(shí)踐,云計(jì)算技術(shù)是一個(gè)很好的促進(jìn)者,因?yàn)橘Y源可快速用于開發(fā)和應(yīng)用程序生命周期管理中涉及的所有活動(dòng)。敏捷原則以及云計(jì)算和DevOps實(shí)踐可提高開發(fā)人員的生產(chǎn)力,并加快組織的發(fā)展。
借助安全的云計(jì)算網(wǎng)關(guān),用戶可以從任何地方使用任何設(shè)備輕松訪問企業(yè)資源,而不會(huì)影響網(wǎng)絡(luò)的安全性。讓用戶從他們的設(shè)備訪問其網(wǎng)絡(luò)有時(shí)看起來很嚇人,但是現(xiàn)代云計(jì)算平臺(tái)提供了更多功能,它們帶有內(nèi)置的安全性堆棧,可以幫助管理員提供管理和支持安全性所需的工具。
DevOps結(jié)合云計(jì)算技術(shù)為使用它們的企業(yè)帶來了巨大的好處:
(1)提高開發(fā)人員的生產(chǎn)力和協(xié)作能力。
(2)通過快速輕松地訪問開發(fā)環(huán)境來加快產(chǎn)品上市時(shí)間。
(3)幫助自動(dòng)化不同的重復(fù)任務(wù),以便開發(fā)人員可以專注于重要的任務(wù)。
(4)隨著代碼的臨近,自動(dòng)化和基礎(chǔ)設(shè)施可以極大地降低云計(jì)算的復(fù)雜性和系統(tǒng)維護(hù)。
(5)利用現(xiàn)代云計(jì)算平臺(tái)和原理來消除人為錯(cuò)誤,從而提高安全性。
(6)通過基于云計(jì)算的連續(xù)業(yè)務(wù)運(yùn)營幫助消除停機(jī)時(shí)間。開發(fā)人員可以通過自動(dòng)化構(gòu)建無狀態(tài)應(yīng)用程序,這將提高可用性和故障轉(zhuǎn)移能力,并提高業(yè)務(wù)可靠性和客戶滿意度。
(7)擴(kuò)展到新的高度。企業(yè)采用云計(jì)算和DevOps的主要原因之一是在需要時(shí)擴(kuò)展其基礎(chǔ)設(shè)施和應(yīng)用程序。
云計(jì)算部署模型
當(dāng)云計(jì)算提供商完全托管組織的應(yīng)用程序和數(shù)據(jù)時(shí),它就是公共云。只需建立全球互聯(lián)網(wǎng)連接,使用公共云的企業(yè)員工就可以訪問應(yīng)用程序。
私有云是指組織的資源(例如存儲(chǔ)、計(jì)算和網(wǎng)絡(luò)資源)存在于提供商的數(shù)據(jù)中心中。企業(yè)之所以偏愛私有云,主要是因?yàn)榘踩砸约霸谶\(yùn)行應(yīng)用程序時(shí)存儲(chǔ)高度敏感的數(shù)據(jù)。
混合云是另一種現(xiàn)代方法。它是私有云和公共云服務(wù)的組合。根據(jù)流量和需求的考慮,企業(yè)可以進(jìn)行更改。一些客戶可能具有本地持續(xù)集成/持續(xù)交付系統(tǒng)。這些持續(xù)集成/持續(xù)交付系統(tǒng)中的某些可以通過混合設(shè)置將其工作負(fù)載擴(kuò)展到云中。這可以使他們現(xiàn)在意識(shí)到云計(jì)算的好處,而不必進(jìn)行完整的遷移。
主要是當(dāng)需求很高時(shí),可以在公共云中運(yùn)行工作負(fù)載,然后當(dāng)一切恢復(fù)正常時(shí),返回到私有云。這種方法減少了在云計(jì)算資源上花費(fèi)的間接費(fèi)用。此外,關(guān)鍵是敏感信息、數(shù)據(jù)和關(guān)鍵應(yīng)用程序可以保存在私有云中。相反,敏感度較低的數(shù)據(jù)和應(yīng)用程序可以在公共云中存儲(chǔ)和運(yùn)行。
選擇DevOps云計(jì)算解決方案
如果說云計(jì)算就像樂器,那么DevOps就是演奏它的音樂家。
云計(jì)算和DevOps發(fā)揮著至關(guān)重要的作用,并且是IT戰(zhàn)略中相互聯(lián)系的部分。云計(jì)算和DevOps共同幫助IT部門將重點(diǎn)問題從“可以在不中斷的情況下走多遠(yuǎn)?”轉(zhuǎn)到“多久可以提供新的和穩(wěn)定的功能?”或“可以快速地部署新服務(wù)嗎?”
當(dāng)今,企業(yè)正在尋找借助云計(jì)算、DevOps和自動(dòng)化實(shí)踐進(jìn)行數(shù)字化轉(zhuǎn)型的方法。
版權(quán)聲明:本文為企業(yè)網(wǎng)D1Net編譯,轉(zhuǎn)載需注明出處為:企業(yè)網(wǎng)D1Net,如果不注明出處,企業(yè)網(wǎng)D1Net將保留追究其法律責(zé)任的權(quán)利。