物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

淺談:SOA實施現(xiàn)狀及面臨的挑戰(zhàn)

作者:軟件技術(shù)交流
日期:2007-09-17 16:04:39
摘要:在過去的幾年里,大大小小的許多公司實施了眾多的SOA項目,但結(jié)果多少讓人失望。許多公司漸漸認(rèn)識到:SOA實施起來比預(yù)料的要復(fù)雜,不但需要高度關(guān)注各個方面的企業(yè)數(shù)據(jù),還要改變企業(yè)文化,程度之深超過以往任何一股技術(shù)潮流。
在過去的幾年里,大大小小的許多公司實施了眾多的SOA項目,但結(jié)果多少讓人失望。許多公司漸漸認(rèn)識到:SOA實施起來比預(yù)料的要復(fù)雜,不但需要高度關(guān)注各個方面的企業(yè)數(shù)據(jù),還要改變企業(yè)文化,程度之深超過以往任何一股技術(shù)潮流。  

  眾所周知,面向服務(wù)的架構(gòu)不是什么新架構(gòu)。SOA的幾個先行者如通用對象請求代理體系結(jié)構(gòu)(CORBA)和分布式組件對象模型(DCOM)使用松散耦合、面向服務(wù)的方法,已經(jīng)成功地為不同應(yīng)用架起了橋梁。SOA這股潮流新就新在SOA不僅僅涉及服務(wù)。日益興起的互聯(lián)網(wǎng)和XML為數(shù)據(jù)交互敞開了大門。  

  軟件行業(yè)以前所未有的力度支持通用的數(shù)據(jù)交換格式(XML)和互聯(lián)網(wǎng)傳輸協(xié)議。因而出現(xiàn)了一大批得到公認(rèn)、開放的標(biāo)準(zhǔn),它們能夠?qū)崿F(xiàn)SOA的承諾:支持業(yè)務(wù)流程的靈活配置、減少操作成本、能夠動態(tài)發(fā)現(xiàn)服務(wù),并且在諸多應(yīng)用、部門和交易合作伙伴之間提供無縫集成。  

  但很遺憾,讓企業(yè)和技術(shù)人員大失所望的是,SOA的這些美好承諾并沒有得到兌現(xiàn)。這倒不是因為承諾本身有什么不對,而是因為如今實施的SOA大多數(shù)其本質(zhì)都是試驗性的。好消息是,我們可以從SOA試驗項目中汲取寶貴經(jīng)驗,而這些經(jīng)驗有助于SOA試驗項目變成能夠充分發(fā)揮SOA潛力的企業(yè)級實施項目。  

  SOA的目標(biāo)  

  我們在探討通向SOA的道路面臨的挑戰(zhàn)之前,不妨先退后一步思考,重新分析一下啟動SOA實施項目的組織通常有哪些目標(biāo)。  

  一、獲得流程的可見性和靈活性  

  席卷全球的SOA潮流無疑是合情合理的潮流。SOA已經(jīng)逐漸融合了分布式計算領(lǐng)域的幾個重大變化。許多組織總是大力投資技術(shù),以便領(lǐng)先競爭對手,而SOA正是提供了這種突破性機(jī)會。與此同時,許多組織還一直在改善業(yè)務(wù)流程,以充分發(fā)掘競爭優(yōu)勢。  

  新出現(xiàn)的業(yè)務(wù)流程管理(BPM)有望不斷改進(jìn)流程、促進(jìn)業(yè)務(wù)部門和IT部門之間實現(xiàn)前所未有的協(xié)作。SOA是集大成者,在它的統(tǒng)領(lǐng)之下,多家組織齊心協(xié)力,獲得全面了解數(shù)據(jù)和流程的可見性、不斷進(jìn)行改進(jìn),并且以一種有效、透明的方式實施細(xì)粒度控制。  

  二、消除孤島  

  SOA的第二個目標(biāo)就是消除應(yīng)用、部門、交易合作伙伴當(dāng)中的孤島(silo)。這些孤島是由于多年的軟件開發(fā)工作形成的,SOA有望消除這些孤島,讓組織獲得更清楚地了解數(shù)據(jù)及流程的可見性。  

  三、管理更準(zhǔn)確的數(shù)據(jù)  

  一家組織不但需要更有效地管理數(shù)據(jù),還需要管理更準(zhǔn)確的數(shù)據(jù)。確保這一點很重要:跨組織及交易合作伙伴生成及使用的數(shù)據(jù)是干凈的、可靠的、安全的、妥善管理的、易于獲取的。SOA的目標(biāo)之一就是,為組合式數(shù)據(jù)服務(wù)平臺提供一套統(tǒng)一的組件,這些組件用于數(shù)據(jù)存取、質(zhì)量、轉(zhuǎn)換、管理、緩存及其他許多以數(shù)據(jù)為中心的服務(wù)。  

  四、重復(fù)使用服務(wù)  

  SOA的一個相關(guān)目標(biāo)就是有效地管理及重復(fù)使用企業(yè)的服務(wù)和數(shù)據(jù)。如果由組織內(nèi)某一部門開發(fā)的服務(wù)在易于訪問的注冊中心里面采用標(biāo)準(zhǔn)格式發(fā)布并加以描述,它們就可以供該組織內(nèi)外的其他任何部門使用。如果數(shù)據(jù)和服務(wù)屬于所有者,使用者需要時,又可以共享它們,就能減少與維護(hù)及管理數(shù)據(jù)和服務(wù)有關(guān)的操作成本。重復(fù)使用是SOA最主要的優(yōu)點之一。  

  五、統(tǒng)一組織目標(biāo)  

  SOA的另一個目標(biāo)就是協(xié)調(diào)業(yè)務(wù)部門和IT部門,共同實現(xiàn)組織的目標(biāo):有助于更好地開發(fā)靈活、可配置的業(yè)務(wù)流程。在過去,業(yè)務(wù)部門和IT部門幾乎采用獨立的方式來提高組織的經(jīng)濟(jì)效益。  

  而作為SOA的一個方面,BPM可以消除業(yè)務(wù)和IT之間的分歧,因為它采用了業(yè)務(wù)部門和IT部門之間通用并且都能理解的一套術(shù)語,通過建模、模擬、執(zhí)行和監(jiān)控等手段,能夠不斷改進(jìn)流程。  

  SOA實施現(xiàn)狀  

  我們已經(jīng)知道了SOA的目標(biāo),現(xiàn)在看一下幾個迫切需要實施SOA的行業(yè)實例。幾個行業(yè)如今正面臨法規(guī)驅(qū)動的監(jiān)管壓力,譬如金融服務(wù)業(yè)的《薩班斯-奧克斯利法案》和可擴(kuò)展商業(yè)報告語言(XBRL),或者是制藥業(yè)供應(yīng)鏈中的藥品“譜系”。  

  這些法規(guī)遵從措施要求各組織從散布于諸多IT系統(tǒng)的孤島收集數(shù)據(jù),有時還要求與第三方的Web服務(wù)進(jìn)行集成。這些數(shù)據(jù)往往必須進(jìn)行清理,轉(zhuǎn)換成標(biāo)準(zhǔn)格式,以便能夠交換數(shù)據(jù)。  

  另一個例子出現(xiàn)在供應(yīng)鏈上下游需要應(yīng)對無線射頻識別(RFID)技術(shù)的各個IT部門。RFID能夠?qū)崟r監(jiān)控供應(yīng)鏈,從而提高效率、改善運作。不過,大多數(shù)供應(yīng)鏈和IT應(yīng)用并不牢靠,因而沒法使用RFID提供的實時、細(xì)化的數(shù)據(jù)。正如我們所知,SOA大大減小了集成的復(fù)雜性,并且讓解決方案的完善能夠適應(yīng)未來需要,又不會給生產(chǎn)環(huán)境帶來很大影響。 

