目前,關于面向服務的架構,即SOA,和有關如何“正确”建構SOA的争論無處不在。我個人認為這一點都不奇怪,因為現在每一種新興的計算趨勢都會帶來不同的争論,并且每一家廠商都會借此機會大張旗鼓地宣傳他們的技術和産品是最适合使用者的,能夠幫助使用者充分利用每一種新興技術和産品的優勢。為了充分挖掘狂熱IT趨勢中的使用者興趣,廠商們都會積極地重新定位自身已有的産品組合。然而,糟糕的是,這種做法往往會造成認識上的混亂,甚至讓使用者對SOA喪失信心。因為廠商往往無法完全兌現他們所做的承諾,銷售的所謂适合SOA架構的技術解決方案也許最終證明并不合适。
想要對SOA建立正确的認識,首先必須認識到從概念上來講SOA是一種分布式的架構。作為SOA的核心要素之一,服務的目的是要實作與另一項服務的遠端通信,尤其是要實作資料互享。而SOA架構的目的則是要徹底變革IT系統的建構方式,由原來的建立專有的單一應用變為建立更為進階和整合的應用,這種應用的顯著特點就是充分利用已有的、可以共享和重複使用的功能,也就是服務。
在部署和使用可共享和重複使用的服務方面,分布式SOA架構是最為簡單易行的途徑。并且不論是從成本角度還是從技術角度,分布式SOA架構都對目前業界普遍認同的漸進式的部署提供了最好的支援,同時,使系統具備更強的部署靈活性、适應性和可維護性(例如,一個服務與整個應用來比,對服務的驗證和更新要容易得多)。
然而不幸的是,集中式的SOA架構方式還在被不斷開發和鼓吹。這些廠商們會不遺餘力地說服潛在使用者,他們所提供的技術和産品自始至終都支援SOA架構,且從設計伊始便是為了友善使用者建立SOA架構,而不管這些技術和産品原本是為JEE應用伺服器而設計,還是為EAI系統而設計。
換句話說,對分布式SOA架構持反對意見的廠商這樣做,是由他們所擁有的軟體架構的性質所決定的。一個EAI Hub,或是基于JEE的應用堆棧式架構,亦或其他解決方案,它們的消息請求都必須經過中央控制點,是以都不能被稱為真正的分布式解決方案。因為在它們的架構中,如果要執行某項服務請求,都必須通過Hub或中央伺服器來實作。集中式SOA架構會增加成本,限制資源的再利用,降低系統的靈活性,并且有可能導緻成本高昂的系統瓶頸。最糟糕的結果是,它還有可能成為使用者取消SOA計劃的第一原因。如果SOA架構的靈活性不足以滿足使用者的各項需求,無疑會導緻使用者對SOA架構的徹底失望。
如果我們來認真研究一下網際網路,大家就可以明白什麼是能夠成功滿足使用者需求的分布式架構。網際網路是迄今為止規模最大的分布式應用,SOA架構正應該具備網際網路的這種分布式特性。當使用者使用浏覽器點選URL連結時,其請求并不是通過安裝在伺服器或Hub的中央控制程式來路由,而是由浏覽器直接傳遞到請求頁面所在的網絡伺服器。這種方法非常适合網際網路,同樣也非常适合企業的SOA架構。由于請求不需要通過Hub或中央伺服器,是以網際網路的每個端點可以自由更新而不緻影響用戶端,也不會影響其他站點,更不需要更新Hub或中央伺服器。一個好的SOA架構就應該具備這種功能。
還好,具備SOA分布式特性的基礎架構解決方案确實存在。分布式SOA架構通過智能端點讓具備某種服務功能的應用自動找尋其他服務,并與其實作互相通信。這些智能端點同時還具備極強的可獲得性和高安全性能等企業級服務特性,進而能夠確定其具備現有的企業關鍵應用所需要的各種性能。分布式SOA架構就是建立一個平台中立、高度靈活且基于标準的IT環境,進而能夠更好地應對不斷變化的技術和業務環境。是以,分布式SOA環境能夠更好地滿足基于SOA架構的應用程式對各項技術和成本的要求。而且,分布式SOA允許客戶按照自己的計劃漸進地部署服務,比如一次部署一兩個服務,在未來根據具體的業務需要,為系統增加服務編排、注冊/貯存、管理等各項進階功能。
需要強調的是,我并不是說通過EAI系統、hub或JEE伺服器建立的集中式SOA架構的方式都不好,都是錯誤的。在許多情況下,現有企業應用很多都是采用上述形式實作的。我所要說明的是一個好的SOA架構不應該局限于完成EAI系統或JEE應用伺服器架構所能做的;實際上,一個好的SOA架構應該包容集中式的系統,并将它們融入到可重用的服務體系中,這才是分布式SOA架構的真谛。
在當今的航空業,低成本航空營運商正在挑戰資深航空營運商的業務。以航空運輸業的發展為例,我們可以從中發現分布式的優點同樣在航空業中得到了充分的展現。資深營運商都是依靠昂貴的Hub和星型模式,通過特定的專用運輸Hub輸送旅客。費用昂貴的大型飛機将旅客從小型機場運送到中央的Hub機場,在這裡,旅客才能繼續他們的旅程到達最終的目的地。在這種模式下,飛機營運成本更高,機場設施收費也會更高。随着低成本的航空營運商的興起,他們的運輸模式是分布式、點到點的模式(小型飛機往返于小型機場之間),為旅客節約了時間和成本而大受歡迎,這使得傳統Hub模式的航線正在面臨巨大的财務問題。
SOA使用者不需要更多相同的冗繁、昂貴的堆棧軟體架構。他們所需要的是專門針對滿足SOA發展趨勢而設計的好軟體,也就是如何使得已有(或新的)IT資産可以得到更好重用,如何令IT系統更加靈活,并能快速建構新應用。SOA的設計也需要更好的方法來實施和部署可重用的服務,并且做到能夠随時随地且簡易直接地使用這些服務。其實,使用者更需要低成本的SOA解決方案,令他們可以從小規模SOA做起,并随着業務的增長逐漸擴大規模,同時根據自身的需求增加服務品質和其他功能等;與此同時,使用點到點的通信方式,避免新增加昂貴的伺服器和Hub。簡而言之,SOA使用者需要的SOA架構必須真正具備SOA架構的固有特性,也就是分布式的特性。