趙貴根
“云計算”熱正席卷全球。作為一種按需交付服務的商業模式,云計算為企業提供了一種快速部署和應用IT技術的方法。不過,云計算也給IT人員帶來了不小的麻煩。他們很長時間以來一直致力于SOA的治理行動,多年來對Web服務環境實施生命周期管理的IT人員剛剛看到一點成績,而如今需要對這些策略進行修改,以應對部署得越來越多的基于云計算的服務。因為基于云計算的服務很可能根本不在他們的控制范圍之內。
從某種程度上,云計算對SOA治理來說是好事情。因為云計算的存在使得治理變得非常關鍵。
從理論上講,云幾乎具有交付一切服務的能力,從應用到中間件、到應用平臺,從存儲、到流程處理再到硬件資源,都可以采用訂閱的方式按需交付。然而,在云計算的世界里,IT人員如何才能進行有效的管理呢?
云之所以引發了人們對治理的關心,是因為云讓我們把信任的邊界從企業內部擴展到企業以外。這一變化引發了一個新的問題,那就是把云服務與企業內部的應用整合起來是一個巨大的難題。
換句話說,云讓SOA治理復雜化了,如果沒有有效的治理,任何人、任何時候,只要他愿意都可以部署一個新的云服務,他也能調用這個服務,或者能把這個服務集成到日趨復雜的消息系統中。
在缺少治理的環境中,相似的云服務的規劃和優化將變得異常困難。另外,隨隨便便就部署的那些云服務也可能破壞業已建立的信任關系,這種信任關系是生產性BOA環境的基礎。
簡單來說,云服務可能繞過最有效的關于服務治理的實踐規范。由于很多IT功能甚至所有IT功能都沒有經過IT部門而被外包出去,IT部門就很難依據之前建立的策略來規范這些云服務,包括服務的組合、集成、安全、管理等實際上都脫離了IT人員的監管。
更進一步說,云服務與企業核心SOA環境存在本質上的區別,IT人員往往并不知道哪些最佳治理實踐(如果有的話)適合新的環境。而且在大多數公共云或者私有云環境中,也缺乏企業以前部署的用以支持Web服務的很多組件,比如服務注冊、服務級別管理代理和控制臺。
云環境是無記錄、無支持以及非標準化服務的溫床。只要設想一下,無需IT部門的批準,使用者就可以訪問外部提供的云服務,這一點就不言自明。
另外,外包的云服務很有可能根本就不符合各種Web標準,如XML、SOAP、WSDL、UDDI等,而企業內部的SOA環境都是基于這些標準建立的。
隨意使用的公共云服務可能導致對現有IT環境的破壞,更為嚴重的是它還可能阻礙IT部門對這些不足進行修正。一旦這些不邀自來的客人在企業的日常運營中站穩腳跟,IT部門會發現自己陷入了無休無止的監控,以及強迫它們符合服務的設計、維護、安全以及版本等各種最佳實踐。
云計算的另一個問題是人們對云計算的陌生。也許隨著云計算的日益普及、并最終成為主流,這一擔心會煙消云散,但是畢竟還需要一段時間。
就企業部署云服務來說,最好的方法是有選擇性地外包一些特定的應用和基礎設施服務,而不是不分青紅皂白盲目跟風。因此,在云和SOA治理方面的首要決策是決定哪些服務應由哪個公共云來提供,從而避免企業內部不必要的重復。
復雜
在眾多有關云服務的宣傳中,盡管我們很難看到關于在云服務環境中進行SOA治理的案例報道,但是,大多數公共云服務供應商還是為管理應用、虛擬機以及部署在它們自己環境中的服務級別等提供了治理工具。
如今,能提供對運行于各種各樣公共云與私有云上的服務進行管理的工具的供應商也是越來越多。但是,目前云計算環境尚不太成熟,所以過去這些SOA治理工具供應商現在還無法提供有效的工具,來管理基于云的應用、交易、消息傳送和服務級別。
而且,即使云服務真的成為主流,這些服務也從一開始就是按照SOA的治理規范創建的,在管理它們時仍然面臨很多挑戰。這些困難源于云計算這一新模式本身的特點:基于專有技術的公共云、虛擬資源池以及通過Mashup組合服務等。
全面的SOA治理要求用統一的策略來管理所有的應用、平臺、網絡域(在一個稍微復雜一些的企業網絡環境下,這一點就非常困難),或者在各個自治域之間按照一定的規范建立聯盟(或者聯邦)。
管理企業內部或者B2B供應鏈的SOA聯邦是非常復雜的,因為需要把內部的應用域與一個或者多個外包商(如亞馬遜、Google、微軟、Salesforce.com等)提供的公共云服務聯系起來,形成一個整體。要想達成目的,你需要有贏得諾貝爾和平獎的談判技巧。
操作性
隨著云計算市場解決了各種各樣的聯邦問題,接下來,服務供應商和企業用戶就可以訂立多層次的協議,包括身份管理、服務級別管理、存儲管理以及其他值得關注的核心問題。
而現在,在企業SOA環境與公共云服務之間幾乎沒有任何統一的策略,因而那些選擇公共云服務的企業面臨巨大的風險。
如果企業之前沒有和這些公共云提供商達成任何關于云服務的穩定性和可用性的協議,就基于這些供應商提供的公共云服務來構建自己的業務系統,將給業務帶來風險。因為即使這些公共云服務保持接口不變,其具體行為仍然可能發生變化,而用戶也許根本就不知道。
SOA有一個最基本的原則,即分布式應用環境必須與平臺無關,SOA治理的基礎設施也要遵循這一原則。比如,在純SOA環境中,外部的API應該與具體實現它的平臺無關。
然而,率先體驗云計算的企業常常違背這一基本原則,它們把自己的應用建立在一些公共云服務上,而很多服務采用的恰恰是專有的API、專有的開發工具、特殊的虛擬層和特殊的治理策略,雖然很多云服務為符合開放的SOA和Web 2.0標準已經做了一定程度的修改,但并不徹底。
復雜性
大多數的SOA治理僅僅關注了企業IT環境的表面,比如僅僅管理了一部分運行在應用層的服務以及那些符合XML、SOAP、WSDL以及核心SOA規范的Web服務。而實際上,很多公共的云服務還提供更深層的按需服務,從應用層到軟件開發平臺、集成中間件再到硬件層。比如,虛擬的、基于網格的“硬件資源作為服務”的資源池就是一種非常受歡迎的云服務,能提供非常大的處理能力和存儲空間。
由于上述原因,隨著云服務形式和種類的日益豐富,對云計算環境進行治理已經超過了目前SOA治理工具的能力范圍,云計算環境使得對所有的服務進行統一的規劃、實際、提供、監控和控制的想法幾乎成為不可能。
事實上,有一功能被證明是進行云治理的殺手級應用,這就是阻止未經允許的虛擬機在公共或私有的虛擬基礎設施上運行。這一問題有時被稱為是“虛擬機蔓延”,虛擬機蔓延不僅帶來了維護上的麻煩,而且還會消耗CPU、存儲和網絡資源。
越來越多的商業性的管理工具提供了控制虛擬機蔓延的功能,而且不受限于一個具體虛擬化平臺。同時,虛擬化平臺的供應商,如VMware、Citrix、微軟和一些公共云服務供應商也把這一功能作為它們的管理工具的主要賣點。有時候,這一功能被稱為“實例管理”,是傳統的SOA治理工具所不具備的。