非SOA或者半心半意的SOA方案會導(dǎo)致需要定制集成,這需要大筆費用,還會使系統(tǒng)更加呈現(xiàn)緊密耦合的特性,從而使問題更為嚴(yán)重。  

  如今,大多數(shù)IT部門只是在嘗試SOA而已。有些IT部門在小規(guī)模部署服務(wù),供內(nèi)部使用。許多部門正在遺留應(yīng)用上面構(gòu)建服務(wù)封裝器(service wrapper),以便獲得重用性、降低運作成本。不管怎樣,SOA實施的重心似乎放在了服務(wù)層上。  

  概念有待澄清  

  SOA這一術(shù)語其實用詞不當(dāng)。SOA與其說是一種架構(gòu),還不如說是一套方法,如今,SOA的每一層都有好多種實施方法。AMR研究公司近期的一份調(diào)查表明,Web服務(wù)是許多組織構(gòu)建服務(wù)的最主要方法,但集成框架、平臺、應(yīng)用服務(wù)器和業(yè)務(wù)流程管理服務(wù)器也得到了積極使用。  

  構(gòu)建服務(wù)層的選擇非常廣泛,這也許是樁好事;不過對考慮實施SOA的許多組織而言,這也是導(dǎo)致概念混淆的根源之一。  

  許多組織為了弄明白外人難以理解的技術(shù)行話,并且確認(rèn)合適的服務(wù)實施方案,已耗費了太多的時間和精力,結(jié)果它們無力顧及行之有效的SOA的其他同樣重要的部分,于是決定僅僅構(gòu)建服務(wù)層,迫不及待地想感受投資帶來的好處。  

  結(jié)果,實施的這些SOA到頭來成了概念證明而已。它們并沒有經(jīng)過精心考慮,也無法解決重要的問題,如可擴(kuò)展性、安全和治理。  

  成功實施企業(yè)級SOA面臨許多挑戰(zhàn)。許多組織把大部分精力用在了服務(wù)層上,但構(gòu)架的核心部分:SOA注冊中心和存儲庫卻設(shè)計得不夠好,無法進(jìn)行有效擴(kuò)展。  

  SOA原型證明了潛在的好處,但通向真正的企業(yè)級SOA這條道路顯得困難重重,大多數(shù)組織都不敢上路。企業(yè)必須認(rèn)識到:要發(fā)揮SOA的潛力,單單服務(wù)層是不夠的。組織制訂的目標(biāo)與實現(xiàn)這些目標(biāo)的SOA各部分之間要有切實的對應(yīng)關(guān)系。  

