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步骤业务流程。
\1) 分配采购订单(PO)流程开了一个新订单。其实现提供了一个方法,可以通过HTTP协议之上的SOAP接口来访问。
\2) 储存部件,使用即时库存控制服务,储存能够满足交付采购订单需求的那部分库存。这是一个Spring和数据访问对象(DAO)服务,其接收运行在JMS服务接口之上的REST编码的请求。请求消息和库存控制服务的XML消息模式一致。我们使用了OAGIS组织的业务对象文档(BOD)模式。使用带Ajax元素的Web页面提供人工接口请求服务。
\3) 为采购订单定价——使用一个服务将基于当前价格目录的某个价格分配给采购订单。系统通过在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