摘要:雖然這個初始的例子看起來并不是太復雜,但如果將在全球的商業機構數量相乘,那系統就會很快變成意大利面條式的一團糟了。
在現代商業中,許多組織為了在不同的領域有所作為,采取了收購其它公司的方式,并因此在全球范圍內留下了深刻的足跡。這些被收購的公司有時可以保持 基本完全獨立,而有時則成為將各種業務整合在一起的一個重要組成部分。在這一問題空間內的較大的一項挑戰是:你或許打算將這些公司整合在一起,以展現出整 個公司組織的一個單一的全局視圖,使客戶與合作伙伴們能更方便地與你的組織進行整合。
本文中,我們將以一個基于真實世界場景的虛構示例作為研究對象,觀察一些典型的挑戰,并詳細分析一些為了使這個解決方案獲得成功應實現的良好實踐。
?
?
業務背景在本示例中,我們將觀察一個名為Acme Employee Assistance Group的公司,簡稱Acme。作為一家大公司,Acme在全球各處都擁有著數量龐大的本地業務,它的發展策略還包括在新開發的國家中收購其它商業機 構。他們的核心業務是為其它公司的員工在全球范圍內外出旅游時提供支持服務。Acme與來自許多國家的公司簽訂了合同,而合同的執行由Acme在當地的商 業機構進行管理。由于每個國家都有一些特別的管理需求,這意味著創建一個管理所有客戶的全局應用程序不是一件簡單的事,并且Acme的大多數業務都依賴于 一個非常陳舊的遺留IT系統。
當Acme的客戶中的某個員工在外出旅行時需要幫助時,一項很大的挑戰就出現了。他們會聯系當地的Acme辦公室,隨后辦公室就會為該員工提供各種支持所必要的幫助。這意味著當地的Acme辦公室必須能夠訪問該員工的本處地的系統。
下圖的例子表示,當一名來自英國的員工正在澳大利亞尋求幫助時系統的處理過程。
當你首次考慮這個解決方案的需求時,作為一名整合構架師(Integration Architect),你或者會很快回想起那種老式的意大利面條式整合圖,你應該會在那些缺乏集中式整合能力的企業的某些應用中看到過那種圖形。而當前的 問題領域類似于那些過去曾遇到過的挑戰,只是它已經擴展到了全球的范圍。
下圖顯示了你對這個解決方案模型的一種可能的理解方式。
?
?
新的解決方案模型在當今的云服務時代,在同一個問題上你擁有了一些比過去更多的架構選擇。你可以將云服務當作你的集線器,并且使用一個基于平臺即服務(Paas)的 消息傳遞系統作為這個架構的核心,這也意味著你所關注的挑戰將從每個商業機構相互間的直接連接,轉移到讓這些商業機構連接到云服務的功能上。
下圖展示了這種軸輻式模式在全球范圍的應用。
這種類型的項目中依然有著巨大的障礙需要你去克服,但現如今類似于Windows Azure這樣的云提供商允許你在非常短的時間內將你的數據中心連接到某個云端的消息系統,而且對基礎架構方面的需求也很小。這種方式造就了在整個組織內 傳遞消息的能力,它的成功也指導了我們如何以較佳的方式將這種消息傳遞能力暴露給我們的客戶與合作伙伴。
為了實現這一點,我們在架構中需要3個關鍵級別的能力。首先,我們需要建立起本地商業機構的企業應用整合(EAI)能力,它能夠連接云端的消息系統,并能夠與業務線應用程序進行整合。
處于架構中間的是一個整合平臺,它包含了消息傳遞的能力,并且為所有我們有可能需要整合的第三方系統提供了EAI的能力。
最后一級是面向公眾的終端,在這里我們有一套API以及用戶界面,它們將開放給那些需要與Acme進行整合的系統,如下圖所示:
?
從這張功能圖中可以看出,系統首先通過一組REST API為應用整合公開的必需的接口,此外還為那些需要用戶手動查看數據的、技術能力較低的合作伙伴創建一個專門的網站。
在接下來的一張圖中,你將看到以上所列舉的各項能力將怎樣與每個商業機構中的實際系統相關聯。你將看到每個商業機構都建立了一個整合產品,它能夠連接消息系統,而這個消息系統又能夠與整個業務線應用程序相整合。這種整合系統的示例有BizTalk及Websphere。
?
希望到了目前這個階段,你已經能夠清晰地看到一個潛在的架構,它能夠在這個全球的混合式整合模式中交付所需的功能。這個項目依然會面臨許多挑戰,但由云端提供的這一新的解決方案途徑意味著我們能夠以一種與過去不同的方式處理這個系統了。
接下來我們將分析一些你需要考慮的關鍵因素,以及你需要遵循的某些實踐,按照我的經驗來看,這些實踐是你要達到成功所必需的知識。
?
?
考慮因素與良好的實踐作為本文的一部分,我打算介紹一些我對某些關鍵考慮因素與良好實踐的想法,它們與成功地交付這種解決方案是密不可分的。其中的某些部分特定于云服務,而某些部分則是整合解決方案中較為常見的。為了將這些考慮因素與實踐分解成不同的區域,我們將從以下角度對他們進行分析:
此外還有一些方面或者你也會考慮到,例如交付以及解決方案的運維方面的問題,不過這部分就留到以后再討論吧
組織方面的考慮因素這一部分會討論一些組織方面的關鍵問題,但這或許會成為一個很大的主題,因此我還是會讓這一部分盡量保持簡短,并讓各位專注于之后的偏技術領域的部分。
通用數據模型為了給整個組織展現一個通用的API集合,必需要有一個通用的、與商業機構無關的數據模型。如果該組織并沒有一個現有的數據模型,那這或者會成為整 個項目中最困難的部分。一個通用的數據模型意味著組織外的那些人對某個實體有著通用的認識,無論該實體來自于哪個商業機構。這個通用的數據模型可以展現為 權威的消息。
讓本地商業機構處理本地的問題每個商業機構都會面臨獨一無二的挑戰,這些挑戰都應該由這些商業機構自行處理,因為他們在相關的領域有著專業特長。至于之前所說的通用數據模型的部分,對于一個本地商業機構來說,它所面臨的一個挑戰是如何將它自己的數據映射到通用數據格式中。
80/20原則很難在一開始就預見到所有的業務場景,而且每個商業機構都有可能會面臨完全不同的某些場景,這種場景就不太值得去實現。在這種例外情況下,某個顧問可以選擇給適當的商業機構直接打電話。
共享的與本地的運行成本這個項目的成本模型或者會變得非常有趣。本地商業機構的EAI成本與它們通常的運行成本應該非常接近,或者它們需要擴展某些系統,但它們應該已經了 解如何去處理這一部分成本了。而他們很可能不太了解的那部分新成本將來自于云端的REST API以及消息系統。你將面臨的挑戰為那部分潛在的跨多個商業機構的成本設計出一種分解方案。在這種情況下,你的組織應該選擇接受一份Windows Azure企業協議,這樣的話總體運行成本就會非常低了。
技能與經驗成功實現該項目的一個關鍵因素就是確保你的團隊中具有熟悉整合經驗的人才。組織經常會落入某個陷阱中,即認為任何開發者都能夠處理整合的問題,但在類似于這樣的大型復雜項目中,專業技能與經驗會顯得非常有價值。
?
?
設計下面將討論一些專注于設計的考慮因素:
協議與消息通道在這個架構中,我們選擇了Windows Azure消息總線(Service Bus)作為中央消息集線器,它為我們提供了消息系統的各種便利。并且它支持多種不同的協議,意味著我們可以使用多種不同的技術連接到它。除了在 Windows Azure網站上為主要編程語言提供的類庫之外,Windows Azure消息總線還支持REST與AMQP。
將EAI工作保持在邊緣地帶這個云端的混合架構有一個較低層次的考慮因素,即應該在哪里進行EAI。EAI應該盡可能實現在本地商業機構內,而不是實現在云端整合平臺上。這種 方式尤其適合于那些具有良好水平的IT支持并且具有現成的整合平臺的商業機構內,不過對一些技術水平較低的商業機構也可以采用一些其它選擇,例如在云端搭 建一個BizTalk的實例,讓它處理各種EAI的挑戰。
REST API的入口點在這個架構中,我們選擇為客戶端應用程序暴露一個基于資源的模型,和一組REST API。這組REST API可以在一定程度上將客戶端從消息系統中解耦,這為它們提供了一個簡化的資源模型,但它也允許我們在云端包含一些邏輯,以幫助實現一些API可能需要 的特性。這組REST API更允許我們在其中對資源訪問進行集中控制。
版本控制消息與API的版本控制很可能成為這個解決方案中的一個重要的考慮因素。像這樣的項目很可能在整個項目的生命周期內對數據進行大量的改動。我們應該在此架構中實現常見的API與消息的版本控制技術。
異步消息在適當的地方使用異步模式對整個解決方案中的多個領域有所幫助,包括性能和伸縮性。在實際中我發現許多項目都盡量避免使用異步消息,但這一功能對這個案例來說非常重要。
Azure消息總線命名空間為基于云端的消息傳遞使用一個多帶帶的消息總線命名空間將有助于Acme簡化對消息傳遞的管理。這意味著隊列與訂閱將會集中在某一地點。
使用的Windows Azure消息總線Paired Namespace特性也將有助于你改善系統的可用性。
消息傳遞的格式API中的消息傳入與傳出可以按照常見的REST模式進行設計,但是在Windows Azure消息總線中進行傳遞的消息的格式必須與其它所有Acme本地商業機構的消息格式相兼容。理想的情況是Acme使用JSON消息格式以限制消息的 大小,但它也取決于終端應用的能力。
對Acme中采用了BizTalk的商業機構來說,有許多來自社區的文章詳細分析了如何在BizTalk中對JSON消息進行解碼。
Azure消息總線安全性Windows Azure消息總線在內部使用Windows Azure活動目錄訪問控制(ACS)或者Shared Access Secrets特性來保護對隊列/主題的訪問,并控制你對它們的操作權限。這一級別的安全性對集中式配置訪問權限會有所幫助,它可以允許任何一個本地商業 機構的訪問。
隊列及主題配置這個解決方案的隊列及主題配置可能會依賴于你打算實現的消息傳遞模式。在這個解決方案中,我們有可能會大量用到主題以允許使用訂閱規則,以此決定各消息將傳遞給哪個本地商業機構。
我們用到最多的模式是一個路由RPC模式,其中一個主題會將一個消息路由至某個訂閱中,隨后本地的商業機構就會將一個響應消息發送至某個包含會話信息的響應隊列中。此外還用到了一種單向路由模式。
消息路由規則這個架構中的多數跌幅規則都基于一個上下文屬性,它指出某位員工是屬于哪個國家或者本地商務機構。由于這一商業用例的本質,我們隨時都能夠從這位尋求幫助的員工與顧問之間的首次對話了解這一信息。
這一上下文屬性隨后加入到消息中,而在Windows Azure服務總線中我們可以使用一個簡單的基于該屬性的訂閱過濾器,將消息路由給正確的本地商業機構。
引用數據在這個架構中,一個常見的數據方面的問題就是數據的交互引用,一個商業機構到另一個之間存在多種代碼映射。在這個場景中,較佳的方式就是為所有這些 引用數據字段創建一個集中式的總數據表,然后沿用之前將EAI工作推到邊緣的設計原則,讓每個商務機構自行負責將中央商業數據映射到它們自己的特定商業數 據。
如果可能的話,使用工業標準代碼會帶來很大的幫助。例如使用ISO國家代碼以指代某個國家,對于表示與商業機構無關的國家代碼就是一個好的選擇。
和通用數據模型一樣,這一領域也可能成為最難解決的問題之一。
結構化與非結構化數據在定義通用的數據模型時,想要對所有字段達成一致的認識通常是很難的。而我推薦的方式是考慮數據的使用方式。某些數據是明顯的實體,例如一個名稱或 者地址,它們的結構通常已經很清楚了。而另一些數據將成為某一流程中能夠作出某些決定的關鍵屬性。這種數據需要進行良好的定義,并且便于開發者在消息中指 出該數據,使這些數據可以在系統中使用。另外有些數據或許是用戶需要閱讀的重要數據,但并不需要以某種方式進行結構化,開發者只需要將其顯示給用戶而不需 要做其它任何處理。在這種情況下,或許可以為這個數據模型建立一個非結構化的部分,讓某個本地商業機構可以任意加載他們所需或與他們相關的數據。這種方式 對顯示特定于業務的額外信息也是種有效的方法,這些額外信息往往對于每個本地商業機構來說都有所不同。
消息大小當使用基于隊列的消息系統時,考慮消息的大小是非常重要的。在起初我還對消息的大小有所擔心,但在實際過程中消息的尺寸限制幫助我們更好地專注于消 息,確保不會創造出包含了許多無用數據的過大的響應消息,這一點是過去經常遇到的問題。使用JSON格式也能夠在很大程度上幫助你將消息的大小限制在較小 的范圍內。
雖然有些技術可以使你利用會話以應對大尺寸消息的處理,但在我們的案例中,我們一直嘗試將尺寸限制作為一種制約,它促使我們設計較小的有效信息以處 理某些特別的情況。由于這個架構保留著橫向擴展的可能性,如果我們打算將數據聚焦為一個較大的資源并返回客戶端,這個架構也允許我們發送多條并行的消息以 傳遞各種不同的信息。
?
?
?
結論我希望本文讓你了解到云服務以及基于云服務的消息傳遞能夠為你交付那些在過去看來過于復雜的項目提供了某些方法。這一項目的關鍵在于,很大程度上對 基礎設施的需求已經改變了,或是已經完全消除了,你可以以一個很低的成本快速地這對種類型的項目做一些概念式的實驗。而在過去,基礎設施方面的需求會帶來 很大的成本要求與項目實施的復雜度,這使得項目的成功實施非常困難。
請記住以下這重要的一點:雖然該項目中的某些挑戰是不會改變的,它仍然是一個復雜的整合項目,但希望我的想法對這些考慮因素及實踐能對你的成功有所幫助。
關于作者Michael Stephenson 是一位來自英國的獨立開發者與云技術專家。他主要專注于微軟整合平臺上的整合技術,例如BizTalk與Windows Azure。Michael有多年的技術領導與教練的經驗,他為客戶交付了大量復雜的、真實世界的混合整合應用。Michael近期在提倡BizTalk成熟度評估。他會定期更新他的博客,此外也可以通過Twitter或者Linked In找到他。???????????
英文原文:Bridging Subsidiaries With the Cloud to Create a Global API
本文轉載自:http://www.infoq.com/cn/articles/cloud-eai
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4070.html
摘要:各廠商紛紛推出各種零信任安全產品。身份認證將成為企業新的安全邊界。過去一年從企業數據泄漏事件來看,數據安全技術和方案還需要提升成熟度。云安全成為最熱焦點今年安全廠商涉及云安全,云安全成為各廠商最熱點話題。 又一年RSA大會歸來。每一年參會,總會有一些不同的感悟,或是發現全球安全行業的新趨勢,或是找到志同道合的新伙伴,或是看到很多人也相信我們相信的安全技術新方向。今天在回國的航班上提筆寫...
摘要:幾年前,行業預測分析人員表示,一旦企業決定了他們的云計算戰略,他們將會首先構建私有云,并在以后根據需要添加公共云服務。如果要在本地實施容器或作為云計算部署的一部分實施容器,則需要確保其工作負載是安全的。幾年前,行業預測分析人員表示,一旦企業決定了他們的云計算IT戰略,他們將會首先構建私有云,并在以后根據需要添加公共云服務。但這種事情并沒有發生。事實證明,采用云計算可以盡快讓組織的董事會分配資...
摘要:這背后,并非是美國的技術不如中國,而是從現實的需求來看,相對安逸穩定生活狀態的國家,對效率是不敏感的,并不是很在乎這個效率的提升。 人-手機-云端 刷手機進地鐵站,用手機購物,點手機叫外賣,靠手機應用租房/搬家…… 現代人與手機的關系越來越緊密。 人們通過手機應用連接后端服務,后端服務依照手機發送來的數據為用戶提供定制化/標準化服務。 隨著云服務的日漸成熟,這些與人們工作生活緊密相關的...
閱讀 865·2021-11-15 11:37
閱讀 3604·2021-11-11 16:55
閱讀 3270·2021-11-11 11:01
閱讀 998·2019-08-30 15:43
閱讀 2743·2019-08-30 14:12
閱讀 680·2019-08-30 12:58
閱讀 3388·2019-08-29 15:19
閱讀 2023·2019-08-29 13:59