SOA與之前軟件思潮中幾種技術(shù)架構(gòu)最大不同是——它是面向業(yè)務(wù)的設(shè)計。
SOA的架構(gòu)理念,不僅用松耦合的分層結(jié)構(gòu)隔離了技術(shù),使得業(yè)務(wù)和技術(shù)的變化周期可以不互相影響;更重要的是,它還可以把不同知識域的人放在一個平臺上討論問題,比如用一個Workspace平臺可以將業(yè)務(wù)人員、架構(gòu)師、IT主管、程序員集成起來,讓他們可以在一個桌子上交談,從業(yè)務(wù)流程的設(shè)計到實現(xiàn),現(xiàn)在可以用一種貫通的方式進(jìn)行討論與及時修改。 以前,不同知識域的人群,由于專業(yè)分工,有各自的思考角度,互相難于理解?,F(xiàn)在,那些以前隔著墻打電話的人,可以在SOA這樣一個平臺上共同的交換信息,完成任務(wù)。所有人都知道好的應(yīng)用程序是不可能由不懂業(yè)務(wù)的程序員開發(fā)出來的,但苦于無法在業(yè)務(wù)和技術(shù)人員之間建立一種共同語言,現(xiàn)在這種語言出現(xiàn)了,就是服務(wù)。 用契約的方式定義層次之間的關(guān)系 服務(wù)之間的調(diào)用契約來固定,其實不難理解,這就是市場經(jīng)濟(jì)的本質(zhì)。 最早理論基礎(chǔ)是盧梭寫的《社會契約論》,西方經(jīng)濟(jì)體系就是基于契約架構(gòu)起來的。具體到SOA的設(shè)計哲學(xué)里面,Design By Contract的目的完成了服務(wù)之間調(diào)用標(biāo)準(zhǔn),也為未來遍及整個IT系統(tǒng)的服務(wù)網(wǎng)絡(luò)提供了基礎(chǔ)。 Google與其商業(yè)客戶之間的靠點擊量來計算收入的方式就是個參考的例子。以后的服務(wù)之間的調(diào)用,如同市場上的交易,可能是按次收費的,這樣才會把服務(wù)的生產(chǎn)方調(diào)動起來。 這種模式,在汽車這樣的傳統(tǒng)行業(yè)早已通行百年,每種特定的零件都可以有很多的供應(yīng)商,只要基于標(biāo)準(zhǔn)的契約來設(shè)計,安裝到整車上都可以保證整體的功能。 軟件行業(yè)的奇特之處在于,盡管軟件行業(yè)在普通人看來是個高科技,但這個行業(yè),在基于標(biāo)準(zhǔn)的生產(chǎn)方式上,遠(yuǎn)遠(yuǎn)不如離散制造業(yè)。這個行業(yè)充滿了孤膽英雄,綠林大俠,以自我為中心的散漫氣質(zhì),在中國還有一種詩意的浪漫情懷。在軟件行業(yè)內(nèi)部的人,都覺得自己的江湖很有武俠境界的氣質(zhì)。 現(xiàn)在SOA要講契約,講標(biāo)準(zhǔn),講交換。程序員出身的人也許會說,還不如自己開發(fā)一個。這也許是Design By Contract面臨的最大文化難題。 用團(tuán)隊演進(jìn)的方式平衡長短期ROI 北美的SOA咨詢顧問們,關(guān)于SOA實施的一個口頭禪是:“SOA是一個3-5年的旅程,唯一的辦法就是循序漸進(jìn)。” 我們可以把SOA理解為一種混搭的中庸架構(gòu),說它混搭,是說它是獨立于技術(shù)的,說它中庸,是因為它必須與現(xiàn)有的各種系統(tǒng)相融合。SOA改變的不僅是開發(fā)方式,而且是管理方式,甚至是業(yè)務(wù)組織的方式。它不是個IT戰(zhàn)略,還是一個公司戰(zhàn)略。 在這個緩慢進(jìn)行的改良主義過程中,如何在每個階段可以有一些階段性的回報,是管理者必須考慮的問題。沒有管理者會批復(fù)一個五年后才能有回報,又需要投入巨大精力的提案。 針對每個企業(yè)設(shè)計一個有針對性的演進(jìn)路線圖,這不是個技術(shù)問題,而是一個業(yè)務(wù)問題,有一個瑞士保險公司的SOA案例是,客戶在一年半的時間里達(dá)到了實施SOA項目的正向投資回報,其中的案例分析精確得像財務(wù)報表。只有這樣的案例才會給管理者巨大的信心。 不是在所有的情況下都會找到這樣的項目,這種情況需要找“SOA友好”的項目,SOA的特點有很多,比如,它和業(yè)務(wù)敏捷正相關(guān),它和變化的強相關(guān),和集成項目的強相關(guān),和企業(yè)治理的強相關(guān)等等。客戶必須從業(yè)務(wù)和IT兩個角度來尋找切入點。只有步步以ROI為考量,才能將這個旅程走下去。 用集中管控的理念克服組織行為的障礙 只需要用一天把SOA的基本設(shè)計哲學(xué)講給一個管理學(xué)教授,他就會很快發(fā)現(xiàn),SOA的管理與控制都是管理學(xué)命題。 去年在有關(guān)SOA的播客節(jié)目里面,我第一次用殺人游戲來比喻SOA面臨的多重囚徒困境,很快在最近得到一些客戶的印證:推進(jìn)SOA真正的難題在于組織障礙。 比如,每個部門都想享受別人的服務(wù),但自己卻不愿意開放自己的服務(wù),現(xiàn)有的組織架構(gòu)里面,IT部門的工作有時需要靠人脈來解決,但一旦真正開始SOA的轉(zhuǎn)變,一些硬性的部門利益沖突,就不可能靠人脈來解決了。 信息的擁有權(quán)在現(xiàn)代如此重要,很多時候是部門不愿意公開的秘密。SOA的共享理念,需要采取一種變通的方式,來獲得各部門的支持。 這很像一個建立城市公共設(shè)施的課題:如果SOA的目標(biāo)是在企業(yè)級建立一套共享的IT資產(chǎn)管理體系和標(biāo)準(zhǔn),那么這個工作就不可能僅由IT部門可以推動。 在SOA項目的管理支持里面,需要一個SOA管控委員會,凌駕在所有部門之上,擁有絕對的生殺大權(quán),這在很多企業(yè)里,好像要把分屬戰(zhàn)國諸侯的資產(chǎn),統(tǒng)一起來,像秦始皇那樣統(tǒng)一度量衡。很多美國的評論家仍然認(rèn)為,中國是所以成為現(xiàn)在的統(tǒng)一國家,秦始皇的貢獻(xiàn)最大,因為他統(tǒng)一了度量衡,語言,甚至包括車轍的標(biāo)準(zhǔn)。作為暴君的秦始皇給人的印象不好,但建立的標(biāo)準(zhǔn)人人在享用。 類似的近期版本是蘋果公司,很多管理評論都認(rèn)為,正是喬布斯的暴君風(fēng)格才保證了蘋果過去幾年的成功。政治學(xué)中有個詞描述這個概念叫“政治所必要的惡”,就是這個意思。整治豎井式的部門應(yīng)用,看來沒有專制的狠手不行,這叫做制度保證。這些做法也許會引起某些草根程序員的反感,但是沒辦法,你看到哪個講民主的公司成功過? 1
|
|