sprint公司运用面向服务的架构合理化底层结构
摘要
以前sprint公司每次都使用一次性方法来连接部门,客户和合作伙伴到它的主机系统。 四年前,这个电信提供商开始尝试一种更模块化的方法,然后在面向服务的架构中使用这些可重用的组件。 sprint公司发现,当集成或者启动新项目的时候,使用soa可以避免大量重复开发。
版权声明:任何获得matrix授权的网站,转载时请务必保留以下作者信息和链接
作者:lennoncao
原文:http://www.javaworld.com/javaworld/jw-09-2005/jw-0912-idgns-soa.html
译文:http://www.matrix.org.cn/resource/article/44/44210_b2b+soa.html
关键字:b2b;soa
早在四年前,sprint的it员工已经朝着面向服务的架构前进了。 只是他们还不知道而已。
当开发人员最初把sprint的后端系统暴露为可重用的组件的时候,web服务的概念仍然还没有被很大程度的验证。 以前,他们通过一系列的独立站点和b2b的接口来连接公司的部门,客户和合作伙伴到他们的主机系统。 作为一个有着超过10,000个公司的客户群体的全美最大电信提供商之一,这样一次性的方法无论如何是不能支撑很长时间的。
四年前,一个本地的电话服务业务部门开始开发一些java应用,这些应用包括一些基本功能,如登陆和密码重置,以及一些客户任务,如服务订单和账号更新。 在认识到模块方法的好处后,其他业务部门迅速参照着做。 不幸的是,这样导致了多重的,并行的web服务开发工作。 sprint的开发人员重复的创建了同样的模块,浪费了开发的时间和费用。
"我们有大量不同的平台和技术,因为为了满足业务和客户的需求,每一个设计都得到了发展," sprint业务服务(sbs)部门企业中心的web服务程序经理edmund vazquez 回想道。 "我们常常会规划核心功能。 而不鼓励重用核心底层架构的组件。"
为了合理化web服务的部署,sbs决定创建一个统一的架构,这个架构提供识别,开发和管理服务。 一个坚实的soa基础将让sbs把服务分解成可重用的组件,这样将减少整个开发的工作量,尽管这样也需要对业务需求和服务需求有清晰的认识。
为了管理soa和上面开发的服务,sbs创立了两个独立的it部门。 一个关注整个架构和策略,另一个着重服务自身的开发和集成。 这样保证架构维护和应用的一致性,而开发团队只是关心他们自己的具体业务逻辑。
当然,转变不是一夜完成的。 按照vazquez的说法, 这不用这么做。 "采用soa最好的方法是采用,实现和部署,也可以这样增量迭代进行,只要你做好前期规划,"他说。
可管理性的建立
架构上,sbs定义了三种服务: 原子,聚合和组合服务。 原子服务可以暴露一个单一的api,而且通常是一个自然事务。 聚合服务可以包含有调用顺序的原子服务,就像一个java类调用其他类一样。 另外,组合服务则需要编制和编排。
一个组合web服务实现了一个工作流程,可以包括多个原子或聚合web服务,其中包含管理数据流程。 在一些情况下,sbs用vitria eai(企业应用集成)平台在web服务层次上来实现组合服务流程, vazquez 说。. b2b部署中,sbs也用bpel(业务流程执行语言)编制服务。
现在回顾起来,vazuez说实行原子路线是最佳的选择,即使因为时间都花费在把功能分解成基本的组件上,而导致初始开发时间变得更长。 这样做可以让开发人员创建更多的可重用组件,当清楚整个顺序的服务是可重用的时候,能够轻松的构造聚合和组合组件。
相比较而言,vazquez回想起早期的一些web服务由于太过于特定,导致没有其他人能够使用它们。 "它们在技术上叫web服务,实际上只是一些应用而已,"他说。
对于服务之间的消息传递,sbs依靠基于infravio公司的x-broker平台的wsm(web服务管理器)来实现,它可以处理原子和聚合服务,还可以提供web服务注册。
sbs用ejb封装器把主机应用封装成"虚拟服务",使用soap,wsdl和xml schema暴露应用的功能。 这样表示满足两点需求: 当提供给贸易伙伴一个基于标准的方法来使用服务时,它可以保障ejb内部业务逻辑的私密性,vazquez 说。
因为sbs服务供应商和客户使用了更广泛的技术,系统支持几种数据交换标准。 扁平文本文件和基本的xml是最常用的选择。
"我们对特殊类型的领域使用特殊的xml标准,例如tml,etom,ngoss以及其他被电信行业协会开发的标准,"vazquez说。 "在所有标准中,这儿最大的挑战是在贸易伙伴之间标准的采用率。"
vazquez解释,在电信行业中,对xml特殊扩展是普遍的,因为客户数据和语音沟通经常会横跨多个网络和服务提供商。 "但是我们不能在定义标准企业xml schema方面做的太多,"他补充说,功能的多样性和客户的差异性使得开发这样的xml schema标准变得太笨重。
标准和实践
"因为sbs有一个世界级的it服务研发团队,他们积极的研究和监控最新标准,"vazuez说,"在一些情况下,我们直接控制我们的集成商负责保障我们的互操作性。" 原因是复杂的: 越来越多的类似ws-*的标准被提出并批准,组织面临逐渐增长的开发负担,以及与外部用户兼容的更大风险。
举例来说,sbs使用wsdl1.1,因为这是infravio平台支持的,相对与wsdl2.0,infravio更愿意支持它,因为"ws-i组织对它做了更多的兼容性测试,"vazquez说。 "目前我们真正关注的标准仅仅是soap,wsdl,ws-interoperability和ws-security,"他补充说,这些才是广泛被应用和采用的技术。
因为厂商对标准解释的差异性,以及随着时间的推移,厂商将可能对支持的标准有差异,vazquez预计维护贸易伙伴间的互操作性将变得更困难,这样将导致标准的采用更保守了。 在必要的时候,他说,sbs将创建多个服务的版本,每一个都支持不同的标准,而不是尝试开发能够支持多个标准的单一服务。 否则,他说,为了确保多种技术之间的互操作性而带来的复杂性,将否定基于组件的web服务平台所带来的好处。 同样的,为了保证开发工作的易处理,sbs尝试用java开发web服务,以及用ejb开发遗留系统的封装器,以维护j2w(java到windows)的兼容。
因为需要强大的互操作性,公司通常使用bea weblogic作为ejb封装器的应用服务器,但是由于特殊的应用或事务的组合,在一些区域也使用ibm websphere应用服务器。 "我们的想法是用web服务层来隔离底层技术平台,不管它是weblogic,websphere还是主机系统,"vazquez说。
web服务的使用可以帮助减少劳动强度以及外部客户访问sbs系统的沮丧。 在使用wsm之前,sbs不得不重新配置每一个受影响的服务器的防火墙,以允许对每一个独立客户的访问。 使用wsm后,vazquez说,直接被外部客户访问的方式被去除了,因为这样需要配置每一个服务的防火墙。 相反,sbs限制用户访问在dmz中的代理服务,然后由代理服务再调用在sbs网络中所需的服务。
长期的平台
当sprint公司认识到需要一个最新web服务的统一架构时,它已经有了soa需求的关键部分: 紧密的集成业务逻辑和应用开发。 在历史上,sprint公司是一个面向过程的公司,vazquez说,业务开发团队已经习惯指定他们自己的应用需求,他们常常坐在开发人员身边一起工作。
"我们有四个过程设计工具,"vazquez说,sprint公司已经有了需要有效部署soa的过程导向。 他相信,当soa在两年前开始的时候, sprint公司已经为快速的增长做好了准备。
今天,soa让sprint以两种方式使用服务: 直接或通过一个外部基于web的接口给客户使用,这并不需要客户有集成他们自己的web服务的能力。 依照sbs的管理服务架构师jeff lentz的说法,他们直接使用web服务,客户将获得最大利益,因为这种方法允许他们在自己的应用中封装sprint的服务。 这样简化了数据集成,也免去了员工们学习新接口和处理方法的必要,同样如果他们通过网站访问服务就必须学习。 因为大多数客户仅仅时刚开始开发他们自己的web服务平台,而web接口就意味着sprint公司获得了直接的投资回报。
更多而言,sprint在实施soa方面的深谋远虑将帮助它迎接下一个更大的挑战。 sprint和它最近收购的子公司的nextel的联合, "更好的事情是内部服务的使用能够加速我们合并中遗留系统的迁移,"公司web presence总监 gayle sweeney说。
soa方法的灵活性意味着sbs不再需要每次都重复开发,这确实是一个在集成或者启动新项目的挑战。 在企业it混乱无序的世界中,如果vazquez能够肯定一件事情,那就是他将没有这些缺点。 "在一个拥有70,000员工的企业里,我们总是在发现新的应用,"他说。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器