Puppet和Chef這樣的工具幫助人們?cè)谠粕鲜褂肈evOps成為可能,但是當(dāng)涉及到管理和分析云應(yīng)用時(shí),仍然會(huì)有障礙。
軟件開發(fā)從一個(gè)應(yīng)用程序的架構(gòu)開始。傳統(tǒng)的應(yīng)用是單片的,一個(gè)承載著業(yè)務(wù)邏輯的單獨(dú)載入的鏡像運(yùn)行在一個(gè)單獨(dú)的機(jī)器上。但是隨著多年來人們對(duì)分布式計(jì)算興趣的日益增加,以及易于部署和重用的軟件組件化,催生了一種新的模型。
無論你是叫它面向服務(wù)的架構(gòu)(SOA),模塊計(jì)算還是Web Service,這種新的模型將應(yīng)用劃分成多個(gè)部分,然后用工作流接口連接在一起。開發(fā)人員必須發(fā)送所有的整合和工作流的信息給那些負(fù)責(zé)部署和管理應(yīng)用的人員。這種在開發(fā)和運(yùn)維之間的溝通,加上促進(jìn)這種溝通的流程,在2009年被定義為DevOps。今天,DevOps也指使用實(shí)時(shí)開發(fā)數(shù)據(jù)來自動(dòng)化應(yīng)用部署的工具。
云的DevOps截然不同
云計(jì)算正在重新定義DevOps。主要是因?yàn)榧傻膯栴},云部署比本地應(yīng)用部署更復(fù)雜。云是一個(gè)動(dòng)態(tài)的資源,所以用戶期望能夠有對(duì)故障轉(zhuǎn)移和云爆發(fā)的支持。這意味著應(yīng)用組件和整個(gè)應(yīng)用不會(huì)一直在他們初始的位置上。這也意味著工作流和連接會(huì)在負(fù)載或者一個(gè)故障模型操作中變化。于是云管理工具很自然的開始影響,并且也同時(shí)越來越多的受到DevOps工具和原則的影響。
有兩種常見的DevOps方式:基于腳本和基于模型或?qū)ο?。腳本模式在前云時(shí)代占據(jù)主導(dǎo)地位。但是,許多DevOps大牛擔(dān)心腳本太過程化,只描述了部署和整合的步驟,而不是最終的產(chǎn)品。而一個(gè)定義最終目標(biāo)的DevOps模型需要更多的工作,它可以在各種各樣的基礎(chǔ)架構(gòu)和應(yīng)用組件之間移動(dòng),使之更加適合云。
腳本工具在云計(jì)算中仍然很常用。但是另外兩個(gè)工具一直在角逐第一的位置:Puppet,展現(xiàn)了一種基于模型或者聲明性的腳本撰寫方式,另一個(gè)是Chef,則采用過程化或者指令的方式。
Chef是一個(gè)指令式的DevOps框架,用Ruby來撰寫腳本。Chef成為代表DevOps的開發(fā)方的強(qiáng)大選項(xiàng)的同時(shí)也很難于學(xué)習(xí)。
然而與Chef不同的是,Puppet對(duì)于系統(tǒng)管理員來說通常更加容易學(xué)習(xí)。Puppet是使用基于JSON數(shù)據(jù)模型的一種聲明式語言。由于Puppet是非過程化的,它成為了DevOps的腳本形式和模型形式之間的橋梁。
云端DevOps的另一大進(jìn)步是云應(yīng)用拓?fù)浜途幣乓?guī)范(TOSCA),一個(gè)由行業(yè)聯(lián)盟OASIS制定的開放標(biāo)準(zhǔn)。TOSCA是一個(gè)基于模型的架構(gòu),將部署和管理定義成抽象的層次化的組件模式屬性。其結(jié)果是,TOSCA是一個(gè)理想的用來描述復(fù)雜應(yīng)用的架構(gòu)。另外,TOSCA還產(chǎn)生了至少一個(gè)開源的實(shí)現(xiàn)—OpenTOSCA。
TOSCA對(duì)未來的影響比當(dāng)前的支持更重要。云是關(guān)于抽象資源比如虛擬機(jī),虛擬網(wǎng)絡(luò)和虛擬服務(wù)在資源池上的具體實(shí)現(xiàn)。這種方法正適合于基于模型的DevOps,并且受到云應(yīng)用變得更動(dòng)態(tài)的驅(qū)使,同時(shí)改變了運(yùn)維和開發(fā)。
DevOps背后的推動(dòng)力
專家們相信敏捷性是DevOps最大的推動(dòng)力。而移動(dòng)寬帶和云計(jì)算又接著推動(dòng)對(duì)于敏捷性的需求。一個(gè)未來的云應(yīng)用會(huì)是一組連接在一起的組件,幾乎可以瞬間對(duì)事件進(jìn)行響應(yīng),比如一個(gè)移動(dòng)工作人員,一個(gè)無人駕駛汽車或者另一個(gè)實(shí)時(shí)的需求。盡管這些應(yīng)用也許要更容易建模而不是用腳本,無論何種方式,應(yīng)用開發(fā)和生命周期管理正在演化成更適應(yīng)云。因此,DevOps應(yīng)該成為一個(gè)業(yè)務(wù)技術(shù)規(guī)劃流程中的關(guān)鍵部分。
盡管DevOps正以云的面貌不斷演化,然而還有一些挑戰(zhàn)要克服。比如,一些DevOps工具,即便是最新的那些,當(dāng)用來管理應(yīng)用執(zhí)行的時(shí)候還是有短板。許多云部署使用一種耦合分析的方法來管理。在這種方法中,云收集信息并提供分析來管理一個(gè)資源池,不需要關(guān)聯(lián)到特定應(yīng)用的特定資源。但是,這對(duì)于那些高動(dòng)態(tài)的應(yīng)用和被用來只是回答某個(gè)用戶的問題的個(gè)性化應(yīng)用來說可能是個(gè)挑戰(zhàn)。當(dāng)管理數(shù)據(jù)只提供在一段時(shí)間內(nèi)一池的資源信息時(shí),要判斷這些應(yīng)用存在的問題是很困難的。
原文鏈接:http://www.searchcloudcomputing.com.cn/showcontent_87825.htm