曾經看到一篇題為“Take the technology out of SOA, and see what you get”的文章,從標題上就可以大概猜到文章是試圖撇開技術因素來考量SOA的概念。讀完全文,非常認同文章的觀點——SOA只不過是一種設計模式而已。作為一種設計模式,除了應用在資訊系統中,也同樣適用在其他系統的設計中。
文章中以麥當勞的服務系統舉例,稱之為“以人力為基礎的面向服務的架構(a human-based SOA)”,非常有意思。大家都知道在國外,你可以駕著車享受麥當勞的服務。不用離開車,首先你開到一個卡通人前對對講機說出你要幾號套餐,然後向前開到下一個視窗付款並拿你的食物。這個簡單的系統基本上包含了兩個服務:接受訂單服務和履行訂單服務,但它是完全符合SOA要求的。試想如果麥當勞發現因為周圍的雜訊幹擾嚴重影響對講機的工作,或者想提供多語種的訂單服務,她能夠容易的替換原有的接受訂單服務,例如:建立一個電話聲訊中心(Call Center),甚至選擇把這個服務外包出去。因為遵循SOA的系統中,服務提供者(Service Provider)的變化,不會影響其業務本身。在麥當勞的系統中,沒有涉及資訊技術,但同樣做到了面向服務的架構。
從這個有趣的例子裡,還能聯想到其他的一些東西:
麥當勞的系統可以看作是由兩個服務組成的一個複合應用。SOA設計賦予它重組的靈活性。麥當勞可以隨心所欲的替換服務來提升效率,降低成本,或者增加客戶體驗。例如:選擇外包接受訂單服務以獲得規模效益,或者是提供額外的客戶體驗—多語種服務。這樣就比較容易理解,SOA對企業的資訊系統的好處,這個好處在於商務程序的快速重組,而不是採用了最前沿的新技術。
既然SOA是從流程設計的角度去理解的,那麼它的理念的主要聽眾不應該是資訊技術人員而是業務人員。也就是為什麼SAP一直在推動商務程序專家社區(Business Process Expert, BPX)的發展。因為成為商務程序專家的公司資訊系統關鍵使用者才是設計和創新的主體力量。
另外,在這個例子裡,也可以體會到標準很重要。標準化是麥當勞快餐的基礎,同樣在她的服務系統中的標準化(服務的介面,模組化設計),都是實現SOA不可或缺的內容,不僅是在IT系統之中來考察這個問題是這樣。
SOA的概念被宣傳衍生到各種技術平台技術手段中,其實非常象當初的面對對象概念。面對對象的概念提出來的時候,主要是作為在軟體系統設計中對客觀世界進行抽象的新方法。然而很快IT業界幾乎所有的東西都趕時髦地貼上了“OO”的標籤。恐怕Gartner在1996年適時地提出了面向服務架構的思想的時候,也未曾料想它被如此運用。
那麼技術對SOA是什麼角色?應該說,技術讓SOA的實際運用成為可能(Enabler)。譬如:面對對象的方法也可以用傳統的程式設計語言去做實現,但一直等到支援面對對象程式設計語言的推出才廣泛的被軟體工業採用。具備了各種模組化組件技術和互連網的長足發展,SOA的在業務中才具備了實用性。這也是為什麼SOA概念提出10年後才被炒作的沸沸揚揚。
把技術因素從SOA中剔除,SOA只不過是一種設計模式而已。只有本著這樣的認識去運用SOA,才能夠真正掌握其精髓,而不是淹沒在技術細節的大海裡。