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