局限和挑戰(zhàn)  

  現(xiàn)在我們不妨分析一下成功實施SOA所面臨的種種挑戰(zhàn)。  

  一、文化障礙  

  消除組織孤島的目標(biāo)不僅僅帶來了技術(shù)上的挑戰(zhàn)。許多公司沒有為這種理念帶來的深層的文化變革做好準(zhǔn)備。許多人習(xí)慣于完全控制自己使用的特定應(yīng)用軟件的各方面需求。  

  如今他們卻要依賴其他部門提供的服務(wù)。如果這種變革未認(rèn)真處理好,就有可能導(dǎo)致有人對交出控制權(quán)心存不滿,因為擁有數(shù)據(jù)和服務(wù)的是別人,而不是自己。如果不但與組織里面的部門共享服務(wù),還與外面的交易合作伙伴共享服務(wù),這個問題會進(jìn)一步復(fù)雜化。  

  二、誰來負(fù)責(zé)  

  數(shù)據(jù)歸屬權(quán)和準(zhǔn)確性方面有可能會讓人混淆。設(shè)想一下:某個應(yīng)用軟件重復(fù)使用由另一個部門擁有或者開發(fā)的一項服務(wù),這項服務(wù)可能反過來會使用屬于幾個不同部門的其他服務(wù)。如果該應(yīng)用軟件因底層服務(wù)出現(xiàn)問題而無法正常運行,想想一路查明問題出在哪一方,并且通過層層服務(wù)實行補(bǔ)救辦法、最終修復(fù)應(yīng)用軟件會變得多么困難。  

  三、實施困難  

  除了文化和后勤方面的挑戰(zhàn)外,成功實施SOA還涉及許多技術(shù)上的挑戰(zhàn)。單單針對實施服務(wù)層,許多組織就在采取暫時性的措施。服務(wù)層其實只是SOA的一部分而已。即使如此有限的實施范圍,人們也發(fā)現(xiàn)實際情況要比預(yù)計的來得復(fù)雜。他們發(fā)現(xiàn),遺留系統(tǒng)的大小、數(shù)量和復(fù)雜性使得業(yè)務(wù)流程配置起來極其困難,這樣實現(xiàn)SOA的其中一個主要目標(biāo)就無從談起。  

  新出現(xiàn)的大批服務(wù)導(dǎo)致數(shù)據(jù)管理方面存在可擴(kuò)展性問題。一小批服務(wù)發(fā)布到注冊中心、使用者發(fā)現(xiàn)后加以使用也許很容易。但SOA的真正優(yōu)點、確實也是面臨的挑戰(zhàn)在于擁有成千上萬的服務(wù),它們必須有效地加以發(fā)布、發(fā)現(xiàn)及管理。  

  消除業(yè)務(wù)和IT之間的分歧、實現(xiàn)業(yè)務(wù)流程的靈活配置,這需要投資業(yè)務(wù)流程管理解決方案。可問題在于,正如服務(wù)層實施那樣,如今BPM實施方面不但選擇廣泛,還同樣讓人混淆。  

  企業(yè)級SOA的組成部分  

  以下概述了實現(xiàn)企業(yè)級SOA所必要的幾個組成部分。  

  一、服務(wù)層和注冊中心  

  如今實施的SOA大多數(shù)關(guān)注服務(wù)層,進(jìn)而關(guān)注發(fā)布及發(fā)現(xiàn)服務(wù)的注冊中心。由于這種架構(gòu)已落實到位,許多企業(yè)已經(jīng)獲得了大大改進(jìn)的可見性,遠(yuǎn)勝過Web服務(wù)描述語言(WSDL)和UDDI等標(biāo)準(zhǔn)出現(xiàn)之前的時候。遺憾的是,正是由于滿足于這種投資回報,大多數(shù)實施項目就止步不前——也就是說,等到試圖對建立的模型進(jìn)行擴(kuò)展的時候,光有服務(wù)層和注冊中心是根本不足以獲得SOA的真正投資回報的。  

  二、SOA比看起來要復(fù)雜  

  等到通?;诜?wù)層和注冊中心的SOA實施項目開始獲得一定成效時,IT部門和業(yè)務(wù)部門就會拼命添加越來越多的服務(wù)。發(fā)布及使用的Web服務(wù)數(shù)量急劇增加,這會立即讓人把重點放在之前沒有預(yù)料到的重要功能上。  

  需要的第一項功能就是聯(lián)合信息管理功能。服務(wù)使用者一下子要面對成百上千的服務(wù),所以需要數(shù)據(jù)和服務(wù)的聯(lián)合視圖,以便了解它們。需要的第二項功能是SOA數(shù)據(jù)緩存功能。要是沒有某種緩存功能,就無法快速、可靠地訪問來自SOA實施系統(tǒng)的海量數(shù)據(jù)。  

  人們清醒地認(rèn)識到:數(shù)據(jù)和服務(wù)需要前所未有的治理水平,才能確保有效性,這就需要第三項功能:SOA治理。SOA治理是指定義及執(zhí)行組織策略和標(biāo)準(zhǔn)的一種方法。這些策略針對諸多業(yè)務(wù)需求:管理責(zé)任和依賴關(guān)系、確保業(yè)務(wù)運作的連續(xù)性以及降低成本。因為這些策略定義了控制企業(yè)內(nèi)部數(shù)量激增的服務(wù)的機(jī)制,集成了不斷完善的標(biāo)準(zhǔn),并且促進(jìn)互操作性,IT部門也能從中得益。  

  只有組織采用有條不紊、精心制訂的方法來滿足這些需求,才能真正獲得SOA的投資回報。  
