EA與SOA概念辨析和實施應用建議

字號:

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