當今社會,企業總是面臨著激烈的競爭和復雜多變的商業環境,企業需要對各種變化快速和有效地進行響應,并且利用變更來得到競爭優勢。這就意味著企業需要一種業務敏捷性IT系統架構來應對這種復雜多變的需求。SOA(Service-Oriented Architecture,面向服務的體系結構)的出現為企業信息化提供了新的思路和方法。基于SOA架構的IT系統,能夠更快、更靈活地部署,同時又具有良好的擴展性和伸縮性,能夠更好地將企業的信息資源進行整合,消除“信息孤島”,使IT系統與不斷變化的業務目標相一致,讓企業能夠隨需應變。
一 關于SOA的定義
SOA概念自被提出之后,不少國內外機構、企業均對SOA進行了定義和闡釋,但目前尚未有一個統一的、業界廣泛接受的定義。一般認為,SOA是一種架構模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。接口是采用中立的方式進行定義的,它應該獨立于實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種這樣的系統中的服務可以以一種統一和通用的方式進行交互。因此,本質上SOA不是一個產品,甚至算不上一項技術,而是一種構建以解決商業問題為中心的信息技術IT系統的思路。SOA的意義在于讓IT變得更有彈性,使業務與IT保持同步,從而更好適應變化。SOA的核心價值在于用新的思維方式將企業信息化解構為“組件化”業務模式,這些“組件”是可以重復使用的,然后如搭積木一般,將這些“組件”高效、靈活地拼接成企業的業務流程,以此推動商業創新。
二 SOA的基本特征
雖然SOA沒有標準的定義,但是SOA有以下幾個被廣泛認可的關鍵特性。
2.1 松耦合
SOA的一部分價值就在于它的服務的松耦合。服務是一個由服務提供者提供的、服務使用者請求的業務單元。松耦合指的是使用者能夠隨需應變將多種服務組合在一起來構建不同的組合服務,或者將組合服務進行解體,成為功能組件。同時,它要求這些服務之間保持一種相對獨立、無依賴的關系,當業務流程啟動時,這些服務彼此之間暫時地建立關聯,并在整個流程中維系這種相關性,流程結束后又重新回到靜止狀態,與之前相關聯的模塊不再保持相關性。這就像電話系統,當按下“通話”鍵時流程開始,才可以和對方通話,建立一個松耦合連接;通話結束后,又重新回到了“靜止”狀態,直到下一個連接再次建立。這樣電話服務商即使有一百萬個用戶,也不必提供一百萬個實時的電話鏈路,只要保證最高通話量就可以了。對松耦合系統的需求源于企業不斷變化的業務,業務應用程序需要變得更加靈活,以適應不斷變化的需求。盡管緊耦合的系統通常比較快,也安全,傳輸誤差的風險非常低,但是緊耦合意味著應用程序的不同組件之間的接口與其功能和結構是緊密相連的,因而當需要對部分應用或模塊進行某種形式的更改時,它們就顯得非常脆弱。而松耦合的系統,由于服務(應用程序)是獨立的。這就減少了因部分應用或模塊的變化而引發其他應用或模塊變化的風險。因此,在這個層面上講,松耦合系統更為可靠、靈活。
2.2 可重用
所謂重用性,就是指服務能夠應用于不同應用和業務流程的能力。通過重用可以獲得降低開發維護成本、縮短應用交付周期和提升質量等種種好處。服務的可重用性受創建該服務的顆粒度的直接影響,顆粒度可以理解為一個服務所包含功能的數量。通常顆粒度越小,重用性越好,但是粒度太小,會導致性能問題。并且業務任務與支持其的服務之間的映射會變得非常復雜。服務的粒度大小需要根據企業實際需求來權衡。
2.3 明確定義的服務接口
SOA本身就是為互操作性而生的,要實現這種交互就需要明確定義的接口,稱作服務契約。這些契約定義了服務的使用方法及使用者期望的最終結果,還包含了服務質量指標要求、安全性要求等等。服務契約描述采用中立、基于標準的方式進行定義,它獨立于底層平臺和編程語言。Web服務是實現SOA的方式之一,隨著Web服務標準的成熟和應用的普及,SOA的實現一般都會包含Web服務,甚至可以說Web成就了今天的SOA。對于用Web服務實現的SOA,WSDL(Web Services Description Language,Web服務描述語言)為定義接口和服務契約提供了可擴展的框架,它描述了服務交互所需的所有細節。同時它又屏蔽了服務實現的任何技術細節,這樣即使服務實現修改了也不會影響到服務請求者的邏輯,提高了業務流程的適應性。
2.4 基于開放標準
SOA的實現建立在大量的開放標準和協議之上。服務的互聯互通和互操作都存在相應標準,通過對標準的使用可以得到眾多好處,包括:
(1)減少對特定廠商的依賴;
(2)為服務請求者增加了使用不同服務提供者的機會;
(3)為服務提供者增加了被更多服務請求者使用的機會;
(4)增加了使用開放源代碼的標準實現以及參與這些實現的開發機會。目前在SOA系統中,除強調需要遵守技術標準(如SOAP、WSDL、UDDI)外,服務層的數據模型和流程模型也需盡可能基于一些成熟的業務領域標準或縱向的行業標準。
三 SOA對企業信息化需求的適應性
目前,很多企業的信息化面臨兩個困境,一是如何對各個應用系統進行整合,二是如何打造靈活的IT架構,以適應多變的業務需求。隨著國內企業信息化進程的不斷推進,早期以部門為導向的系統已經難以支撐企業的發展。企業需要一個面向企業的、集成的系統來處理更為復雜的業務。以新員工人職來說,需要涉及人力資源、財務和他將要服務的業務部門。從招聘、面試、入職、培訓到薪資的整個過程,是一個多部門協作的業務流程,企業信息化目標就是將這個過程由人為干預轉向自動實現。而很多企業中人力、財務、業務部門都有各自的系統,要實現企業的信息化目標,必須將這些建設在不同時期、與不同的廠商合作、應用不同技術、具有不同規模的應用系統集成起來。傳統的應用系統集成是垂直整合的,通常是采取建立系統間接口,然后實現系統對接,見圖1(a)。這種點對點的集成模式會造成邏輯關系隨著企業的應用增加成級數上漲,并且存在實施代價高、實施周期過長的問題。同時,系統接口之間必須遵循同樣的API(Application Programming Interface,應用程序編程接口)約束。當其中一個實體對象的代碼有了更改,那么訪問該對象的代碼也必須做出相應更改,從而約束了企業敏捷服務和自由擴充的實現。而SOA的設計思想是水平整合,對于SOA架構來說,應用系統暴露出來的業務功能就是服務。將各個系統的業務功能封裝成不同粒度的服務,通過定義明確的服務契約發布,然后利用企業服務總線(EntERPrise Service Bus,ESB)作為服務提供者和服務請求者之間的消息橋梁,對消息驅動和服務進行靈活的管理,使各應用系統實現互聯互動,見圖1(b)。
另一方面,目前很多企業都面臨結構轉型,業務創新和差異化競爭是企業保持競爭力和活力的必然選擇。傳統架構下的IT系統過于僵化,面對重大的業務和組織變更,常常需要花費很長的周期來調整系統,或者根本無法滿足新的需求。企業需要一種新的更加靈活的IT架構來快速響應新業務、新流程、新組織結構。基于SOA架構的系統,只需要對封裝好的服務進行重組,就可以快速部署新的業務流程。同時因為分離了業務邏輯和技術實現,業務人員通過流程、服務、數據對象、事件這些與他們有切實聯系的詞,就可以描述業務模型和業務需求,IT系統也更貼近企業的需求。
四 實現SOA的重要基礎:ESB
企業服務總線(ESB)是邏輯上與SOA所遵循的基本原則保持一致的服務集成基礎架構,它就像人的中樞神經,管理著所有服務、消息以及基于事件的交互。IBM定義了ESB應具備的4個基本功能:
(1)服務之間的消息路由;
(2)請求者和服務之間的傳輸協議轉換;
(3)請求者和服務之問的消息格式轉換;
(4)處理各種來自不同業務的事件。可以通過4個物品來對應理解這些功能:“路由器”:根據信息內容,在不同應用和服務之間進行信息傳輸和路由;“轉換器”:進行應用之間的通信協議轉換;“翻譯機”:進行應用之間的消息格式轉換;“收發室”:處理來自不同渠道的業務事件(同步傳輸、異步傳輸、發布,訂閱等方式)。
SOA從根本上來說就是要解決兩個問題:重用和異構。ESB從底層架構上對解決這兩個問題提供了技術支持。對于服務的重用,ESB提供了服務倉庫和消息的路由來實現服務之問的彼此調用。任何符合標準的服務都可以在服務倉庫中注冊并發布,一個應用如果需要調用一個服務,可以通過瀏覽或者訂閱發現該服務,不用知道這個服務的物理位置及如何調用,只需要發送一個調用的請求,ESB就會將請求路由給最合適的服務提供者。而對于異構環境的連接,這是ESB天生就具備的能力。首先,由于SOA架構中的服務都是基于標準的,這樣就極大簡化了ESB在集成異構性上的考慮。其次,ESB明確強調消息(Message)處理在集成過程中的作用,這里的消息指的是應用環境中被集成對象之間的溝通。由于集成對象都是服務,消息在應用服務之間傳遞時的格式是標準的,直接面向消息的處理方式成為可能。ESB只要在底層支持現有的各種通訊協議,那么對消息的處理就完全不考慮底層的傳輸細節,而直接通過消息的標準格式定義來進行。
如果把SOA比作一座城市,ESB就是其中的道路。ESB技術和產品的出現為SOA的落地找到了一條捷徑。
五 結語
SOA提供了一個從“服務”視角解決問題的思路和方法。這使得企業的IT資源能夠最大程度地重用,同時又滿足了IT系統對業務敏捷性的需求。SOA還指導企業信息資源的整合,讓企業更具活力。IBM、SAP、Oracle、Microsoft等大型IT公司正在不斷完善基于SOA的一些標準和構架,SOA已經成為企業信息化建設的必然趨勢。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:淺析面向服務的IT架構