三、SOA存儲庫  

  SOA存儲庫能夠提供的一套服務(wù)要比注冊中心豐富得多,因為它不但可以訪問圍繞服務(wù)的元數(shù)據(jù),還可以訪問實際的SOA數(shù)據(jù)。因而,與注冊中心基于元數(shù)據(jù)的簡單服務(wù)相比,元數(shù)據(jù)以及存儲庫提供的基于數(shù)據(jù)的發(fā)現(xiàn)服務(wù)功能要強(qiáng)得多。存儲庫還提供了把策略管理與轉(zhuǎn)換、聯(lián)合、抽象及緩存SOA工件(SOA artifact)等功能集成在一起的優(yōu)點。業(yè)務(wù)流程和組合式數(shù)據(jù)服務(wù)可以部署在SOA存儲庫上面并加以管理,以確保它們是集中的、透明的,因而是易于治理的。  

  由于所有上述原因,SOA存儲庫是精心設(shè)計的SOA的一個核心部分。  

  四、工作流和業(yè)務(wù)流程管理  

  我們前面提到了SOA的一個重要目標(biāo),獲得業(yè)務(wù)流程的可見性和靈活性。服務(wù)層最能滿足這個目標(biāo),可使用工作流或者業(yè)務(wù)流程管理系統(tǒng)。服務(wù)層已成為SOA當(dāng)中發(fā)展速度最快的一部分。這個市場的廠商種類繁多,既有專業(yè)的BPM和工作流公司,也有企業(yè)應(yīng)用集成(EAI)和應(yīng)用服務(wù)器公司。  

  組織內(nèi)部及組織之間流動的數(shù)據(jù)大部分是XML數(shù)據(jù)。只有基于最適合管理這種數(shù)據(jù)的基礎(chǔ)設(shè)施來進(jìn)行實施,才能充分發(fā)揮SOA的潛力。  

  經(jīng)過周密計劃的工作流或者BPM產(chǎn)品應(yīng)當(dāng)對業(yè)務(wù)用戶和IT部門來說都很便利。它應(yīng)當(dāng)提供無需編寫代碼的流程建模、模擬、執(zhí)行、監(jiān)管和調(diào)試等功能。  

  理想情況下,這種產(chǎn)品應(yīng)當(dāng)與SOA存儲庫緊密地集成在一起,那樣工作流和業(yè)務(wù)流程就可以作為元數(shù)據(jù)來部署,以便集中治理。它還應(yīng)當(dāng)支持可重復(fù)使用的組合式數(shù)據(jù)服務(wù)的開發(fā)、部署及使用。  

  正確實施SOA  

  對精心設(shè)計的一種面向服務(wù)的架構(gòu)而言,功能齊全的SOA存儲庫是核心部分。一個良好的SOA存儲庫能夠以原生方式嵌入數(shù)據(jù)管理和治理服務(wù)。它為一部全面的詞典提供了語義調(diào)和功能。它可以把數(shù)據(jù)和服務(wù)組織成有意義的術(shù)語,并且提供生命周期管理和版本控制服務(wù)。它還提供了一整套數(shù)據(jù)服務(wù),可以執(zhí)行質(zhì)量管理、驗證、轉(zhuǎn)換、聯(lián)合、治理和緩存等操作。  

  如果把這些服務(wù)部署到SOA存儲庫上,與業(yè)務(wù)流程和工作流相關(guān)的工件、定制的組合式數(shù)據(jù)服務(wù)以及第三方服務(wù)也可以自動使用它們。  

  在附圖中處于顯要位置的另一個部分是BPM/工作流平臺。應(yīng)用層能夠發(fā)現(xiàn)及使用直接來自服務(wù)注冊中心/存儲庫層面的服務(wù);也能通過工作流業(yè)務(wù)流程管理平臺,獲得更大的靈活性。盡管BPM/工作流平臺為諸多應(yīng)用提供了一套服務(wù),但外部的服務(wù)層可以同時對服務(wù)進(jìn)行注冊,以便客戶發(fā)現(xiàn)及使用。  

  我們已提到,存儲庫要處理海量的數(shù)據(jù),因此,它在設(shè)計時應(yīng)當(dāng)注重性能和靈活性。如今實施的大多數(shù)存儲庫存在這個問題:它們基于傳統(tǒng)的關(guān)系數(shù)據(jù)庫,而這種關(guān)系數(shù)據(jù)庫根本不夠靈活,連中等規(guī)模的SOA實施系統(tǒng)帶來的查詢?nèi)蝿?wù)都無法處理。所有SOA數(shù)據(jù)——工件和消息——都采用XML格式,并且使用層次表示法,這不是非常適合于結(jié)構(gòu)僵硬的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。  

  隨著SOA實施系統(tǒng)不斷擴(kuò)展,納入更多的端點/使用者、編制和用戶,這個問題尤為嚴(yán)重。缺少功能強(qiáng)大的存儲庫還會導(dǎo)致治理和管理工作的復(fù)雜化。譬如說,如果想改變注冊中心里面的一系列WSDL,使用XQuery的強(qiáng)大查詢功能來實現(xiàn)就顯得比較簡單。因為XQuery可根據(jù)查詢標(biāo)準(zhǔn)來選擇合理的工件,并進(jìn)行更新。因為SOA中的大多數(shù)工件是XML格式,所以需要以原生方式處理所有SOA XML數(shù)據(jù)的功能。因而,真正響應(yīng)及時的SOA存儲庫必須實施在原生XML數(shù)據(jù)庫(XDMS)上,而XQuery用于數(shù)據(jù)管理。  

  XQuery是一種非常靈活、功能強(qiáng)大的語言,用于XML數(shù)據(jù)檢索及管理。如果結(jié)合原生XDMS(XML數(shù)據(jù)庫管理系統(tǒng)),那么除了傳統(tǒng)方法外,又多了一種處理巧妙、高性能的選擇。傳統(tǒng)方法針對RDBMS SOA工件存儲區(qū),使用傳統(tǒng)的解析方法,對XML進(jìn)行中間層轉(zhuǎn)換,這種轉(zhuǎn)換既復(fù)雜,又緩慢。  

  XDMS可以加快SOA的實施,因為它使數(shù)據(jù)能夠作為原生XML加以存儲及處理。當(dāng)然,不是所有的原生XML數(shù)據(jù)庫其構(gòu)建方式都是一樣的,它們提供的功能也不是都一樣的。良好的XDMS應(yīng)當(dāng)能夠處理各種XML數(shù)據(jù),不必事先知道XML模式(XML Schema)的結(jié)構(gòu)。  

  事實證明,如果處理的XML文檔來自數(shù)據(jù)結(jié)構(gòu)不一的聯(lián)合系統(tǒng),那么這種功能就有很大優(yōu)勢。然后就可以在這樣一個平臺上構(gòu)建功能強(qiáng)大的組合式數(shù)據(jù)服務(wù)。  

  用正確的方法使用SOA能夠通過按需獲得的信息、服務(wù)重復(fù)使用、流程優(yōu)化、集成創(chuàng)新的第三方Web服務(wù),獲得業(yè)務(wù)效率、靈敏性及創(chuàng)新。讓SOA注冊中心和存儲庫成為SOA的基石,這可以確保企業(yè)的SOA基礎(chǔ)設(shè)施能夠得到最佳的管理和治理。  

  SOA能夠?qū)崿F(xiàn)一系列廣泛的用例(use case),可以跨不同的地理位置和交易合作伙伴涵蓋各種系統(tǒng)。回到我們之前探討的其中一個例子,許多制藥公司使用全國藥品代碼(NDC)作為供應(yīng)鏈和監(jiān)管流程的一部分。如果新藥添加、召回或者處方藥的專利保護(hù)到期,這個NDC數(shù)據(jù)庫就會不斷更新。  

  實施了SOA的企業(yè)可以訂購應(yīng)用廣泛的NDC數(shù)據(jù)庫Web服務(wù),這樣就可以實時更新這些數(shù)據(jù),因而新產(chǎn)品推出或者被召回產(chǎn)品從制藥供應(yīng)鏈撤下時,就可以有效地使用數(shù)據(jù),實現(xiàn)靈活應(yīng)對。  

  同樣,由于監(jiān)管部門的各種報告需求在不斷變化,必須從不同的IT系統(tǒng)搜集數(shù)據(jù)?;赟OA的方法可以輕松解決這個問題:幾個版本的類似Web服務(wù)可以在SOA存儲庫里面得到維護(hù),并且可根據(jù)數(shù)據(jù)參數(shù)進(jìn)行動態(tài)選擇。