引言
本文討論企業整合(集成)的新發展:以服務為中心的集成(Service-Oriented Integration,簡稱 SOI)。 您將了解到什么是 SOI,推動 SOI 發展的因素以及SOI 帶來的價值。作者討論了 SOI 解決方案所涉及的要素,和這些要素相關的技術、標準以及IBM的產品支持,最后作為總結將它們包括在 IBM 的集成參考架構中,指出如何實現各種集成需求。本文還討論了在企業集成實踐中需要重點注意的事情,如戰略規劃和IT管理。本文的姊妹篇"以服務為中心的企業整合-案例分析",用一個實際案例來說明基于 IBM 產品的實際 SOI 應用,幫助讀者感性地理解 SOI。
1. 企業集成的新方向: SOI
什么是"以服務為中心的集成"?
"以服務為中心的集成"是英文詞語"Service-Oriented Integration"的中文翻譯,簡稱 SOI。 它可以定義為:在"以服務為中心的體系架構"(Service-Oriented Architecture,SOA)中,通過服務的交互來集成各企業的 IT 資源,如分布的應用或者數據,幫助企業 IT 部門將已有但老舊而不靈活的系統集成起來,釋放其中功能或數據為可重用的服務與業務流程。
為什么需要"以服務為中心的集成"?
企業集成的推動因素。推動"企業應用集成"(Enterprise Application Integration, EAI )的因素,來自商務和技術兩個方面。從商務的角度,今天企業要在全球化的經濟環境中求生存和發展,就必須努力適應越來越強的競爭和越來越快的變化,這意味著一個企業的業務模型要變得靈活以快速應變,也就是隨需應變。在一個企業的業務模型變得靈活的轉型過程中,需要將業務流程不斷地自動化,然后跨部門橫向集成它們,并且管理和優化它們,這意味著支撐這些流程的技術基礎,即 IT 應用和數據資源等,需要在企業范圍內集成。所以,業務靈活應變的能力是 SOI 的驅動因素之一。
在技術方面,IT 部門面臨著業務部門越來越高的期望值,就是用更少的錢做更多的事情,但要做得更快、更好,這迫使 IT 部門考慮如何最大程度地重用已有應用的功能和數據資源,來支持新應用的開發。但這種重用面臨著如何將高度異構、分布的各個應用集成起來的難題,SOI是目前最有效的解決之道。在 SOI 中,首先各個應用的功能被封裝為基于標準來描述和供訪問的服務;其次,借助于 SOI 的通用連接能力,這些來自不同應用的服務,不需要關心對方的位置和實現技術,以松散耦合的方式相互交互來完成集成,所以只要服務的接口描述不變,服務的使用者和提供者雙方可以自由發生變化而互不影響;最后,通過服務組合,服務可以按不同的方式來組合成為不同的業務流程。當某個業務流程發生變化的時候,大多數時候,我們調整組裝服務的方式來滿足這種變化。總之,這種通過重用粗粒度服務而不是在底層編程來開發新應用以滿足業務新需求的方法,使得 IT 組織能夠以更少的投入、更快的速度、更好的質量來開發應用。綜上所述,可以靈活應變的重用方式,是 SOI 的另一個驅動因素。
集成解決方案的發展沿革。集成企業應用的方法各種各樣,初級一點的借助于簡單的機制如應用編程接口,管道、共享目錄和文件,或者某些傳輸協議如 FTP 來交換數據和互操作;高級一點的則使用各種消息中間件來提供消息的傳輸、轉換、合并、路由和分發、事件的發布和訂閱等;分布式計算技術,如 CORBA,COM 等,也有較廣的使用。
在初期實踐中,應用之間的連接拓撲大多數情況下是點對點的,硬編碼的,所使用的協議是非標準的,功能的提供者和使用者之間是緊耦合的,功能的粒度通常較細,數據的表示也不統一。隨著集成復雜度的增長,和實踐經驗的總結,開始出現一些從好的實踐中總結出來的集成模式,如消息中樞(Message Backbone)、信息總線、應用集成中心(Application Integration Hub),這些模式從不同的角度以不同的方式來管理集成的復雜性,但都或多或少地嘗試提供一個集成基礎設施來簡化應用之間日趨復雜的連接拓撲,提供異構數據和功能訪問方式之間的轉換,甚至提供一致的數據和功能表示與訪問方式。通過元數據和應用相關的領域知識,這些集成基礎實施提供了很多中介和轉換的機制與模式來實現高級的功能,如路由、動態選擇等能力。
隨著互聯網絡技術的發展、普及和應用,相關技術和標準,如 XML 和 Web Service,被廣為接受,這給應用集成帶來了新的發展。企業應用架構的風格開始朝著以服務為中心的方向發展,而企業應用集成也轉向以服務為中心的集成,服務的描述和訪問基于開放一致的標準(如 WSDL),連接應用的基礎設施繼承了過去發展的成果,并通過支持開放標準,來提供通用的連接服務,包括基本的服務如消息傳輸、轉換,事件的發布和訂閱,服務的中介(選擇、路由),和高級的服務如安全、事務、服務質量,以及可管理性,來使得服務在一個標準、開放、可靠、安全、可管理、滿足服務質量要求的環境下,以松散耦合的方式相互交戶,根據需求動態地進行企業應用集成,達成非常高程度的靈活應變能力和重用能力。SOI 是對現有集成技術與實踐的總結和標準化。
SOI 的好處。SOI 繼承和發展了傳統的 EAI,比較而言,SOI 的好處在于:
- 定義良好而又基于標準的接口 - 服務的描述易于理解,而且標準一致
- 實現技術和位置的透明 - 提供服務功能的應用,它的位置以及所使用的實現技術被接口所屏蔽,事實上,不需要一個固定的服務提供者
- 靈活性 - 只要服務的接口不變,服務的提供者和服務的使用者都可以變化而不影響彼此,從而將變化帶來的影響減少到了最少
- 重用能力
- 漸進式集成 - 在 SOI 中,通過將若干已有系統的相關功能轉化為服務來進行集成。隨著這些項目的進行,可重用的服務越來越多,最終,新的集成需求將絕大多數可以通過已有的服務來完成。所以,我們可以從當前重要的集成需求開始來封裝已有系統的功能和開發必要的新服務,以漸進的方式逐步地擴展到整個企業范圍內的集成。更重要的是,由于服務的靈活性,即使已有系統遷移到新的技術平臺,甚至是被替代,都不會影響到依賴于這個應用所提供功能的那些應用,從而保證了集成對變化的適應能力,使得業務靈活性有一個堅實的基礎。這也意味著從傳統規模大、投入大、周期長、見效慢、風險高、專有技術,轉向小步快跑、見效迅速、風險低、基于標準的集成方式。這對于如今面對業務需求快速變化的 IT 機構來說,SOI 在投入和工程方面的好處,是非常吸引人的
2. SOI解決方案
2.1. SOI解決方案的要素
通常,完整的SOI 解決方案包括如下要素:
- 代表應用的功能和數據資源的服務;
- 提供連接服務的基礎設施即企業服務總線(Enterprise Service Bus, ESB),連接已有應用的連接器(Connector)和適配器(Adapter);
- 元數據及其管理如服務描述和服務注冊管理(Service Registry)等;
- 將服務組合成業務流程的引擎如 BPEL4WS 引擎;
- 業務流程管理和業務績效管理的部分;
- 一個基于標準的編程模型以及支持它的建模、開發和組裝、測試、部署和管理的端到端工具環境;
IBM的 Websphere 業務集成參考架構(見圖1,以下稱參考架構)是典型的以服務為中心的企業集成架構,本文接下來的討論都將以此參考架構為背景進行。
以服務為中心的企業集成采用"關注點分離"(Separation of Concern)的方法規劃企業集成中的各種架構元素,同時從服務視角規劃每種架構元素提供的服務,以及服務如何被組合在一起完成某種類型的集成。這里架構元素提供的服務既包括狹義的服務(WSDL描述),也包括廣義的服務(某種能力)。從服務為中心的視角看來,企業集成的架構按圖1所示的方式劃分為六大類:
- 業務邏輯服務(Business Logic Service):包括用于實現業務邏輯的服務,和執行業務邏輯的能力。這其中包括業務應用服務(Business Application Service)、業務伙伴服務(Partner Service)以及應用和信息資產(Application and Information asset)。
- 控制服務(Control Service):包括實現人(people),流程(process)和信息(information)集成的服務,以及執行這些集成邏輯的能力。
- 連接服務(Connectivity Service):連接服務通過提供企業服務總線提供分布在各種架構元素中服務間的連接性。
- 業務創新和優化服務(Business Innovation and Optimization Service):用于監控業務系統運行時服務的業務性能,并通過及時了解到的業務性能和變化,采取措施適應變化的市場。
- 開發服務(Development Service):貫徹整個軟件開發生命周期的開發平臺,從需求分析,到建模、設計、開發、測試,維護全面的工具支持。
- IT服務管理(IT Service Management):支持業務系統運行的各種基礎設施管理能力或服務,如安全服務、目錄服務、系統管理和資源虛擬化。
2.2. 連接服務 - 企業服務總線
企業服務總線(Enterprise Service Bus),以下簡稱ESB, 是過去消息中間件的發展,ESB 采用了"總線"這樣一種模式來管理和簡化應用之間的集成拓撲結構,以廣為接受的開放標準為基礎來支持應用之間在消息、事件和服務的級別上動態地互聯互通。
ESB 的基本特征和能力包括:描述服務的元數據和服務注冊管理;在服務請求者和提供者之間傳遞數據,以及對這些數據進行轉換的能力,并支持由實踐中總結出來的一些模式如同步模式,異步模式等;發現、路由、匹配和選擇的能力,以支持服務之間的動態交互,解耦服務請求者和服務提供者。高級一些的能力,包括對安全的支持、服務質量保證、可管理性和負載平衡等。
ESB 所提供的基于標準的連接服務,將應用中實現的功能或者數據資源轉化為服務請求者能以標準的方式來訪問的服務;當請求者來請求一個服務時,ESB 中這種中介轉化過程可能簡單到什么也沒有,也可能要很復雜的中介服務支持,包括動態地查找、選擇一個服務,消息的傳遞、路由和轉換、協議的轉換。這種中介過程,是 ESB 借助于服務注冊管理以及問題域相關的知識(如業務方面的一些規則等)自動進行的,不需要服務請求者和提供者介入,從而實現了解耦服務請求者和提供者的技術基礎,使得服務請求者不需要關心服務提供者的位置和具體實現技術,雙方在保持接口不變的情況下,各自可以獨立地演變。
所以,ESB 采用總線結構模式簡化了應用之間的集成拓撲,通過源自實踐的模式,提供了基于標準的通用連接服務,使得服務請求者和服務提供者之間可以以松散耦合、動態的方式交互,從而在不同層次上使得SOI 解決方案是一個松散耦合、靈活的架構。
需要注意的是,ESB 是一種架構模式,不能簡單地等同于特定的技術或者產品,但實現 ESB 確實需要各種產品在運行時和工具方面的支持。IBM 有很好的產品支持,運行時支持包括 WebSphere ESB 和 WebSphere Message Broker;而工具方面 IBM 則有 WebSphere Integration Developer,支持用戶以圖形界面的方式來完成相關的開發任務,如發布服務,使用各種模式,轉換消息,定義路由等等。
2.3. 業務邏輯服務
整合已有應用 - 應用和信息訪問服務。已有應用和信息是實現業務邏輯和業務數據的重要資產。通過集成已有的應用和信息將可以在已有企業系統上實現更多增值服務,所以集成已有應用和信息是企業集成中重要的一環。
以服務為中心的企業集成通過應用和信息訪問服務(Application and Information Access Service)來實現對已有應用和信息集成。它通過各種適配器技術將已有系統中的業務邏輯和業務數據包裝成企業服務總線支持的協議和數據格式。通過企業服務總線,這些被包裝起來的業務邏輯和數據就可以方便的參與上層的業務流程,從而已有應用系統的能力可以得以繼續發揮。這里的已有應用包括遺留應用、預包裝的應用和各種企業數據存儲。在參考架構中,主要有兩類訪問服務:
- 可接入服務(On-Ramp Service): 通過各種消息通信模式(單向、請求/應答和輪詢)將業務邏輯和業務數據包裝成企業服務總線可以訪問的功能。
- 事件發現服務(Event Detect Service) : 提供事件通知服務將已有應用和數據中的變化通過事件框架發布到企業服務總線上。
整合新開發的應用 - 業務應用服務。和已有應用和數據類似,新開發的應用也作為重要的業務邏輯成為企業集成的目標。以服務為中心的企業集成通過業務應用服務(Business Application Service)實現新應用集成。一方面業務應用服務幫助程序員開發可重用、可維護和靈活的業務邏輯組件,另一方面,它也提供運行時的集成提供對業務邏輯組件的自治管理。在參考架構中,有三類業務應用服務:
- 組件服務(Component Service):為可重用的組件提供應用的運行時容器管理服務,如對象持久化、組件安全管理和事務管理等。
- 核心服務(Core Service):提供運行時的服務,包括內存管理、對象實例化和對象池、性能管理和負載均衡、可用性管理等。
- 接口服務(Interface Service):提供和其他企業系統集成的接口,如其他企業應用,數據庫、消息系統和管理框架。
整合客戶和業務伙伴(B2C/B2B)-伙伴服務。以服務為中心的企業集成通過伙伴服務提供與企業外部的B2B的集成能力。因為業務伙伴系統的異構性,伙伴服務需要支持多種傳輸協議和數據格式。在參考架構中,提供如下服務:
- 社區服務(Community Service): 用于管理和企業貿易的業務伙伴,支持以交易中心(Trade Hub)為主的集中式管理和以伙伴為中心的自我管理。
- 文檔服務(Document Service):用于支持和業務伙伴交換的文檔格式,以及交互的流程和狀態管理,支持主流的RosettaNet、EDI和AS1/AS2等。
- 協議服務(Protocol Service):為文檔的交互提供傳輸層的支持,包括認證和路由等。
2.4. 控制服務
數據整合-信息服務。企業數據的分布性和異構性是應用系統方便訪問企業數據和在企業數據之上提供增值服務的主要障礙。數據集成和聚合技術在這種背景下誕生,用于提供對分布式數據和異構數據的透明訪問。
以服務為中心的企業集成通過信息服務提供集成數據的能力,目前主要包括如下集中信息服務:
- 聯邦服務(Federation Service): 聯邦服務提供將各種類型的數據聚合的能力,它既支持關系型數據,也支持象XML數據、文本數據和內容數據等非關系型數據。同時,所有的數據仍然在自己本身的方式管理。
- 復制服務(Replication Service):復制服務提供遠程數據的本地訪問能力,它通過自動的實時復制和數據轉換,在本地維護一個數據源的副本。本地數據和數據源在技術實現上可以是獨立的。
- 轉換服務(Transformation Service):轉換服務用于數據源格式到目標格式的轉換,可以是批量的,或者是基于記錄的。
- 搜索服務(Search Service):提供對企業數據的查詢和檢索服務,既支持數據庫等結構化數據,也支持象PDF等非結構化數據。
流程整合- 流程服務。企業部門內部的IT系統通過將業務活動自動化來提高業務活動的效率。但是這些部門的業務活動并不是獨立的,而是和其他部門的活動彼此關聯的。勿容置疑,將彼此關聯的業務活動組成自動化流程可以進一步提高業務活動的效率。業務流程集成正是在這一背景下誕生的。
以服務為中心的企業集成通過流程服務來完成業務流程集成。在業務流程集成中,粒度的業務邏輯被組合成業務流程。流程服務提供自動執行這些業務流程的能力。在參考架構中,流程服務包括如下內容:
- 編排服務(Choreography Service): 編排服務通過預定義的流程邏輯控制流程中業務活動的執行,并幫助業務流程從錯誤中恢復。
- 事務服務(Transaction Service):事務服務用于保證流程執行中的事務特性(ACID)。對于短流程,通常采用傳統的兩階段提交技術,對于長流程,一般采用補償的方法。
- 人工服務(Staff Service):人工服務用于將人工的活動集成到流程中,一方面它通過關聯的交互服務使得人工可以參與到流程執行中,另一方面它需要管理由于人工參與帶來的管理任務如:任務分派,授權和監管等。
用戶訪問整合 - 交互服務。將適當的信息,在適當的時間,傳遞給適當的人是一直是信息技術追求的目標。用戶訪問集成是實現這一目標的重要一環,它負責將信息系統中的信息傳遞給客戶,不管它在那里,它以什么樣的設備接入。
以服務為中心的企業集成通過交互服務來實現用戶訪問集成。參考架構中的交互服務包括如下類型:
- 交付服務(Delivery Service): 交付服務提供運行時的交互框架,它通過各種技術支持同樣的交互邏輯可以在多種方式(圖形界面、語音和普及計算消息)和設備(桌面、PDA、無線終端等)上運行,比如通過頁面聚合和標簽翻譯使得同一個Portlet可以在桌面瀏覽器和PDA瀏覽器上展現。
- 體驗服務(Experience Service): 通過用戶為中心的服務增強用戶體驗, 其中的技術包括:個性化、協作、單點登錄等。
- 資源服務(Resource Service): 提供運行時交互組件的管理,如安全配置、界面皮膚等。
2.5. 開發支持
企業集成涉及面很廣,不僅需要開發新的應用并使其成為可以被用于企業集成的功能組件,而且需要將被包裝的已有的應用和數據用于集成;不僅有企業內部的集成,而且需要和企業外部的系統集成;不僅有交互集成和數據集成,還有功能和應用集成??紤]到這其中的每部分在技術上都會涉及到各種平臺和中間件,企業集成的技術復雜性是普通應用開發不可比擬的。這種技術復雜性需要更強有力的開發工具支持。企業集成的開發工具需要有標準的工具框架,這些工具能夠以即插即用方式支持來自多家廠商的開發工具。同時,企業集成的開發工具需要支持整個軟件開發周期,以提高開發過程中各種角色的生產力。
在以服務為中心的企業集成中,除了需要支持整個軟件開發周期和標準的工具框架以外,開發服務需要提供和服務開發相關的技術:
- 用于支持以服務為中心的企業集成方法學和建模,如SODA和IBM的SOMA(Service Oriented Modeling and Architecture)
- 用于服務為中心的編程模型,如WSDL, BPEL4WS,SCA和SDO等
開發環境和工具中為不同開發者的角色提供的功能被稱為開發服務。根據開發過程中開發者角色和職責的不同,有如下四類服務:
- 建模服務(Model Service):用于構建可視化的業務流程模型
- 設計服務(Design Service):根據業務模型,進一步分解為服務組件;設計服務用于設計和開發這些服務組件。
- 實現服務(Implementation Serivice):用于將設計和開發的服務組件部署到生產環境中
- 測試服務(Test Service):支持服務組件的單元測試和系統的集成測試
2.6. 業務創新和優化
一方面,以服務為中心的企業集成通過各種集成提高信息流轉速度,從而提高生產效率。另一方面,以服務為中心的企業集成也為業務創新和優化提供了支持平臺-業務創新和優化服務。
業務創新和優化服務以業務性能管理(BPM)技術為核心提供業務事件發布、收集和關鍵業務指標監控能力。具體而言,業務創新和優化服務由以下服務組成:
- 公共事件框架服務(Common Event Infrastructure Service):通過一個公共事件框架提供IT和業務事件的激發、存儲和分類等。
- 采集服務(Collection Service):通過基于策略的過濾和相關性分析檢測感興趣的服務。
- 監控服務(Monitoring Service):通過事件與監控上下文間的映射,計算和管理業務流程的關鍵性能指標(KPI)
業務創新和優化服務與開發服務是緊密相關聯的。在建模階段被確定的業務流程的關鍵性能指標被轉為特別的事件標志被構建到業務流程中,建模過程中的業務流程也被轉換為用于監控服務的監控上下文。在業務流程執行過程中,這些事件標志激發的事件被公共事件框架服務截獲,經過采集服務的過濾被傳遞給監控服務用于計算關鍵性能指標。關鍵性能指標作為重要的數據被用于重構或優化業務流程。這種迭代的方法使得業務流程處于不斷的優化中。
2.7. 管理支持
為業務流程和服務提供安全、高效和健康的運行環境也是以服務為中心的企業集成重要的部分,它由IT服務管理來完成。IT服務管理包括如下兩部分:
安全和目錄服務(Security and Directory Service):企業范圍的用戶、認證和授權管理,如單點登錄(SSO);系統管理和虛擬化服務(System Management and Virtualization Service):用于管理服務器,存儲、網絡和其他IT資源。
IT服務管理中相當一部分服務是面向軟硬件管理的,而另外一部分服務,特別是安全和目錄服務,以及操作系統和中間件管理,會通過企業服務總線和其他服務集成在一起,用于實現業務流程和服務的非功能性需求,如性能、可用性和安全性等。
2.8. SOI中技術標準和IBM產品支持
下面的表格列出樂SOI架構元素中的技術標準,和IBM的產品如何支持這些架構元素。
表 1:SOI架構元素中的技術標準以及支持架構元素的IBM的產品
3. SOI 實踐
企業集成首先是一個戰略性的活動,在我們的經驗中,有很多的企業將重點放在集成技術上,這導致了很多失敗的案例。作為一個戰略性的活動,企業集成首先要從全局出發,制定整個企業集成的策略。這種策略包括業務目標,集成路線圖,技術規范,和對開發管理提出的新要求。
企業集成的目的是為了整合 IT 資源,形成一個靈活的 IT 基礎設施,來滿足業務隨需應變的要求。所以要充分考慮業務面的壓力和痛點,未來發展和轉型對 IT 帶來的新需求,以確定集成的戰略目標。在環境發生變化時,要隨業務面的調整作必要的修改。在我們的觀察中,企業 IT 組織往往由于缺乏高級業務管理人員的參與,而無法制定與業務對齊的集成戰略,失去企業集成賴以成功的最重要的基礎。
在制定集成的戰略目標后,要根據目標的優先級,考察當前 IT 環境,確定集成遠景,分析差距,定義集成路線圖??疾飚斍翱傻玫降募夹g、產品、相關技能和服務的可獲得狀況,定義高層技術規范,包括集成方法、參考架構、技術和產品的選擇標準、所遵循的業界標準等等。然后結合人力、物力和資金的投入情況,導出項目群。在我們的觀察中,很多企業為了應付業務需求,匆忙上馬,缺乏統一規劃,導致企業 IT 架構越來越混亂,不能適應業務的變化而日漸被動。
由于集成是一個企業范圍內的活動,一個集成項目往往影響若干個部門,其結果也由多個部門所共享使用,所以需要企業級的協調機制。這要求企業調整其已有的 IT 管理(IT Governance)機制,要有一個角色來協調集成項目,并被授權,利用 IT 開發管理的過程,保證相應集成規范得到執行。
另外值得注意的是關于成熟度的考慮,不同企業有不同的成熟度,包括業務本身、IT 系統、IT 組織自身在技能和管理方面,它們的成熟度,對企業集成的成功與否,也都有很大的影響。對成熟度的考察,會幫助我們制定更穩健、實際的集成策略。
服務建模(Service Modeling)是 SOI 活動中至關重要的活動。它包括如何找到和確定服務,如何處理服務的粒度,如何通過服務體現和實現業務目標,如何詳細說明服務,如何確定服務與已有系統的關系等。在我們的實踐中,這對很多 IT 組織機構都是一個難題,可以考慮一些專業公司的培訓,如 IBM SOA 設計中心基于豐富的實踐所提供的各種服務。
4. 結束語
以服務為中心的企業集成方法是對以往企業集成技術的繼承與發展。它基于關注點分離、松散耦合等源自最佳實踐的架構原則,繼承了EAI,消息總線,流程集成,數據集成等優秀技術,結合以服務為中心(Service Orientation)的先進思想,正在給企業集成領域帶來巨大的變化。隨著SOI及相關技術的逐漸成熟,SOI正在成為企業集成的新方向。本文的姊妹篇"以服務為中心的企業整合-案例分析",將用一個實際案例來說明基于 IBM 產品的實際 SOI 應用,幫助讀者感性地理解 SOI。