日前,基礎(chǔ)設(shè)施自動(dòng)化服務(wù)商Puppet發(fā)布了2021年DevOps調(diào)查報(bào)告。這已經(jīng)是該系列報(bào)告發(fā)布的第十年,報(bào)告顯示,在超過(guò)2,650 名 IT、開(kāi)發(fā)和信息安全專業(yè)人士之中,有83%的IT決策者表示,他們的組織正在進(jìn)行DevOps實(shí)踐,以通過(guò)更優(yōu)質(zhì)的軟件、更快的交付、更安全的系統(tǒng)以及系統(tǒng)的理論體系,來(lái)釋放更高的業(yè)務(wù)價(jià)值。
DevOps,即Development(開(kāi)發(fā)人員) 和Operations(運(yùn)維人員)的組合詞。
這是一種重視軟件開(kāi)發(fā)人員和運(yùn)維人員之間溝通合作的開(kāi)發(fā)模式,是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開(kāi)發(fā)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。關(guān)于對(duì)DevOps的理解,有許多不同答案。亞馬遜云科技曾總結(jié)稱,DevOps集文化理念、實(shí)踐和工具于一身,可以提高組織高速交付應(yīng)用程序和服務(wù)的能力,與使用傳統(tǒng)軟件開(kāi)發(fā)和基礎(chǔ)設(shè)施管理流程相比,能夠幫助組織更快地發(fā)展和改進(jìn)產(chǎn)品。
DevOps模式
傳統(tǒng)的軟件開(kāi)發(fā)流程被稱為瀑布模型,分為開(kāi)發(fā)、測(cè)試、部署三個(gè)階段。軟件開(kāi)發(fā)人員先是用數(shù)周或數(shù)月的時(shí)間編程,然后將代碼交給測(cè)試團(tuán)隊(duì),最后將發(fā)布版本交給運(yùn)維團(tuán)隊(duì)部署維護(hù)。
現(xiàn)在,隨著軟件交付周期的縮短,同時(shí)為了應(yīng)對(duì)頻繁的更改需求,遲緩的瀑布式開(kāi)發(fā)已不能滿足各方要求。通常來(lái)說(shuō),伴隨著DevOps和敏捷開(kāi)發(fā),對(duì)應(yīng)的還有CI和CD兩個(gè)詞。CI是Continuous Integration(持續(xù)集成),CD對(duì)應(yīng)兩個(gè)詞語(yǔ),Continuous Delivery(持續(xù)交付)和Continuous Deployment(持續(xù)部署)。DevOps模式下可大幅提高開(kāi)發(fā)團(tuán)隊(duì)的工作效率,加快版本更新。不僅如此,產(chǎn)品被更快地交到用戶受眾,業(yè)務(wù)團(tuán)隊(duì)也能更快得到反饋、進(jìn)行響應(yīng)。
在對(duì)應(yīng)用程序發(fā)布的影響上,DevOps有幾點(diǎn)突出優(yōu)勢(shì)。
一是減少變更范圍。與傳統(tǒng)的瀑布式開(kāi)發(fā)模型相比,采用敏捷或迭代式開(kāi)發(fā)意味著更頻繁的發(fā)布、每次發(fā)布包含的變化更少。由于部署經(jīng)常進(jìn)行,因此每次部署不會(huì)對(duì)生產(chǎn)系統(tǒng)造成巨大影響,應(yīng)用程序會(huì)以平滑的速率逐漸生長(zhǎng)。
二是增強(qiáng)發(fā)布協(xié)調(diào)。靠強(qiáng)有力的發(fā)布協(xié)調(diào)來(lái)彌合開(kāi)發(fā)與運(yùn)維之間的技能鴻溝和溝通鴻溝,采用電子數(shù)據(jù)表、電話會(huì)議、即時(shí)消息、企業(yè)門戶(wiki、sharepoint)等協(xié)作工具來(lái)確保所有相關(guān)人員理解變更的內(nèi)容并全力合作。
三是自動(dòng)化。強(qiáng)大的部署自動(dòng)化手段確保部署任務(wù)的可重復(fù)性,減少部署出錯(cuò)的可能。
DevOps起源
DevOps是近十年才興起的開(kāi)發(fā)思潮,其思想萌芽于2007年。當(dāng)時(shí),Petrick Debois 參與了比利時(shí)一個(gè)大型數(shù)據(jù)中心遷移項(xiàng)目,負(fù)責(zé)測(cè)試和驗(yàn)證。他需要同時(shí)在開(kāi)發(fā)團(tuán)隊(duì)(Dev)工作和運(yùn)維團(tuán)隊(duì)(Ops)工作,兩個(gè)團(tuán)隊(duì)截然不同的工作模式使他非常困擾,但同時(shí)也給了他新的啟發(fā)。
2008 年,在多倫多敏捷會(huì)議上,Petrick Debois 提出“ DevOps”一詞。2009 年,第一屆DevOpsDays會(huì)議在比利時(shí)根特舉行。從此,“DevOps”一詞逐漸傳開(kāi)。2012 年, Puppet的Alanna Brown起草并發(fā)布DevOps調(diào)查報(bào)告,此后更多機(jī)構(gòu)參與報(bào)告調(diào)查,到了2014年,他們發(fā)現(xiàn),DevOps的采用正在加速。
現(xiàn)在,絕大多數(shù)的組織都正在引入DevOps以應(yīng)對(duì)更復(fù)雜的開(kāi)發(fā)需求和環(huán)境,DevOps已經(jīng)被視為企業(yè)發(fā)展的關(guān)鍵。最新的DevOps報(bào)告發(fā)現(xiàn),它所遇到的大多數(shù)團(tuán)隊(duì)都高度進(jìn)化,成為交付代碼最快、最頻繁、為開(kāi)發(fā)人員提供最緊密反饋循環(huán)的團(tuán)隊(duì),這些團(tuán)隊(duì)通過(guò)使用內(nèi)部平臺(tái)來(lái)實(shí)現(xiàn)諸如用戶和服務(wù)到服務(wù)的身份驗(yàn)證和容器編排等等。
DevOps工具
正如前文所說(shuō),DevOps集文化理念、實(shí)踐和工具于一身?,F(xiàn)在已經(jīng)有許多工具可以幫助組織更快速落地DevOps,下面介紹幾款流行工具和平臺(tái)。
Jenkins是開(kāi)源的CI/CD服務(wù)器,可幫助用戶自動(dòng)化交付流水線的不同階段。Jenkins流行的主要原因是其巨大的插件生態(tài)系統(tǒng),它提供1000多個(gè)插件,因此幾乎可以和所有DevOps工具(從Docker到Puppet)集成。
Git,最流行的DevOps工具之一,它是一種分布式SCM(源碼管理)工具。Git讓用戶可以跟蹤自己開(kāi)發(fā)工作的進(jìn)度。用戶可以保存自己源碼的不同版本,并且在需要的時(shí)候切回之前的版本。要將Git和DevOps工作流集成起來(lái),需要維護(hù)repository,團(tuán)隊(duì)成員可以向其中push各自的工作。
容器平臺(tái)Docker也可以一種重要的DevOps。使用Docker容器,可以在這些自定義環(huán)境中開(kāi)發(fā)和部署應(yīng)用程序,從而不必?fù)?dān)心兼容性問(wèn)題。它將應(yīng)用程序隔離成單獨(dú)的容器,因此應(yīng)用變得更加便攜也更為安全。Docker應(yīng)用程序也獨(dú)立于OS以及平臺(tái),用戶可以使用Docker容器代替虛擬機(jī),比如VirtualBox。
Kubernetes,容器編排工具。使用Kubernetes,無(wú)需將容器化的應(yīng)用程序綁定到某個(gè)單獨(dú)的機(jī)器里。相反,將它部署到一個(gè)機(jī)器集群里,Kubernetes會(huì)自動(dòng)化分發(fā)并在整個(gè)集群里調(diào)度容器。
一種開(kāi)發(fā)模式從出現(xiàn)到壯大,究其根本終究會(huì)落腳至 “降本增效”,而近期出現(xiàn)在大家視野的,稱可實(shí)現(xiàn)“十人可抵百人用”的“飛算SoFlu全自動(dòng)軟件工程平臺(tái)”,則實(shí)現(xiàn)了通過(guò)可視化編程的方式實(shí)現(xiàn)全自動(dòng)開(kāi)發(fā)、測(cè)試、運(yùn)維,即使用平臺(tái)的一個(gè)ID相當(dāng)于一個(gè)10人科技團(tuán)隊(duì),輸入流程圖即可實(shí)現(xiàn)自動(dòng)開(kāi)發(fā)、自動(dòng)測(cè)試、自動(dòng)運(yùn)維,人力成本被大大降低,程序員從“重復(fù)造輪子”中解放出來(lái),去關(guān)注更多的架構(gòu)設(shè)計(jì)的事情,而企業(yè)用戶在降本增效的同時(shí),則可更多地關(guān)注自身業(yè)務(wù)。
據(jù)了解,飛算SoFlu全自動(dòng)軟件工程平臺(tái)有三大核心技術(shù),包括:
可視化開(kāi)發(fā),改變傳統(tǒng)開(kāi)發(fā)方法,業(yè)務(wù)邏輯有可視化展示,降低開(kāi)發(fā)門檻,無(wú)需編寫代碼,在設(shè)計(jì)業(yè)務(wù)邏輯時(shí)就形成微服務(wù)應(yīng)用;
平臺(tái)組件,可視化平臺(tái)組件是一類通用的技術(shù)功能模塊,平臺(tái)支持循環(huán)條件判斷、函數(shù)調(diào)用,通過(guò)拖拽方式以及參數(shù)配置實(shí)現(xiàn)等同于編寫復(fù)雜代碼的業(yè)務(wù)邏輯,有別于通過(guò)組件排列組合;
管理方式,主要通過(guò)管理平臺(tái)來(lái)管理需求、研發(fā)、測(cè)試、部署、上線、運(yùn)維等整個(gè)軟件生命周期,沉淀經(jīng)驗(yàn)、積累知識(shí),將管理制度真正的落地。
研究下來(lái),飛算SoFlu全自動(dòng)軟件工程平臺(tái)可稱得上是近期比較有亮點(diǎn)的DevOps工具了,而可以幫助構(gòu)建DevOps實(shí)踐的工具還有許多,隨著DevOps的實(shí)施及相應(yīng)工具的普及,已經(jīng)有越來(lái)越多的團(tuán)隊(duì)受益。
Liberty Mutual Insurance的DevOps平臺(tái)高級(jí)總監(jiān)曾表示,從根本上說(shuō),DevOps使開(kāi)發(fā)人員能夠擁有、運(yùn)行和管理應(yīng)用程序或軟件的端到端交付。其團(tuán)隊(duì)部署代碼的速度加快了200倍,創(chuàng)造了更高的穩(wěn)定性,使其能夠進(jìn)行更多的實(shí)驗(yàn),在更短的時(shí)間內(nèi)推出新產(chǎn)品和功能。
審核編輯:符乾江
評(píng)論