評估云計算廠商的DevOps工具和模型
大多數云計算服務供應商都不會認為,最有利可圖的云計算戰略是錙銖必較地按小時出租基于云計算的CPU周期或平臺服務。軟件即服務(SaaS)可能是三大云計算業務模式中最引人注目和***盈利能力的,因為它為客戶提供了取代大部分技術支持類型成本的功能,并可直接銷售給消費者。
但是SaaS的成功并不是一帆風順的。如果不使用DevOps工具和原則,那么建設和維護SaaS應用程序的任務就將快速成為云計算供應商們的運營噩夢。這些問題的***來源在于:為部署在云計算環境中的服務實現全生命周期過程的自動化。
云計算要求新的配置策略
在云計算的早期發展階段,SaaS部署的很多工作都必須通過手工或開發內部自動化軟件來完成。對于運營商們來說,其相關成本是相當高昂的,同時也會造成他們的客戶有服務質量不穩定的使用體驗,但是一個新的策略是有可能扭轉這些趨勢的。
云計算供應商在設計服務之后的傳統做法是開發他們自己的運行工具,這意味著這些工具必須進行定制以便于適應每個應用程序或應用程序組件的要求。這完全是一個低效且拙劣的過程。更新這一模式要求供應商在應用程序開發過程中開發用于云計算開發的工具,把開發和運行整合到同一個生命周期中。這一概念被稱為DevOps,這個術語的就是源于開發(Development)和運營(Operation)。DevOps工具和原則并不僅限于云計算,但是似乎他們是在云計算時代中出現的。
所有DevOps應用程序都是一個配置引擎和一組應用程序編程接口(API)的組合,而API可連接應用程序以管理接口,從而用于設置云計算服務、私有服務器以及網絡管理系統。應用程序需求描述可驅動配置引擎;在運行時,這個引擎可根據應用程序描述來開發管理命令。這些命令可對應用程序進行設置,以便于應用程序能夠正確執行。
在一個成熟的DevOps環境中,開發人員可根據應用程序來編制配置說明。但是,DevOps工具和方法現在正在被使用,它可允許開發人員對已開發完成的應用程序生成配置說明。
DevOps工具:腳本程序與容器之爭
DevOps工具有兩種可能的模式:一種是純腳本程序模式,而另一種是容器模式。
基于腳本程序模式的DevOps工具將會讓Linux用戶感到非常熟悉,這是因為它們允許保存命令,并使用可替換參數運行。大多數的流行商用配置自動化產品和管理自動化產品都屬于這個基于腳本程序的模式。其中包括微軟公司的Windows Azure PowerShell CmdLets、Amazon Web Services的CloudFormation,以及一個開源Opscode開發項目Chef。
而容器模式則是創建應用程序的一個抽象,我們可稱之為容器、對象。然后,配置引擎就處理這個容器以便于發布命令。在眾多基于容器的DevOps工具中,只有一個被廣泛采用:開源項目Canonical公司開發的Juju。使用Juju的容器模式可實現***的承諾。
Juju的好處
容器模式的優勢在于它允許云計算供應商建立一套描述應用程序部署和生命周期的可重用控制,并在需要的時候運行。
這一點遠不同于基于腳本程序模式,后者要求供應商把應用程序需求(也被稱為特定域語言,DSL)翻譯成為腳本程序可替換的參數。這可能需要通過腳本程序跟蹤應用程序的變化,以確保應用程序仍然能夠正確運行。
相比較而言,Juju的目標在于使翻譯任務成為一個純粹的政策說明。這意味著云計算供應商能夠潛在地賦予用戶一個進行定制化和設置的角色,對于供應商來說,這使得應用程序描述的維護工作更為輕松了。
Juju是開源的這一事實也使它適合于希望定制化工具以支持他們自己服務計劃的云計算供應商,但是還有大量其他的開源可定制DevOps工具和項目正對Juju的地位提出挑戰。其中具有代表性的有 Dell開發的Crowbar、OpenStack的 Donabe項目,以及Canonical的Ubuntu Orchestra。雖然開源增強總是一個選擇,但是云計算供應商最終將從那些綜合性DevOps工具中受益,這些工具能夠提供正確的功能,關注于開發腳本程序和容器。
使用DevOps工具銷售SaaS
云計算供應商應當從在開發應用程序時就為應用程序設置DevOps配置需求入手,開始實施他們的DevOps戰略。這通常涉及所有的配置規則,其中包括軟件實例、數據庫實例以及網絡尋址的多個設置規則。不同DevOps工具的功能在這些領域中都是不同的,因此針對項目功能和工作計劃審查應用程序需求就非常重要,這樣可確保所有一切都在朝著正確的方向發展。
雖然最近開發的云計算應用程序都沒有遵循DevOps模式,但是那也有助于驗證評估DevOps工具能夠提供創作模板能力(即描述開發過程以外的部署工作),并可與現有應用程序整合。
雖然DevOps工具的***價值在于開發在云計算供應商自有基礎設施內運行的SaaS應用程序,但是它還被應用于幫助客戶遷移應用程序至基礎設施即服務(IaaS)或平臺即服務(PaaS),并且它還具有在云計算聯盟中整合多個供應商的潛力。因為,所有這些應用程序容錯性較低、人工支持的潛在成本較高,所以在云計算中廣泛使用DevOps將可以大大提升云計算盈利能力和客戶滿意度。在一個競爭日益激烈的云計算市場中,這絕對是至關重要的。