EA與SOA概念辨析和實(shí)施應(yīng)用建議

字號(hào):

EA和SOA作為頻頻出現(xiàn)的兩個(gè)名詞,在概念、活動(dòng)、流程和結(jié)果方面存在重疊,作為設(shè)計(jì)師或者架構(gòu)師的我們?cè)撛趺纯创蛯?shí)踐它們呢?近期,IBM developerWorks中國(guó)網(wǎng)站上發(fā)布了一個(gè)幫助理解SOA與EA(Enterprise Architecture,企業(yè)體系結(jié)構(gòu))的系列文章,試圖分析這兩個(gè)概念。
    EA 除了是體系結(jié)構(gòu)外,更多的是一個(gè)規(guī)程,同時(shí)強(qiáng)調(diào)通過需求獲取,定義IT與業(yè)務(wù)策略的結(jié)合;SOA也是一個(gè)體系結(jié)構(gòu),主要是根據(jù)企業(yè)需要對(duì)資源進(jìn)行關(guān)聯(lián),與EA不同的是,SOA中所有資源都是統(tǒng)一的服務(wù)形式。兩者普遍采用層次方式組織體系結(jié)構(gòu),其中EA概念由于提出的比較早,而且不同廠商都有自己獨(dú)立的方法論,因此EA中還在層次體系上縱向劃分出很多視圖(微軟稱之為面向業(yè)務(wù)的概念視圖、面向應(yīng)用的邏輯視圖和面向部署的物理視圖;IBM則稱之為面向各類技術(shù)領(lǐng)域的技術(shù)性部分和面向業(yè)務(wù)的業(yè)務(wù)性部分)。但如果把EA和SOA的每個(gè)領(lǐng)域剖開看的話,還是有很多不同:
    領(lǐng)域 SOA框架 EA框架
    業(yè)務(wù) 業(yè)務(wù)流程 業(yè)務(wù)體系結(jié)構(gòu)
    應(yīng)用程序 服務(wù)與組件 應(yīng)用程序體系結(jié)構(gòu)
    集成與中間件 集成體系結(jié)構(gòu)/ESB 技術(shù)體系結(jié)構(gòu)
    數(shù)據(jù) 數(shù)據(jù)體系結(jié)構(gòu) 信息體系結(jié)構(gòu)
    操作 QoS、安全性、監(jiān)視和基礎(chǔ)設(shè)施 技術(shù)體系結(jié)構(gòu)
    不難看出,SOA的每個(gè)領(lǐng)域都只是EA對(duì)應(yīng)領(lǐng)域的一個(gè)細(xì)化,出現(xiàn)這種情況也很容易理解,因?yàn)榧夹g(shù)上SOA調(diào)用的資源僅僅是服務(wù),而這只是EA中資源的一種形式而已,因此從每個(gè)層次上看,SOA都是服務(wù)化的特例。以環(huán)境集成而言,SOA使用ESB進(jìn)行服務(wù)的集成,但在EA中除了基于服務(wù)的集成外,還可以從通過很多手段集成:
    數(shù)據(jù)的集成:在很多企業(yè)中,這種方式使用的非常普遍,由于網(wǎng)絡(luò)隔離、應(yīng)用建設(shè)時(shí)間先后、開發(fā)平臺(tái)等因素,企業(yè)內(nèi)部應(yīng)用林林總總,但關(guān)鍵的數(shù)據(jù)(尤其是核心業(yè)務(wù)數(shù)據(jù))總是處于中心位置,應(yīng)用間圍繞數(shù)據(jù)進(jìn)行集成。
    功能性集成:在多個(gè)應(yīng)用采用相同開發(fā)平臺(tái)的情況下也非常普遍,比如.NET平臺(tái)可以通過WCF、.NET Remoting、COM+完成;Java平臺(tái)可以通過EJB、RMI等方式集成;簡(jiǎn)單的跨平臺(tái)的技術(shù)也很多,比如Socket。
    展現(xiàn)的集成:這個(gè)在Web應(yīng)用大行其道的今天,也很常見:企業(yè)增加新Web應(yīng)用后在Portal上加個(gè)超級(jí)鏈接,這樣通過UI部分的穿針引線同樣可以集成。
    這樣看,SOA似乎只是EA中“術(shù)業(yè)有專攻”的一個(gè)分支而已?不盡然。文章的第二部分說明了SOA在體系、治理上與EA的諸多不同之處。
    那么作為用戶而非IT廠商的我們?cè)撛趺催x擇呢?
    如果信息化僅僅是平地開始建設(shè),還沒有到需要應(yīng)用間互相整合的時(shí)候,識(shí)別出關(guān)鍵IT資源,根據(jù)未來的IT規(guī)劃選擇一個(gè)近期預(yù)期集成方法倒是很經(jīng)濟(jì)的做法。EA等于企業(yè)給自己提供了更多的選擇機(jī)會(huì)。
    如果已經(jīng)有了一定數(shù)量的應(yīng)用,出現(xiàn)了統(tǒng)一整理的需要,但所有的開發(fā)均基于單一的開發(fā)平臺(tái)(.NET或Java),也不用盲目趕時(shí)髦走SOA,也許一個(gè)企業(yè)內(nèi)部的集中數(shù)據(jù)交換平臺(tái)從成本上、運(yùn)行管理上、投資和執(zhí)行效率上都是不錯(cuò)的選擇,用EA的觀點(diǎn)分析企業(yè)內(nèi)部自己的事情。
    如果企業(yè)運(yùn)轉(zhuǎn)依賴于Internet上的各個(gè)合作伙伴,但是企業(yè)內(nèi)部應(yīng)用很單一,也不一定用SOA,關(guān)鍵業(yè)務(wù)資源暴露為服務(wù)就可以了。但要注意這些服務(wù)的標(biāo)準(zhǔn)化(公共標(biāo)準(zhǔn)和行業(yè)標(biāo)準(zhǔn)),這樣如果有一天需要過渡到SOA的時(shí)候,也可以開著汽車換輪子。
    如果企業(yè)應(yīng)用類型、開發(fā)平臺(tái)、運(yùn)行平臺(tái)、消息機(jī)制已經(jīng)很繁多的時(shí)候,與其作個(gè)乘法不如做個(gè)加法,把大家都連接到服務(wù)總線上,用SOA中“服務(wù)”這個(gè)實(shí)施上相對(duì)簡(jiǎn)單的概念解決復(fù)雜的“大麻煩”。
    還有一點(diǎn),就是一定要算經(jīng)濟(jì)賬,無論是EA還是SOA,三五年后肯定又會(huì)過時(shí),用EA或者SOA的觀點(diǎn)規(guī)劃IT與業(yè)務(wù)遠(yuǎn)景的契合是必要的,但現(xiàn)在就把自己的IT環(huán)境大動(dòng)干戈地折騰一下,“劃算”嗎?