部署一个面向服务的架构(SOA)可能会是一个极为昂贵的工程。你可能需要购买很多SOA堆栈产品,比如企业服务总线(ESB),业务流程建模(BPM)的工具、门户网站、规则引擎和数据服务工具。
但是,这还没有结束。你还需要购买额外的工具进行测试、SOA治理、安全等等等等,这个清单可能会非常长。此外,除了所有的软件这些软件之外,你还要为培训、硬件设施、咨询和工作人员薪水做很大一笔预算。
所有这些加起来是很大一笔钱,你需向企业高层管理人员申请这笔预算,单是往往不会很顺利。不过,如果你使用开源SOA产品和服务,很快困扰你的问题就会迎刃而解。
利用开源SOA满足你的企业的SOA需求有很多优势。
为了部署开源SOA项目,有几个方法你可以采用:你可以与使用一个完全开源的SOA堆栈;或者你可以混合和搭配来自不同供应商的各种开源SOA产品;你还可以混合并匹配商业和开源SOA 产品。
目前,在开源SOA堆栈市场上,有两个主要的供应商:MuleSource和WSO2。
MuleSource
早在2003年,MuleSource就推出Mule ESB。在2006年,MuleSource形成了一个实际的公司,并继续从各方面强化其产品。此外,除了ESB产品,MuleSource还推出了一个名为MuleHQ的应用和服务监测工具和一个名为MuleGalaxy的设计时(Design-Time)治理工具。
为了完善其堆栈产品,MuleSource与一系列公司密切合作研发新的产品。比如与其开源厂商Liferay结成合作伙伴管理,致力于研发门户网站功能;与企业建模软件供应商Intalio联手开发BPM功能。你是否需要一些证据证明MuleSource已经是一个非常成熟的开源SOA厂商?那么看看H&R Block吧,该公司部署了130,000个Mule ESB。 WSO2
WSO2是一个真正开源的SOA产品。与很多开源领域的SOA厂商不同,WSO2并没有一个单独的商业和企业产品。WSO2的所有产品都是免费的,他们这么做的目的是希望用户在免费使用了他们的产品之后,能肯定产品的价值,并购买服务。这是一个伟大的销售策略,因为它允许客户看到产品的全部价值而无须处理社区版本的局限性。WSO2现在已经3岁了,刚一开始,它主要致力于研发一个Web服务框架(Web Services Framework),用于Perl、PHP、Ruby、Spring、C 和 C++的通讯运行时。
Web服务框架包含一套类库和.jar类型的文件,主要用于快速开发和部署Web服务。WSO2就是在这个Web服务框架之上开发自己的SOA产品的,其中包括一个ESB、一个Web服务应用服务器(Web Service Application Server)、一个运行时治理工具、一个安全解决方案和最近刚刚发布的企业聚合服务器(Mash-up Server)。Web服务应用服务器使得创建、消耗和管理Web服务变得简单而高效。它提供数据服务功能,并且不久还将被添加一个规则引擎。通过使用一个简单的脚本语言,新的企业聚合服务器可以让你轻松地组合Web服务、Feed和网页来创建聚合应用。
WSO2的开源产品目前已经广泛应用于各个行业。比如,一个大型的HMO(卫生维护组织)正在使用WSO2的数据服务(Data Service)和ESB;Web 2.0支出管理公司Concur也在使用WSO2的数据服务(Data Service)和ESB部署一个内部SOA项目;亚太地区的某个大型国际银行也购买了WSO2的ESB服务。
其它支持选项
你可以从你的堆栈供应商那里订购支持服务,或者利用开源服务提供商提供的服务,比如Source Labs 或Spike Source。其它解决方案
如果堆栈供应商不能满足你的需求,或者如果你只需要某个特定产品来补充现有的堆栈,有很多行之有效的开源SOA产品可供你选择。除了上面提到的产品之外,在下面还列出了其它一些开源SOA供应商及其产品:
◆门户网站:Liferay Portal、Apache Jetspeed;
◆业务流程管理(BPM):Intalio、jBPM;
◆业务规则:jBoss Rules ;
◆SOA治理:Centrasite、freebXML;
◆测试工具:SoapUI、PushToTest;
◆整合工具:Snaplogic。
上述这个比较简短的名单只是非常简单地介绍了现在有哪些开源SOA产品你可以选择。Perficient 公司首席技术官Eric Roch多年以来一直担当SOA顾问,并且参与了很多SOA项目的实施。他看到了许多公司在部署SOA的时候把开源产品和商业产品混合并搭配起来使用。Roch表示,这种做法很有效,用户能够针对自己的特定需求挑选出适合自己的最好产品。从某个供应商那里购买一整套堆栈并不总是能给你提供最好的产品。
Roch还看到有些客户利用开源技术来填补的内部堆栈的特殊需要。举例来说,某个公司有可能在部署完自己开始的几个项目几个月后,决定沿着SOA道路继续走下去并添加一个规则引擎或知识库。那么他们就有可能利用开源产品来完成自己的项目,而不是向公司索要更多地IT预算。
在我所负责的SOA项目里,IT预算一般都非常有限。我和我的团队通常用一些开源工具来补充我们的ESB、 BPM和数据服务的工具。Roch特别提醒大家注意的是,并不是所有的开源SOA工具都是非常成熟的,从生产力的角度来看,有些工具缺乏开发人员所需要的足够功能。所以,在选择开源SOA工具的时候,一定要谨慎。
当你评估一个开源软体时,请确保该产品或服务有一个大型的用户社区,对用户的支持历史记录良好,并且有一个长远并且合理的发展路线图,再加上几个成功的部署案例。你的整个堆栈或者所有工具都可以是开源的,或者你也可以用一些开源替代品补充你的商业软件。到底采用哪种方式,由你自己根据需要决定。我强烈建议所有的供应商评估考虑至少一个开源厂商。