從樂高玩具到麗江古城--理解SOA概念的三個比喻
發表于:2007-08-30來源:作者:點擊數:
標簽:soa
從我第一次聽說 SOA 到現在有幾年的時間了,其間和各種各樣的人士有了各式各樣的討論,越來越發覺這不是個可以用定義來說得明白的概念,以前軟件行業里還沒有個詞容易引起如此多的非議與爭論,我有時覺得SOA很想禪宗里講的,“說是一物即不中”。其中最難的,
從我第一次聽說
SOA到現在有幾年的時間了,其間和各種各樣的人士有了各式各樣的討論,越來越發覺這不是個可以用定義來說得明白的概念,以前軟件行業里還沒有個詞容易引起如此多的非議與爭論,我有時覺得SOA很想禪宗里講的,“說是一物即不中”。其中最難的,就是把這樣一個抽象的概念說給沒有技術背景的人去聽,建立概念唯一的辦法就是利用比喻。在我聽說過的幾十個關于SOA的比喻之中,有幾個比喻得到更多人的認同。那些想把這個概念說給業務人員和管理者的技術人員,不要再冒險了,用這幾個比喻試一下。
樂高玩具—作為一種設計哲學的SOA
這是最早的一個成功的比喻,傳統的應用好比是普通的玩具,不可拆卸和拼接?;赟OA的應用都是由更小的服務組件組成的,如同樂高玩具的模塊。用樂高玩具可以搭建各種不同的形狀,好比可以實現不同的應用,樂高玩具的模塊式基于標準的,而且可以重用。這個比喻的好處是很快給非技術人員建立一個頭腦中的形象,在一個研討會里面,組織者發了一些樂高玩具的模塊,讓客戶們自己做出一些東西來。由此很快讓聽眾明白,他們就是在做和軟件
開發類似的事情。
也許有人會說,SOA那么復雜,用小孩玩具來比喻是否太淺顯了,這時,進入深層次探討的機會來了??瓷先?,樂高玩具這么簡單,似乎沒什么深究的。這背后隱含了一種設計哲學,設計樂高玩具的團隊都是一群擁有博士的設計專家,他們必須解決的一個矛盾是,如何把標準,松耦合,模塊的功能,力學等要素在設計和規劃的時候統統解決,留給使用者的,只有玩樂的樂趣。一個有趣的事實是,樂高玩具這樣一個看上去如此簡單的東西一直沒有模仿者。
軟件工程師都可以用十分鐘說他知道SOA是怎樣一會事了,就像所有人看到樂高玩具時一樣。然而,當一個人用設計者而不會玩家的角度來理解樂高和SOA類似的設計哲學時就會發現,兩者的服務對象其實正是不需要關心技術的人,而且,他們都是為技術買單的人。工程師的位置,到底是個玩家,還是設計者?作為玩家,工程師懂得似乎多了一點,做為設計者,他還有太多東西要學,就像要成為樂高玩具的設計者一樣。
電視與電腦—一個基于標準的結構
修電視比修電腦難多了,雖然電腦比電視復雜多了。因為電腦有一個基于標準的結構,總線結構,即插即用的契約標準,這些IT界的流行語塑造了PC行業。SOA也擁有幾個標準的參考結構,總線,松耦合這些理念和PC行業的基本理念完全相同。這個比喻的好處是,電腦是一個更為具體的例子。這個例子隱含了用比喻說技術的幾個規則。第一,被比喻的事物之間一定要有同構,這是比喻的一個邏輯前提,就是說在基本結構上,兩者的設計理念是近似的。第二,用于比喻的事物最好是人們喜聞樂見的,通俗的,第三,至少可以舉出幾點證明兩者的相似之處。
城市規劃—SOA的實施需要一種循序漸進的模式
技術總是跳躍的,應用系統永遠是中庸的。應用在這個例子里面被比喻為普通的建筑物,而作為企業架構的SOA實施則被比喻成為一座城市。城市的演進必然是循序漸進的,這比喻了SOA的實施是一個旅程,比如,北京的交通總是難以解決擁堵的問題,幾個環路的辦法實際上等同于EAI的辦法,結果是總線擁塞。如果把北京城區的許多大院打散成為更小的社區,類似于將應用的顆粒度變小,象舊金山那樣,很多地方至少不會堵死.然而這個改造需要循序漸進的實施方式,想想為了奧運會北京的地鐵花了多少時間來與地下的管道打交道就知道,企業應用架構的改造有多復雜。
正面的例子的是麗江古城,這座規劃于八百年前的城市,現在仍然生機勃勃,因此被稱為“活的古城”。用一條河流分成不同水道流經整個古城,每家門前都有流水聲,可以用水洗衣,做飯,所有的街道按照經絡學說布置,所有的街區都成為在同一基礎設施上的服務,最有意思的是,作為市場的四方街,采用了自動水沖洗設施。整個的地勢東高西低,四方街是中間高,邊緣低,因此每天人們用擋板把水累積高時,水就可以自動沖擊街面了。這種設計,據說,阿姆斯特丹也有一個,只是不知道那一個更早。我們可以說,麗江古城的設計是面向服務的,水就是他們的公共服務。他們還通過一些規則來,規范水的使用,比如在以前,清晨的水在同一時間,所有人可以用來做飯,下午的某個時間,所有人都可以洗衣服。SOA里面講的,服務契約,管控規則,基礎設施優化都可以看到。
原文轉自:http://www.kjueaiud.com