當(dāng)一個(gè)名詞被不斷提及,就是火了嗎?但是,受關(guān)注的程度與被了解并很好的執(zhí)行并不一定成正比。DevOps,就是一個(gè)例子。對(duì)于DevOps的定義,有人說(shuō)是一組流程、有人說(shuō)是一個(gè)概念、有人說(shuō)是應(yīng)用開發(fā)和系統(tǒng)運(yùn)維團(tuán)隊(duì)執(zhí)行任務(wù)的混合體、有人說(shuō)是一個(gè)新興的軟件集成以及IT業(yè)務(wù)的溝通協(xié)作方式、還有說(shuō)是一個(gè)軟件方法……這些理解,你認(rèn)為都對(duì)嗎?
DevOps的演進(jìn)
先來(lái)看看DevOps是怎么發(fā)展起來(lái)的?一開始DevOps由兩個(gè)運(yùn)動(dòng)組成,第一個(gè),被稱之為敏捷系統(tǒng)管理的運(yùn)動(dòng),觸發(fā)點(diǎn)是2008年舉辦的Velocity Conference會(huì)議,主要討論關(guān)于Web的運(yùn)維,以提高整個(gè)web運(yùn)維的效率。之后,2009年的時(shí)候由Gordon Banner正式地推展敏捷系統(tǒng)管理的運(yùn)動(dòng)。第二個(gè),對(duì)DevOps的歷史有影響的運(yùn)動(dòng)叫企業(yè)系統(tǒng)管理的運(yùn)動(dòng),在2000年中旬的時(shí)候,由John Willis和Mark Hinkle這兩個(gè)人開始。這兩個(gè)運(yùn)動(dòng)的結(jié)合也就是DevOps的運(yùn)動(dòng)。
開發(fā)人員VS運(yùn)維人員
平時(shí),在工作當(dāng)中,我們常常遇到相關(guān)不同角色的一些同事,甚至同處于一個(gè)項(xiàng)目中,像開發(fā)人員,環(huán)境準(zhǔn)備人員,測(cè)試人員,運(yùn)維人員,以及負(fù)責(zé)應(yīng)用支援的人員、業(yè)務(wù)主管等。但經(jīng)常各自劃分了'領(lǐng)地',開發(fā)的同事常會(huì)告訴我們說(shuō),我用了70%時(shí)間來(lái)等待;環(huán)境準(zhǔn)備人員常常談?wù)摏](méi)有多余的環(huán)境了;測(cè)試人員常常告訴我們說(shuō),測(cè)試環(huán)境不夠真實(shí),運(yùn)維的同事會(huì)說(shuō)應(yīng)用發(fā)布就是噩夢(mèng),應(yīng)用支援的同事更慘,常會(huì)問(wèn)怎么找問(wèn)題?但是,你發(fā)現(xiàn)沒(méi),里面缺少了一個(gè)很重要的角色,就是業(yè)務(wù)主管,“業(yè)務(wù)主管常常會(huì)對(duì)IT部門說(shuō):“你們IT在做什么,我們正在錯(cuò)過(guò)外面所帶來(lái)的業(yè)務(wù)的機(jī)會(huì),我需要新的應(yīng)用,我需要新的功能……”。可見,各角色僅關(guān)注于自己本身的工作,而非各角色之間的分界點(diǎn)。
IT正處在變革當(dāng)中,現(xiàn)在大家在談?wù)撟疃嗟木褪菓?yīng)用經(jīng)濟(jì),因?yàn)椋瑧?yīng)用經(jīng)濟(jì)所帶來(lái)的機(jī)會(huì)是巨大的。但是,很多時(shí)候我們發(fā)現(xiàn)沒(méi)有很好的抓住這些機(jī)會(huì),其實(shí)這是由于IT創(chuàng)新能力的低下。面對(duì)業(yè)務(wù)所帶來(lái)的需求,我們?nèi)赃x擇的是二十年前開發(fā)應(yīng)用的方式來(lái)進(jìn)行應(yīng)用運(yùn)維,這說(shuō)明,IT需要補(bǔ)足這個(gè)差距。
到底是什么導(dǎo)致停滯不前呢?根據(jù)Forrester的調(diào)查數(shù)據(jù)顯示,低于40%的決策者認(rèn)為IT能按時(shí),按預(yù)約提供新服務(wù),75%的決策者認(rèn)為有必要提高整體IT的效率,這里面包含 IT的效率、創(chuàng)新的能力、簡(jiǎn)化的流程、工作的效率。
DevOps的精髓,整體觀念
那么,問(wèn)題怎么解決呢?IT部門的骨干是有兩個(gè)最主要的工作部門組成的,一個(gè)是研發(fā)(Development)另外一個(gè)是運(yùn)維部門(Operations),他們都有自己的思維方式來(lái)做事,研發(fā)同事常會(huì)需要快速地創(chuàng)新,寫簡(jiǎn)易的代碼,簡(jiǎn)單使用,Agile交付等更多功能上。而負(fù)責(zé)運(yùn)維的同事有另外一套思維模式,需要系統(tǒng)穩(wěn)定地運(yùn)行,最好是十年都不做任何的改變,完善的安全機(jī)制,更簡(jiǎn)易的管理步驟等等。
而如何把這雙方的差異點(diǎn)整合起來(lái),就是DevOps的精髓。DevOps(開發(fā)運(yùn)維)是Development與operation這兩個(gè)詞所組成的。CA公司認(rèn)為,DevOps所要達(dá)到的目的是確保穩(wěn)定的創(chuàng)新,使用敏捷開發(fā)來(lái)交付應(yīng)用,敏捷運(yùn)維來(lái)運(yùn)維應(yīng)用,這是DevOps整體的觀念。
整合開發(fā)和運(yùn)維人員
目前,在高速競(jìng)爭(zhēng)的市場(chǎng),如何快速地把應(yīng)用推出,如何快速地交付新的服務(wù),成為IT不可避免的問(wèn)題。那么,一套增強(qiáng)開發(fā)及運(yùn)維之間的集成,協(xié)作及溝通的方法是很有必要的。而DevOps恰巧就能協(xié)助各個(gè)企業(yè)解決這個(gè)問(wèn)題,快速地把應(yīng)用交付出來(lái)。
DevOps首先,可以更快地交付業(yè)務(wù)的價(jià)值,在服務(wù)交付的過(guò)程中打破孤島,即打破開發(fā)與運(yùn)維之間溝通的成本;第二,整合開發(fā)和運(yùn)維的能力成為一個(gè)協(xié)作的團(tuán)隊(duì),他們不再是開發(fā),不再是運(yùn)維,而是IT的團(tuán)隊(duì)。第三,DevOps最主要專注的是端到端服務(wù)交付流程的變革。
當(dāng)實(shí)現(xiàn)整個(gè)DevOps的交付過(guò)程當(dāng)中,必須要確保流程的變革、新式工具的推廣、或者新工作流程推廣的時(shí)候是不影響安全性,應(yīng)用的兼容性,以及應(yīng)用的性能,這是DevOps所需要帶來(lái)的一個(gè)價(jià)值。
DevOps的終極目標(biāo),持續(xù)交付
那么 DevOps的終極目標(biāo)是什么?CA稱之為持續(xù)交付。DevOps打破信息的孤島,讓開發(fā)與運(yùn)維之間更好的協(xié)作。協(xié)作目的是確保應(yīng)用能快速地由開發(fā)流轉(zhuǎn)到測(cè)試,再到運(yùn)維。當(dāng)運(yùn)維遇到問(wèn)題的時(shí)候,能建制一個(gè)完整的閉環(huán)回到開發(fā)環(huán)節(jié)。
我們知道,一個(gè)應(yīng)用的開始都是由開發(fā)人員開始把我們的應(yīng)用開發(fā)完成了,當(dāng)然我們前端還有我們的相關(guān)業(yè)務(wù)部門,業(yè)務(wù)部門把這個(gè)需求提給開發(fā),開發(fā)的同事分析完需求之后進(jìn)行他們的開發(fā),開發(fā)完之后相關(guān)的代碼我們會(huì)放到我們的代碼庫(kù)上,這是大家現(xiàn)在常做的做法。
在一個(gè)持續(xù)交付的觀念里面,開始由相關(guān)業(yè)務(wù)部門根據(jù)需求提供給開發(fā)人員,開發(fā)人員分析完需求并并行開發(fā),開發(fā)完成后,相關(guān)的代碼會(huì)放到代碼庫(kù)中。這時(shí)候應(yīng)該有一個(gè)持續(xù)集成,也就是構(gòu)建自動(dòng)化(Continuous integration)平臺(tái),平臺(tái)提供開源的工具、持續(xù)集成的工具、build的工具來(lái)進(jìn)行建制持續(xù)的集成。
CA DevOps解決方案
持續(xù)集成的結(jié)果就是工件,工件可以存到代碼庫(kù)上,之后讓持續(xù)集成工具開始來(lái)呼叫CA的應(yīng)用發(fā)布解決方案,——CA DevOps解決方案,將會(huì)由工件庫(kù)把最新的工件取下來(lái),比如, ear file, war file, jar, exe 等等,這時(shí),會(huì)自動(dòng)結(jié)合發(fā)布清單把相關(guān)的應(yīng)用透過(guò)已經(jīng)定制好的發(fā)布流程,發(fā)布到SIT環(huán)境上去。
那么問(wèn)題來(lái)了,在正常的狀況下,手工進(jìn)行SIT的測(cè)試,為了實(shí)現(xiàn)持續(xù)交付的目的,自動(dòng)化的測(cè)試變成必不可缺的一個(gè)環(huán)節(jié)。在這個(gè)環(huán)節(jié)上CA DevOps解決方案能呼叫下一個(gè)解決方案(CA Service Virtualization)。CA服務(wù)虛擬化包含了兩個(gè)部分,第一部分是測(cè)試的發(fā)起端,它包含錄制網(wǎng)頁(yè)的一些測(cè)試腳本,也包含透過(guò)傳輸協(xié)議直接發(fā)起的測(cè)試,甚至包含移動(dòng)終端的一些應(yīng)用的測(cè)試。
另外一部分,是能把測(cè)試過(guò)程當(dāng)中應(yīng)用所依賴的第三方的內(nèi)外部的資源,透過(guò)服務(wù)虛擬化解決方案資源透過(guò)一定的手段虛擬出來(lái),這樣就能達(dá)到真正的自動(dòng)化測(cè)試。當(dāng)啟動(dòng)服務(wù)虛擬化之后,能自動(dòng)針對(duì)SIT環(huán)境上面所部署的應(yīng)用進(jìn)行自動(dòng)化完整的測(cè)試。
在測(cè)試過(guò)程當(dāng)中一切順利的話,下一步會(huì)回饋到自動(dòng)化的解決方案平臺(tái),將會(huì)針對(duì)下一個(gè)環(huán)境UAT的參數(shù)、配置,跟當(dāng)初所測(cè)試的工件做一個(gè)集合,然后發(fā)布到UAT環(huán)境上去,同樣,使用CA服務(wù)虛擬化解決方案,直接進(jìn)行自動(dòng)化完整測(cè)試。若測(cè)試過(guò)程當(dāng)中發(fā)現(xiàn)某一個(gè)錯(cuò)誤發(fā)生了,就能自動(dòng)地回滾。 CA DevOps解決方案平臺(tái)能自動(dòng)把應(yīng)用回滾成舊的版本,而且是在各個(gè)環(huán)境當(dāng)中都能自動(dòng)地都回滾成舊版本。
接下來(lái)CA DevOps解決方案平臺(tái)用同樣的工件結(jié)合同樣環(huán)境發(fā)布清單,把應(yīng)用完整地發(fā)布到生產(chǎn)環(huán)境上面去。而在生產(chǎn)環(huán)境上會(huì)面臨一個(gè)挑戰(zhàn),就是沒(méi)有辦法進(jìn)行任何流程或是交易測(cè)試。原因很簡(jiǎn)單,因?yàn)樵谏a(chǎn)環(huán)境上做任何測(cè)試都會(huì)影響到生產(chǎn)的數(shù)據(jù)。所以,往往發(fā)布之后是沒(méi)辦法進(jìn)行完整的測(cè)試,只能等到使用者上線使用的時(shí)候才可能發(fā)現(xiàn)問(wèn)題。但是在高競(jìng)爭(zhēng)的環(huán)境底下,當(dāng)發(fā)現(xiàn)問(wèn)題已經(jīng)太遲了。透過(guò)CA服務(wù)虛擬化解決方案,在測(cè)試環(huán)境上就開始進(jìn)行相對(duì)驗(yàn)證了,在這個(gè)場(chǎng)景下除了應(yīng)用是真實(shí)的,發(fā)起端、接收端都是虛擬的。這樣進(jìn)行完整應(yīng)用的交易測(cè)試以及確認(rèn)應(yīng)用發(fā)布完成,一切正常。
CA DevOps解決方案平臺(tái)還有一個(gè)特性,就是在發(fā)布過(guò)程當(dāng)中把所有的數(shù)據(jù)記錄下來(lái),比如,做過(guò)的動(dòng)作,進(jìn)行的工作,都完整地記錄下來(lái),供后續(xù)的發(fā)布報(bào)告分析。
DevOps的終極目標(biāo),也就是持續(xù)的交付。出發(fā)點(diǎn)是為確保提高整體IT的運(yùn)維,研發(fā),以及交付能力效率。CA DevOps解決方案平臺(tái)做到了這一點(diǎn)。
聯(lián)系客服