摘要:虽然这个初始的例子看起来并不是太复杂,但如果将在全球的商业机构数量相乘,那系统就会很快变成意大利面条式的一团糟了。
在现代商业中,许多组织为了在不同的领域有所作为,采取了收购其它公司的方式,并因此在全球范围内留下了深刻的足迹。这些被收购的公司有时可以保持 基本完全独立,而有时则成为将各种业务整合在一起的一个重要组成部分。在这一问题空间内的较大的一项挑战是:你或许打算将这些公司整合在一起,以展现出整 个公司组织的一个单一的全局视图,使客户与合作伙伴们能更方便地与你的组织进行整合。
本文中,我们将以一个基于真实世界场景的虚构示例作为研究对象,观察一些典型的挑战,并详细分析一些为了使这个解决方案获得成功应实现的良好实践。
业务背景
在本示例中,我们将观察一个名为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
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/4070.html
摘要:各厂商纷纷推出各种零信任安全产品。身份认证将成为企业新的安全边界。过去一年从企业数据泄漏事件来看,数据安全技术和方案还需要提升成熟度。云安全成为最热焦点今年安全厂商涉及云安全,云安全成为各厂商最热点话题。 又一年RSA大会归来。每一年参会,总会有一些不同的感悟,或是发现全球安全行业的新趋势,或是找到志同道合的新伙伴,或是看到很多人也相信我们相信的安全技术新方向。今天在回国的航班上提笔写...
摘要:几年前,行业预测分析人员表示,一旦企业决定了他们的云计算战略,他们将会首先构建私有云,并在以后根据需要添加公共云服务。如果要在本地实施容器或作为云计算部署的一部分实施容器,则需要确保其工作负载是安全的。几年前,行业预测分析人员表示,一旦企业决定了他们的云计算IT战略,他们将会首先构建私有云,并在以后根据需要添加公共云服务。但这种事情并没有发生。事实证明,采用云计算可以尽快让组织的董事会分配资...
摘要:这背后,并非是美国的技术不如中国,而是从现实的需求来看,相对安逸稳定生活状态的国家,对效率是不敏感的,并不是很在乎这个效率的提升。 人-手机-云端 刷手机进地铁站,用手机购物,点手机叫外卖,靠手机应用租房/搬家…… 现代人与手机的关系越来越紧密。 人们通过手机应用连接后端服务,后端服务依照手机发送来的数据为用户提供定制化/标准化服务。 随着云服务的日渐成熟,这些与人们工作生活紧密相关的...
阅读 865·2021-11-15 11:37
阅读 3603·2021-11-11 16:55
阅读 3270·2021-11-11 11:01
阅读 997·2019-08-30 15:43
阅读 2742·2019-08-30 14:12
阅读 680·2019-08-30 12:58
阅读 3387·2019-08-29 15:19
阅读 2022·2019-08-29 13:59