技术开发 频道

企业该如何具体实施SOA?

     美国联合航空公司结合SOA与事件驱动架构

     尽管SOA概念很合理:把业务流程分解成各个构成元素,然后开发独立的软件服务,让你在需要时对组件进行配合搭配,从而满足各种业务要求,但是它假设:你在处理的是不相关联的事务处理功能。SOA的这个基本前提要求:业务功能应当是几乎能够以不受限制的方式来组合。

     但许多业务任务不是可以这样分解的,而是依赖特定的事件顺序。航空公司就是使用事件驱动流程的一个典例,所以它们部署了事件驱动架构(Event-Driven Architecture,EDA)来处理事件。美国联合航空公司的中间件工程经理Ramnath Cidambi说:“EDA完全面向流程,而SOA涉及的是不相关联的黑盒子(即未知因素)。”他指出,两者各有一席之地。毕竟,航空公司也有机票预订和座位安排等事务处理系统,而不是只有事件驱动系统,如飞机着陆后调度运送燃料的卡车,或者航班到达后更新航班信息牌等系统。

     联合航空公司很早就投资EDA,七年来使用IBM公司的WebSphere作为消息传输总线。在过去的一年,这家公司启动了SOA项目,处理公司网站上使用的现代化Web服务。但是这两种环境大不一样,所以它们有可能并行存在。不过随着公司开始在内部运营方面添加事务处理服务,这种情况正在开始发生变化,譬如利用文本消息(使用Web服务)通知客户服务代表当天的时刻表,使用人力资源系统查看谁在值班、谁请了病假等等,从而安排人员负责各个机场的不同登机口。这使Web服务与事件驱动流程处于同一环境中,从而使这家航空公司除了网站项目外,还可以启动SOA项目。
    
     联合航空公司的挑战在于,弄清楚如何设计服务架构,并把服务部署到拥有而且需要两套架构的公司环境。虽然这家公司的内部运营使用两套架构,但不能完全分开来对待。毕竟,航班取消(一个事件)也会影响到事务处理系统(如重新调度航班、更新基于Web的航班状态查询工具,或者发放代金券)。许多流程既包括事件部分,又包括事务处理部分:客户服务代表从事务处理系统得到当天的时刻表,而航班取消、天气造成的延误等因素会导致航班状态出现变化,原来的时刻表很快就会失效。事件驱动系统可以跟踪航班状态,调度事务处理系统随后通过定期查询航班状态(航班的显示屏使用同样的流程)来重新调度人员。

     最大的挑战在于弄清楚消息传输系统。ESB并不使用Web服务标准之外的标准,所以如何处理事件驱动服务并不明朗,还会由于使用不同的产品和工具出现不一致。不过,吸引Cidambi的是使用ESB同时用于SOA和EDA,因为它们可以很好地处理消息传输、数据转换以及其他关键的数据路由任务。

     如今,美国联合航空公司有两个ESB,一个用于EDA服务,另一个用于SOA服务。它使用IBM WebSphere集成代理器,作为面向发布和订阅的消息传输平台,用于事件驱动服务。需要时可传输事件,并且处理服务之间的任何转换――其实是充当EDA的ESB。至于传输方面,现有的J2EE应用完全面向消息传输,所以都使用Java消息服务(Java Message Service,JMS)而不是Web服务作为消息传输标准。

     该公司采用了BEA AquaLogic ESB用于其SOA服务,因为Cidambi期望这个比较新的平台会更适应比较新的SOA概念;更适合公司里面使用的WebLogic服务器环境和Eclipse开发环境。AquaLogic基本上在WebLogic上运行,所以不需要整合。

     Cidambi没有把EDA服务迁移到AquaLogic上,也是为了避免不必要的工作;他指出, WebSphere运行相当好。要是迁移到新的ESB,势力会出现干扰和意外情况:公司用了七年的时间来优化WebSphere平台、解决运营方面的问题;迁移到像AquaLogic这些新的ESB需要马上投入精力;毫无疑问,新的问题也会暴露出来。

     Cidambi面临的另一个问题是EDA方面缺乏标准的XML模式(XML Schema)。这样一来,在EDA服务和SOA服务之间传输消息就变得更复杂、更费力。

     汤姆逊金融公司自动实现服务遵从治理

     许多公司之所以青睐SOA概念,是因为它有望缩短开发时间。但是一些SOA开发人员却发现,服务治理的一个重要方面实际上会减慢开发速度,从而使有望加快速度的优点荡然无存。金融出版及信息服务公司汤姆逊金融公司负责产品管理核心服务的副总裁Vladimir Mitevski回忆道,该公司在SOA项目的早期阶段就发现了这一令人讨厌的意外事实。

     Mitevski指出:“服务要成为一种企业生产资产,就要符合几种方法和政策。”有不少要求非常苛刻:比如XML元素的名称不能用缩写,还必须是字典里真正有的单词;而用户名和密码等一些条目不能用硬编码。如果你只有少数几项服务,那么企业架构团队通常能跟踪并且发现得了任何问题。但很快,评估人员就会成为瓶颈,甚至由于工作负担加大,开始疏漏一些问题。

     汤姆逊金融公司有成千上万的服务:细粒度服务、粗粒度服务以及介于两者之间的服务,负责架构的人员却很少,于是公司马上感到了问题的棘手。Mitevski说:“不管粒度如何,每项服务都要经过评估这个流程。”只有那样,才可以进入服务注册中心。同样,变化了的服务需要评估,弄清楚是否遵从治理;只有符合规定,新版本服务才可以登记入册,供生产环境使用。但架构办公室因人员少而成了瓶颈。

     考虑到涉及的应用都非常关键,譬如单次登录服务、为分析师和交易商提供金融市场信息的Web服务,以及可通过微软Office获取的基于Web的金融分析和图表服务,所以降低遵从要求不是一个好方法。

     汤姆逊公司解决治理遵从工作负担这个问题的办法就是,求助于自动化技术,并使用WebLavers公司的政策评估工具。Mitevski说:“这些工具比较有效,不会漏过违反治理的情况。”公司确实花了一番时间来制订政策,以便工具可按照政策来评估遵从治理的情况。关键的是,架构师要评估工具的分析结果,弄清楚是否一再出现可能表明开发人员对重要政策缺乏了解,或者表明架构不清楚的某些问题。Mitevski说:“这帮助我们看清哪些方面可以改进;有些政策的确需要调整。”不过他发现,大多数违反治理的情况归咎于开发人员抄捷径。架构师也要确定何时允许开发人员出现不遵从治理的例外情况,不过这种情况极少发生;而且例外情况要记录在注册中心,以便告知其他用户。

     对汤姆逊金融公司而言,服务遵从治理实现自动化带来了显著成效。过去要不同部门涉及某一高度编制的流程的20个人才能推出某项服务,而现在只要一个人。

     捷普集团简化客户整合

     侧重于制造服务的公司需要照顾到一系列客户整合,比如诸多客户使用的许多系统之间的开票、预测和订单等系统。可是随着你的客户群不断扩大、客户完善各自的系统,要管理所有这些点对点的沟通就困难重重。这就是为什么许多制造商求助于交易中枢的第三方供应商,它们又叫增值网络(Value-Added NetworksVAN);这样,对于每一种供求关系,每个供应商和客户只要关心与VAN的单向沟通。

     但如果你与客户之间的定制流程是标准的VAN无法满足要求的,那这种方法就不管用了。捷普集团(Jabil Circuit)这家定制电子产品制造商对此深有体会:当时通过人工维护所有那些定制的应用和界面,来面对这个难题。捷普有5000多个交易合作伙伴,不过大多数使用VAN方法就能应付得过来。不过有50个客户需要特殊的沟通机制或者业务流程,Sterling Commerce VAN正是为此而设计的。捷普集团的电子商务经理Lowel Gilvin回忆,通常每个客户都会有好几种这样的定制联系,这就加大了工作难度。必须进行某种改变,于是捷普采用了SOA原则,用可以重复使用通用功能、基于服务的联系取代了大多数这些定制联系。

     第一步是把把订单到收款管理、预测和库存寄售等业务流程与联系流程分开来。如今,捷普为使用的大多数联系机制采用了标准服务,如适用性声明1(AS1)、适用性声明2(AS2)和FTP等机制;还为XML、平面文件、Excel和SAP iDocs等格式采用不同的数据处理服务。它为每个这样的客户组合了相应的联系服务、数据处理服务和业务流程,大多数情况下,使用表格和数据来自动完成组合。Gilvin指出,在有些情况下,客户使用不止一种联系机制,可能取决于涉及哪个部门;表格对这多种机制进行说明。

     Gilvin指出,SOA的抽象、模块化和服务组合等概念通常可以适用。在某些情况下,通过组合服务满足不了特殊要求,于是捷普仍需要维护某些一次性的整合。但即便针对这方面,捷普也往往可以使用SOA方法作为整合的一部分。举例说,XML和SSL验证所用的证书无法作为标准服务来处理,因为证书具有惟一性,但捷普能把相应的联系服务和业务服务与硬布线的数据处理服务组合起来,让三个整合方面中的两个方面仍然享有SOA的重复使用和一致性等优点。

     捷普不是使用ESB来管理消息传送、使用注册中心来管理服务存储库、或者使用面向SOA的开发环境来开发服务,而是使用Sterling Commerce的Gentran整合套件来满足上述三个用途。该套件是为了整合供应链的关系而设计的,这也是捷普竭力要管理的方面。正是这种有限的范围让捷普可以依赖这套工具的嵌入式架构,而不是自行建立架构。Gilvin指出:“我们有一小组标准的业务流程。”

0
相关文章