PushToTest ,开源测试工具 TestMaker 的提供商,发布了一份题为《大规模SOA 的组合方法》的研究报告(译者注:该链接提供的是2008 年的报告,读者可以在PushToTest 官网上得到最新报告),对IBM、Oracle 和TIBCO 在SOA 开发和部署方案所花费的拥有总成本(TCO)进行了研究和评估。TIBCO 的解决方案在包括TCO 在内的多个方面都领先于其他厂商。InfoQ 对话Frank Cohen,PushToTest 的CEO 和创始人,以期更深入了解其研究机制。
InfoQ:发起这项 SOA 产品 TCO 研究并向社区提供相关工具包的起因是什么?
作为一名 IT 行业中的社区领导者,我始终在寻找一种专业资源为软件架构师和开发者提供一种方法使其理解 SOA 开发平台的互用性、开发者效率和性能。PushToTest 一直致力于为大中型企业制定标准 SOA 应用蓝图,以此暴露互用性、性能和交付方面的问题。使用这些实践将会帮助 PushToTest 更有效地交付相关知识、像 TestMaker 这样的测试工具,并为企业提供服务。PushToTest 提供的 SOA 知识工具包已经成为 Best Buy、PepsiCo、Deloitte 等其他 30 家公司事实上的标准。
通过推进一些标准制定组织(OMG、OASIS、W3C 和 IETF)也使用这些实践,我希望帮助 IT 行业交付更贴近现实世界的可靠产品。PushToTest 工具包上的成果已经出现在 OASIS SOA 蓝图项目中。 http://tinyurl.com/85tsbal。我们维护该成果和其他一些东西。
我们最开始在 2008 年发布该 SOA 知识工具包。我选择了 Oracle、IBM 和 TIBCO 产品,因为这三家厂商都提供了 SOA 开发和部署平台。2009 年我们在工具包中引入了 JBoss。我们希望在不久的将来再加入其他 SOA 平台产品,包括 Mule。目前的工作将工具包更新到最新版本:IBM WebSphere Integration Developer V7.0、TIBCO ActiveMatrix SOA Product Suite 3.13 和 Oracle SOA Suite 11gR1(11.1.1.5.0)。
InfoQ:该项目的成员构成是什么样的?您能否大概跟我们介绍一下使用每个厂商产品以及 web 服务开发和编排的工程师以往的大致工作经验?
PushToTest 组织了 2 个项目小组来实现 SOA 知识工具包。每个小组都有一名拥有 5 到 8 年构建 SOA、富互联网应用(RIA,使用 Ajax、Flex 和 Flash)和 Web 应用经验的架构师,2 名拥有 5 年 Java 编码经验的工程师,以及一名项目经理。这些工程师都有编写 EJB、SOAP 和基于 REST 服务接口、中介(mediation)、编排和工作流的工作经验。A 组负责实现 Oracle 和 TIBCO 项目,B 组负责实现 IBM 项目。前后大概花了 3 到 4 周来完成各厂商产品的应用案例。
InfoQ:在使用这些厂商产品时是否都使用相同的服务模式来设计和实现服务?能不能讲讲使用每个厂商产品在实现某个服务模式时遇到的一些挑战?
PushToTest 定义了一个典型制造公司的一个用例。我们使用 TIBCO、Oracle 和 IBM 的产品组来实现该用例。我们还在实现上做了一些改变:增加 HTTPS/SSL 安全、更改消息模式、还更改了一个异步消息交互传输。我们运行了一个功能性测试,并在已完成的项目上运行了一个性能和可扩展性测试。我们记录了用例和开发者体验,并且遵循免费开源软件 GPL v2 许可证公布这一切。
该制造业场景用例实现了一个 3 步骤业务流程。
- 分配采购订单(PO)流程开了一个新订单。其实现提供了一个方法,可以通过 HTTP 协议之上的 SOAP 接口来访问。
- 储存部件,使用即时库存控制服务,储存能够满足交付采购订单需求的那部分库存。这是一个 Spring 和数据访问对象(DAO)服务,其接收运行在 JMS 服务接口之上的 REST 编码的请求。请求消息和库存控制服务的 XML 消息模式一致。我们使用了 OAGIS 组织的业务对象文档(BOD)模式。使用带 Ajax 元素的 Web 页面提供人工接口请求服务。
- 为采购订单定价——使用一个服务将基于当前价格目录的某个价格分配给采购订单。系统通过在 SAP 安装上模拟业务功能对产品定价,并且可以通过模拟一个 SAP NetWeaver 的 SOAP Web 服务接口和安全认证系统来访问。
工程师保留了每个厂商产品的开发体验日志。每个日志有 60 到 80 页长。日志包含了我们软件工程师的说明、注释和逐步完成用例实现的意见。开发者日志描述了使用每个厂商产品遇到的重要挑战以及权变措施 / 解决方案。
从较高层次来看,我们在每个厂商产品上实现某些服务模式分别遇到了如下挑战:
Oracle Oracle 的产品为工程师提供了快速方案创建。Oracle 产品中的任何东西都需要对部署描述符、类路径和通用配置进行代码深入和手工调整。Oracle 的工具是面向开发者的——而非架构师和业务分析人员。Oracle 很少或几乎没有模型驱动的方法来进行设计、构建和部署 SOA 应用。对于工程师而言要为任务确定选择使用哪些工具的话,只使用 Oracle 网页是非常便捷的。Oracle 的快速启动指导直截了当并有很用。
不提供开箱即用功能,所有东西都需要社区支持(尤其是 BEA 模块)。大部分来自权变措施的方案都是由第三方发现的。比如,我们在 Oracle 官网上发现很多关于 Web 服务创建的教程,但我们选择的那个失败了。 http://st-curriculum.oracle.com/obe/jdev/obe11jdev/ps1/webservices/ws.html#t5。我们发现 soapUI web 服务模拟不能够从 Oracle 调用。JDeveloper 抛出 WebServiceException:从 WSDL 创建模型错误。我们在开发者日志中对此做了记录。
在有些时候,我们发现很多教程,一些可行而另一些不可行。比如,我们发现一个关于构建异步服务的教程,地址是: http://download.oracle.com/docs/cd/E17904_01/web.1111/e15184/asynch.htm#CBHECBFG。我们使用了注释机制,但在应用服务器上不可用:@AsyncWebService 和 @PortableWebService 标签。IBM IBM 产品是几个大平台集成在一起:WebSphere Application Server,WebSphere Integration Developer(WID),Rational Application Developer(RAD)和 WebSphere Process Server(WPS)。IBM RAD 单独下载就有 6G。这些平台存在版本问题:WID 7.0 需要 WAS 7.0,而 RAD 8.0.3 需要 WAS 8.0.3。你最终不得不安装多个 WAS 版本来使其 SOA 产品工作。这些软件都比较庞大,常常不能很好一起工作。比如,WebSphere Integration Developer(WID)提供给我们损坏的 WSDL 文档输出。我们遇到很多情况,我们不能从“这里”到“那里”。比如,我们不能生成一个构建在 WPS 中的服务的客户端。WID 的重构不能够处理命名空间、名称和模式值等简单改变。WID 产生损坏的 WSDL。RAD 没有开发业务流程的功能。而且,集成和流程开发需要分别使用不同工具:WID 和 WPS。TIBCO TIBCO SOA 产品构成包括建模工具、模块开发工具和服务网格部署:ActiveMatrix Service Grid 3.13,BusinessWorks 5.9.2,Enterprise Message Service EMS 6.0.1,Rendezvous RV 8.1 和 BusinessWorks Studio(BS)。
这些工具都是面向模型的。它们对代码有比较好的控制并抽象开底层技术。没有必要去考虑代码,只需用 SOA 的概念建模。对开发者来说这是很好的消息,因为他们现在有了一个可以和业务经理和软件架构师一起工作的共同的工具来建模服务接口和工作流。
专注于代码但缺乏 SOA 知识的开发者将会有一个陡峭的学习曲线。产品文档非常丰富也很好。但查找正确的指导文档很难。TIBCO 官网上表面提供的文档通常描述功能而非如何做事。建模语言也是厂商特有的,缺乏直观性。BW Stuido 是一款基于 Eclipse 的 IDE,很多开发者都熟悉。不过有一些概念还是比较新的,比如使用 JMS 的异步服务,一些专注于代码的开发者可能会想到使用消息驱动 Beans(MDB)。另外,需要中介流来实现异步服务。
InfoQ:您能否谈谈对 SOA 应用关于功能性和性能测试方法论的看法?
我们在构建工具包时应用了敏捷软件开发实践。我们把开发者和测试者进行结对,并且构建我们产生服务的单元测试。一些单元测试是 Java Junit 测试,对产生到对象接口的类 / 方法进行调用。其他测试使用了 soapUI 测试套件,对服务进行 SOAP 和 REST 调用。我们使用了 PushToTest 的 TestMaker 来重新调整功能性测试和加载及性能测试。TestMaker 部署这些测试到一个 QA 实验室的测试服务网格中,也部署到一个云计算环境中(Amazon EC2、GoGrid、Collabnet 和 Rackspace)。TestMaker 产生一组报表来显示功能性问题和性能瓶颈的根本原因。
SOA 知识工具包附带了我们实现的测试和 PushToTest 的 TestMaker 的一份拷贝。我们没有发布在我们自己硬件上得出的性能测试结果,而是让任何人都可以在他们自己的环境中运行这些测试,以此来证明每个厂商产品在其自己数据中心的性能差异。
InfoQ:您能否跟我们分享一些 TCO 模型的细节,它是计算开发投入吗?
我们对服务生命周期的每个步骤的时间 / 操作进行了分析,以此来揭示构建、集成、部署和管理一系列需要组装为复合应用的服务所需的时间和投入。该研究的目的在于比较节约成本,这些成本通过更好的开发者效率得以节省,从而大大缩减 TCO。该 TCO 模型是一个公开的 Office/MS Excel 表单,记录了工具包开发中每步花销的成本。该模型配备在工具包中了。
在同时进行的产品实现中,TIBCO 的 ActiveMatrix 和 BusinessWorks 表现了最优的生产效率节省。TIBCO 比 Oracle 少花费了 29% 的时间和开发成本,比 IBM 少了 22%。
InfoQ:你们是否有使用各独立厂商规定提供的 SOA 基础设施能力,比如存储库、ESBs 等其他中间件?您能否透露一些高层次的详细情况呢?
我们遵从每个产品厂商公布的最佳实践,包括使用其提供的存储库、ESB 和其他中介服务。对 IBM 即意味着使用:WebSphere Application Server v8.0.3、IBM Rational Application Developer V8.0.3 多平台多语言版、IBM Websphere Integration Developer V7.0、IBM Websphere Application Server V7.0 多平台多语言版,还有 IBM Websphere 测试环境。对 Oracle 意味着使用:Oracle SOA 套件 11gR1(11.1.1.5.0)、Oracle Database XE 10g 10.2.0.1、Oracle WebLogic Server 10.3.5、Coherence、OEPE、Repository Creation Utility 11.1.1.5.0、SOA 套件 11.1.1.5.0(2 部分)、JDeveloper 11.1.1.5,还有 Oracle Service Bus 11.1.1.5.0。而对 TBICO 意味着使用:ActiveMatrix Service Grid 3.13、BusinessWorks 5.9.2、Enterprise Message Service EMS 6.0.1、Rendezvous RV 8.1、TIBCO Runtime Agent 5.7.1、ActiveMatrix Sample Examples BWSE 5.9.2、Business Studio(BS) VS,还有 Designer Design Time DABS 1.3.1。
InfoQ:针对 IBM、TIBCO 和 Oracle 这三家厂商的 SOA 产品方案,未来版本的支持计划是什么?
我们计划在 2012 年更新 Oracle、TIBOC 和 IBM 产品工具包。这期间他们也有更多的时间来完成新产品版本的发布。我们期望得到开发者社区的反馈来确定还需要增加哪些厂商产品到工具包。比如,我们希望增加像 Microsoft 产品(可能会是 BizTalk 服务、ASP.net)以及更多的开源软件项目。欢迎大家反馈。
你可以在 http://soakit.pushtotest.com 免费下载 SOA 知识工具包
查看英文原文: TIBCO’s ActiveMatrix BusinessWorks Emerges Winner In SOA TCO Study by PushToTest
评论