原文地址:http://news.csdn.net/n/20070828/108019.html
記者:請問你是怎么理解SOA的?
孟巖:我這個理解來說下來就是,有這么大概幾個過程,也分成這么幾個階段。最早就是03年左 右,我剛到CSDN的時候,那個時候呢,SOA有一段的這個宣傳的這種高潮,各大公司,包括微軟、IBM、Oracle、BEA啊,都在打SOA,所以當 時我們作為技術媒體,不得不了解一下SOA是什么東西,在那個時候,我們是很模糊的。
所以我的第一個階段呢,我就認為在技術上,我認為SOA是一個用 Web Services來做企業應
用的,這么一個想法,所以本質上我只是覺得這東西沒什么大不了得,因為在03年的時候,Web Services
這個概念已經火了兩三年了,所以我覺得,SOA沒有什么了不起的。
之后不久呢,通過跟企業接觸,企業告訴我們呢,也是一個誤解,現在來看也就是一個誤解,就是SOA是一個新一代的企業應用集成這樣的一種架構,也就是 EAI的下一代,當時我們就這么看的一個問題。
有人提出來說,中國是不是不太適合SOA,因為在中國EAI在企業沒有特別多成熟的運用系統,主要依靠新
建,所以呢,當時也比較困惑這個問題。后來SOA呢,進入了一段相對不是那么熱鬧的一個階段,可以說進入了一個具體實施的一個時期,各家的認識和經驗都在
積累,我們的思想也處在一個相對來說比較穩定的一個狀態。
那么再過一段時間,當這個一些實施成果上來以后,包括我們去采訪一些SOA實施,有了實踐經驗以
后的這些人,我們作為媒體來講,得到一個新的認識,就是因為SOA是一種新的企業的IT基礎架構的,這么一種風格,一種架構,其中流行的一種東西就是一個
ESB,即總線,然后很多Services通過根據總線相連接,簡化之間的交互,達到松耦合等等。
所以當時,我們那個時候,大概一年以前的時候,我對這件
事情的認識呢,進化到它是一個風格,它是一種架構,它架構也可以具體實例化成一種技術,一個產品,這是我當時的一個認識。
那么到現在,到今天,又經過一段時間的演化,又經過了跟一些企業的交流,跟一些這個行里的大師,或者行業里的領導人物的交流,我最后,我覺得我現在的認
識,相對可能比較接近1996年Gartner提出來SOA的概念,這SOA是指什么呢,SOA是一種新的建構企業應用和企業IT基礎架構,主要是企業
IT基礎架構的思想、方法、風格、工具的一個總稱,所以SOA現在的這個思想,比較泛,就是說比較寬廣,就是說含義比較寬廣。
甚至我發明了一個順口溜,說
“SOA是個筐,什么都可以往里裝”,只要你這些新方法,是符合企業IT基指架構發展的下一個潮流,一個階段,那么現在很多人都把它會往SOA里去裝,但
是呢,SOA還是有它確切的含義和它明確的價值,所以,我剛才說的這個含義呢,其實是我現在的一個認識。
記者:我也知道你在前段時間去了美國,去參加一個IBM組織的SOA大會,然后也接觸了很多國外的SOA專家,我想問一下,國外的那個技術人員對SOA的理解和國內的人對SOA的理解,有什么區別嗎?
孟巖:恩,說實話,在這一點上,我不能說我知道的很清楚。我是跟國外的技術人員就這方面交流的并不多,但是呢,從國外的一些文章,網站上的一些文
章,還從有限的一些交流來看的話,SOA這個概念即使在美國,這仍然是一個引起很多爭議,引起很多的誤會的這個概念。尤其是在開發者,在很技術的人員當
中,SOA是一個招人討厭的,或者說是不被人理解的,或者是別人覺得,你就是個叫Hip,這么一個東西。
也有很多不同的認識跟理解,可是我覺得,如果要是
正本溯源的話,還是應該去向Gartner這個提出SOA的這個組織,像IBM,像BEA,Oracle,包括微軟,他們技術的決策者,技術方向的決策
者,到那里去SOA的真經,如果我們到那里去問的話,我覺得,他們那里的SOA的思路跟我們國內目前一般開發人員,一般技術管理者的認識水平,那還是不太
一樣的,就是還是有,他們還是比我們要領先很多的。
記者:但是另外一種觀點就是說,SOA是從國外開始興起的,主要是去解決一些,去整合遺留的系統,但是我們國內的IT歷史并不是特別長,你認為SOA對我們國內的IT界有什么作用?
孟巖:我需要指出的是,你剛才的那個Statement就不對,首先它是從國外來的,這是對的,我們所有的東西差不多都是從國外來的。但是說它只是
為了整合遺留系統,這句話就有問題。因為SOA要做的第一件事情不是整合,第一件事情,當然還是重新梳理你的業務流程,把它SOA把它Service化,
但是呢,在著手進行改造,第一件事情,打散你的業務,先破再立,不是簡單的把過去的業務進行整合。
我們如果運氣好,你過去的業務系統呢,正好能被完整的包 裝成一個服務,那當然好了,但是如果你過去的業務系統,不好被完整的包裝成一個服務,那就需要先把它打開,給張三的給張三,給李四的給李四,把它包裝配成 一個服務,這個是要糾正的。
所以就是說,即使從國外的企業來講,它也不純粹是一個整合的概念,它確實是一個以服務為導向,重新規劃系統的這么一個過程,而
對中國呢,我講過了剛才的觀點,如果說國外呢,是改建為主,就是我的房子已經蓋好了,我要改建,我一定要把它該拆的拆,該破的破,該打通的打通,對吧,但
是它畢竟都屬于改建;中國的情況呢,則是新建、改建、擴建并行,我們大量的系統,大量的企業,到現在還在懷疑IT的價值,它沒有進行第一代的IT化的建
設,還有一些企業已經進行了第一代的IT建設,還有很多的企業正在進行第二代的,第三代的IT建設。
從2003年開始,中國IT建設70%的投資是二次建設,所以你可以想像一下,做IT的公司才多少?大量的公司,大量的企業還沒有做IT,還沒有認真的把
IT放到自己的這個管理中間來,包括還有一些非企業性質的,政府、學校和一些社會組織,都還沒有把IT納入自己的業務管理的過程當中,所以潛力是很大的。
對于它們來說,一個主要的考慮就是,說白了,領導說話算不算話,這個很重要,領導說話要算話你就必須要讓IT系統足夠靈活。
我們中國的企業是有這樣的特
點,和我們國家國情比較接近,我們喜歡突變,我們可能會在某一個水平線上,某一個狀態上維持一個比較長的時間,然后突然一下發生巨大變化,這個時候就是要
求我們IT系統非常靈活,其實我個人認為,我們中國的企業在國際市場上獲得一些成果一個很重要的原因,我們以外國人想象不到的速度在改變自己。
所以呢,這
是我剛才上一個問題講到的,中國的企業絕不會允許自己損失機動性,損失敏銳性,因為這是我們賴以生存的一個根本,所以如果你上一個IT系統,讓我把這個敏
銳性給損失掉了,我就不會上,也不會要的。
反映在很多現實當中,開發人員給我們無耐地搖頭解釋說,中國沒法做IT,那領導人拍腦袋就變,你還非得聽他的不可。這就說明一個問題,領導人拍腦袋就變,
這可不一定是壞事,這可能是這個企業競爭力的源泉之一。
所以我們在中國做企業的話,要支持這種東西,要足夠靈活,要讓IT系統能夠跟隨決策者的思想變化而
變化。IT的意義本身在于使你的管理規范化,流程化,效率提高,嚴格,這樣一個避免人為因素,降低對人力素質的要求,這樣的一個特點。所以我們,還是剛才
說的,我們中國的IT,目前在SOA要解決的問題就是不損失靈活性的情況下,提高管理水平、有效性、管理的效果。
記者:那么在實施SOA的過程中你認為應該注意哪些問題,有哪些難點存在?
孟巖:在實施SOA的過程當中,第一個難點,我覺得是要改變一些思維,改變一些傳統的思維方式。傳統的思維方式是把這種,從業務到IT系統,這種運
作過程看成是一種魔術的,要靠培養巨牛無比的人,這個既要具有極強的面向對象這些基礎的軟件和IT基礎的這種知識和技能,通過多年的磨煉,能夠規避各種各
樣的風險;然后還要懂這個業務,要善于溝通,要用有效的方法來幫它及時地找到和發現自己的錯誤,這是非常難做到的事情。
那么首先要改變觀念就是說,我們現 在一個層面是業務,一個層面是技術,所以我們在中間加一個層面,叫Service,這個Service是一個貼近技術,貼近業務,又可以被技術支持的
一個
概念,能夠以它為標準,又能夠以它為單位,對于業務來進行模塊化,實現Service之后,你會發現,當你的業務要發生變化的時候,你所要做的僅僅是微調
Service內部的接口、契約、服務質量和重新調整各個Service之間的關系,幾乎就可以滿足你對業務調整的需要。
這就是說我們把業務給模塊化,找到合理的一個單元,可以用它來把業務這個事情模塊化,而這個單元又特別巧的,也不是特別巧的,刻意地可以被技術,用我們現
在傳統的這一代組件啊,對象啊這些東西來支持和實現,這不是很好的事情嗎?我們說一句諺語叫“當你在軟件里面遇到任何問題的時候,請增加一個中間層”,這
個就是這個思想的一個應用。增加了一個Service這樣的一個中間層,一個間接層,來協調這兩個差的太遠的之間的關系,來做到這件事情。
所以首先思想上
要改變,要知道SOA為什么?知道了這一點,你才能夠有可能去正確的去實施SOA,SOA在實施的時候第一步,應該是梳理業務流程;第二步,應該是用
Service的觀點重新描述你的業務流程,這個過程也是挺關鍵的,我認為,從這個過程往下,就比較容易一些,包括做一些具體實現Service的一些方
法、操作和我們常用的一些方法。當然可能還有一些新的標準,SCA啊,SDO啊,包括ESB啊,包括一些提供的工具。
但總的來說,到了我們開發者日常工作這一塊,他的改變有,但是他的工作形態的變化并不是很大,可是在這個業務梳理和業務架構這個過程當中,是有一個關鍵變
化,這個是我覺得這個,你剛才說到難點在哪。那么這個難點歸根到底就在于,我認為SOA存在的關鍵在于,它是否能夠培養出足夠多的高素質的,高質量的這種
SOA架構師。
SOA的架構師跟我們傳統意義上的架構師不太一樣,傳統意義上的架構師就是變魔術的那幫人,也不知道他怎么想的就變了。現在呢,要把這個過
程分成兩步,第一步把它分解成為服務,把服務之間的關系理順;第二步,把每個服務的接口、契約,全部都封裝好,服務之間的關系,包括它的
Governance之間的關系,這個叫做業務架構,這個人我認為是在SOA時代最吃香而且至關重要的一個腳色。
記者:你按照你的意思來說,就是我們現在的開發人員,或者說是一些架構師,做轉變的話,要重視業務的發展,是這樣嗎?
孟
巖:對,我覺得這句話其實說的很多。就是沒有SOA時候,大家也都在做,你作為一個開發者也好,作為一個架構師也好,你一定要關注業務。但是呢,過去這種
說法,是種泛泛的,我們不知道怎么關注,你總不能讓我去成為一個石油專家,一個銀行家,或者一個什么,才能夠就是說開始這樣的一個系統,那這樣的人有多少
呢?成為那樣的人,還做IT系統嗎?有這樣的問題存在。
現在呢,有一個具體的指導方針,就是說你該怎么去了解業務了,你要把業務分解成為一個一個的
Service,理順這些Service的關系,調整Service的接口和契約,這是對這個的理解。對開發者的理解,對開發者的影響來講,有些實踐就要
變了。比如說,我們現在用到的一些,它已經熟習的一些思想、方法,一些東西可能有一些變化。
因為過去呢,你直接面向業務,開發者往往要學會一種能力,看了一段自然語言文本,就把一個什么對象圖啊,什么模塊圖啊,類圖啊等都畫出來,這個是過去要求
的一個。現在呢,你要面對的問題,可能就是說,你要面臨的是怎么樣最好的,向外界提供高質量的符合企業的服務,這是開發者的一個變化。但是更大的影響呢,
對于開發者來講的話,是他需要重新安排自己的職業生涯和規劃,過去他覺得我學習這些東西也就可以成為架構師,設計師架構師怎么怎么樣,或者我就專心的做我
的.NET,做我的Java的內核,高效率的東西,也可以成為那個領域的專家,但是你要知道這是兩個不同的路線。現在呢,你想做企業里面的架構師,有來之
后,你就可能,對自己職業的規劃,一個目標,要有一些調整和變化。
記者:我在看很多關于SOA的文章都提到各式各樣的標準,我想問一下,為什么SOA里面會有那么多的標準?
孟巖:其實坦率的說,現在SOA一個很大的問題就是標準化不夠,標準沒有得到很好的制定和實施,甚至可以說,我可以這么講,SOA,現在是有一個
OSOA組織了,但是這個組織不是一個很強有力的組織,國際化的這個標準組織一般都是比較松散的,這個OSOA也是松散的。然后呢,各大廠商都有自己的想
法和主意,結果就是說,SOA標準化的東西目前做的不是特別好,但是盡管有這么多的問題,還是有SCA、SDO這樣的標準出現,這個對于SOA還是很好的
事情,還有一些其他的標準,比如說WS-*,有三十多個標準,那些東西不屬于SOA,盡管可以用它很好的來實現SOA,但是你不要把它作為SOA標準,所
以在我看來呢,SOA的問題不是說標準化太多,而是標準不足的問題。
我們馬上面臨很大的一個問題就是說,微軟它做了一套體系,跟SOA的SCA、SDO標
準是不一致的,這里的問題就是說,我們當然還要看,微軟的WPF、WCF跟這個是相關的,以及WF這個標準,能夠互相兼容,互相操作。如果可以的話,當然
很好,如果不可以的話,怎么辦?我們得到了一些微軟方面的承諾,但是畢竟這個還是不官方承諾,我們想看看這個事情怎么發展。所以標準有,如果談到SOA的
話,標準真的不是太多了,而是還不夠。
記者:另外然后業界里面流行的概念,一個是SOA,另外一個是Web 2.0,兩者之間也是有很大的關系,我想請你評價一下這兩者之間的關系?
孟巖:這次我去美國的時候呢,我去參加的IBM Impact
2007這個大會,這個大會的主辦者或者說最主要的一個人,是IBM軟件集團的一個副總載,叫Sandy
Carter,是一位女士,IBM的一位傳奇的一位女性。她寫了一本書,叫做《業務的新語言》,子標題是SOA&Web2.0,所以從這句話來
看,就知道這兩個是有關系的。什么關系?我可以這么說的,這兩個東西協同起來,可以共同為我們搭配剛才所說的敏捷業務的目標,為什么這么說,因為傳統上,
這個企業呀,你像我們業務系統總得用數據,業務邏輯,在它上面展現,還有一些整合的過程,有人提出Portal,企業級Portal這樣一個概念,這么一
些過程的話。
實際上,當整個技術轉移到外圍以后,由于Web技術,第一代Web技術的制約,也使得它們在企業運行當中的,企業當中的一些運用受到了一些限
制,現在的問題就是說,Web 2.0這東西怎么理解呀,大家還在說。我覺得固然有很多,從網絡社會學意義角度去出發,去闡述Web
2.0,著名的博客Keso,他提了很多,比如說用戶與這個編輯處于同等地位呀,強調自由啊,強調話語權的平等呀,開放性呀,強調用戶權益至上,把這些東
西列為Web 2.0的一個標桿。
但是從我們做IT的技術來講,Web
2.0他有他固定的技術含義,他是指一系列的第二代的Web服務的集合,這里面包括像RSS、Atom,然后有這個Syndication,其實就是剛才
說的這兩個協議的抽象概念。然后有像這個Blog的這種服務,社會網絡,技術上的有Ajax,數據的Mashup
,有數據的微格式,這樣的一些東西,這個東西綜合起來,能夠給用戶更好的體驗,能夠給實施者提供更輕便,更容易的一種集成,這種東西叫Web 2.0。
那么它為什么可以用來和SOA一起來為企業來服務來使用呢?你記住,我們剛才說為了業務敏捷性,業務敏捷性就意味著,我們不僅僅數據和業務的關系
發生變化,它給用戶的展現,它的集成方式,它的集成范圍,都會迅速發生改變,而在這一點上,傳統的企業使用的C/S模型,或者第一代Web技術,它那種局
限性,都使你沒有辦法很快地,使你的最后傳到用戶那里的最后的一公里也跟著一塊變。 只有我們采用Web 2.0這些功能,Web
2.0提供的這些服務和協議,它這種風格,REST和Micro-format也就是微格式,這些東西融合起來,你才能夠從下到上為用戶,為企業提供一套
完整的敏捷的技術棧,才能夠說,人家的Idea一變,業務一變,底下的數據變,上面的模型,上面的業務叫流程變、服務變,流程變,最后到上頭來,到前邊
Portal也變了,這個界面也變了,數據表單也變了,只有這個才能做到這一點。
所以Sandy
Carter在這本書里面畫了一張圖,我剛剛提到她也是這個原因,這張圖是一個金字塔,然后她用一張薄片,把金字塔攔腰一切,底下SOA,上邊Web
2.0,很明顯地說明這個問題,就是說在底下要用企業級的SOA技術解決問題,將數據用標準方式如XML等暴露出來,上邊用Web
2.0的技術去整合Mashup,去呈現,這種東西就會導致,就會使得我們剛才說的業務敏捷性的目標得以實現,這就是這兩個技術應用之間的關系。
它們之間有什么關系?它們之間是盟友的關系,我們共同協作可以達成敏捷性的目標,否則的話,如果你幾家是很快變化的數據和流程,上面我還是傳統老舊的那一
套,比如說Web
1.0的,或者是,甚至是更傳統的VB或者是更傳統的.NET富客戶端所寫的程序,當然對于企業最后還是得不到迅速變化,隨之實施的這么一個結果。那我可
以給你舉一個小例子,這個Web 2.0一旦跟企業應用相結合,形成一個Enterprise Web 2.0這么一個新概念。
那么這個,我給你舉一個小例子,已經實施的例子:就是有一家遠洋航運公司,他們呢,做了這么樣一個應用,就是他們通過GPS系統,將自己的每一艘航船在遠 洋,在地球上的位置,都能夠實時的確定下來,他們把這個數據得到并放在一個服務器系統里
面;他們另外一個系統保存著每一艘遠洋航船此次航運他的目的地、起
點、他的運貨是哪些,這些定單信息,這些商務上的信息;另外一個系統保存著每艘航船里邊的人都是誰,雇員的信息,海員的信息,臨時工是誰,他的情況是什么
樣子。然后,其實現在就表示他們已經提供了一些服務了,在把這些服務跟就是,他把這些數據用SOA的方式,把這些服務給整合起來。
整合起來之后,跟Web 2.0這個技術能夠理解的格式比如XML以后,再跟Google
Map整合,立刻得到了一張全球海洋圖,一張大的一個全球地圖,每一艘現在在什么位置都可以看到。當他點擊那個船的時候,他可以立刻看到這個船本身的信
息,船上船員的信息,這次航行的有關商務信息,都可以看到,這個就是SOA跟Web 2.0融合的一個例子。
但故事還沒完,當我們部署到內部的時候,好多事情就會不斷的出現。因為你不僅可以縫合你,Mashup你自己企業內部的信息,當你
采用公共的Enterprise Web
2.0作為你的架構以后,你就可以公開的自由的獲得,或者是通過付費的方式,獲得別的企業高質量的數據服務。他們很快又購買了一家海洋天氣預報公司所提供
的高質量的數據服務,然后Mashup到這張圖里面,就可以看到天氣的情況。
然后更有意思的是,他們后來又想知道海盜報警,哪些地方發生海盜的事情,英國 有家公司提供這樣的信息,于是他們就把那些信息又通過Web
Service的方式抓過來,那些公司的信息通過Web
Service的方式暴露出來了,他們把這些信息抓過來,縫合到這張圖里面去,讓它來顯示不同的信息。它立刻就可以得到,我這次航行處在什么樣的氣象條件
下,海洋氣象條件下,然后它前方或者它路過的地方,有沒有海盜的這個情況,高危險地區我就要提示它警告它,這樣的一個應用,我認為是目前我所知道的,比較
好的Enterprise Web 2.0和SOA的應用,這么一個表現。
我相信,由于這樣的一個系統,據我所知,它是在一家全球頂級的大公司支持之下,來完成的。據說這個整個的項目的實 施,尤其是后面融合數據的過程,都是非??欤ㄙM統一,而且就是說,完全沒有那些繁冗的過程,這就是Enterprise web 2.0的威力。