【IT168 技术】首席信息官(CIO)和系统架构师们为了在企业里部署复杂的服务导向架构(SOA),有时候真可谓是殚精竭虑不遗余力,但到头来等待他们的仍是一股深深的挫折感。“只要你建好了,自然就会有人用,”这种自上而下的SOA部署策略往往是以失败而告终,并且有时还失败得相当惨烈。企业投入巨资好不容易把SOA部署妥当了,但员工们却对它不感冒,因此业务流程与IT部门的接轨也就无法实现了。至于部署之前那些诱人的投资回报率,那更是想都不用去想。
大多数失败的部署都告诉我们这样一个教训:简为佳。越来越多的公司发现,根植于底层运作的网络导向架构(WOA)虽然能见度较低,但却是通往顺利部署SOA的一个更好途径。与SOA类似,WOA也是对系统设计的一种架构,只不过它是以资源为导向,而非以服务为导向。这两者之间有何区别呢?SOA设计的核心单元是一种能够满足独特业务功能的重复使用型服务,而资源导向型服务则专注于数据,并且存在较大的局限性。
SOA和WOA所作用的抽象层面也有所不同。前者是一种系统层面的架构模式,致力于实施可被多种应用程序消化的新业务功能;而后者则是一种接口层面的架构模式,专注于各种服务功能以何种方式提供给应用程序。然而,不管是通过SOA还是WOA交付的功能,其治理方式、服务质量和安全性能都具有同等的重要性。
虽然有些权威人士声称,只有初创企业和以网络为中心的公司才会支持WOA,但国际商业机器公司(IBM)的WebSphere产品部首席技术官(CTO)杰里·丘沃莫(Jerry Cuomo)却通过Project Zero向世人宣告,他也是WOA的拥护者。Project Zero是IBM的一个以WOA为基础的框架,目前正处于测试阶段,预计将于今年晚些时候作为产品发布。丘沃莫借帮助自己12岁的儿子做功课的例子,生动地描述了WOA的神奇魅力:
“我的儿子决定,要把他的作业做成一个网站。经过一番简单的培训之后,我成功地教会了他如何使用谷歌公司(Google,下称谷歌)和电子港湾公司(eBay,下称电子港湾)的服务,他甚至还可以在所谓的作业中放置一些横幅广告,这让他感到非常有趣。谷歌和电子港湾的网络应用编程接口(API)支持简单的REST URL,利用这些服务他可以轻松地剪切和粘贴所需的代码,将自己的网站连接到谷歌和电子港湾强大的SOA上。而更令他兴奋地是,几个月后,他竟然从作业中的广告上获得了5美元的收入。这对于孩子做功课是一个多么大的动力啊!”
MindTouch公司的创始人之一、CTO史蒂夫·比约格(Steve Bjorg)也是WOA的铁杆拥护者。MindTouch公司主要致力于研究如何将开源Wiki协作及内容管理平台与IT治理结合在一起。该公司于2007年推出的产品Deki Wiki目前已被包括联邦快递公司(FedEx)、富士通公司(Fujitsu)、甘尼特公司(Gannett)、微软公司(Microsoft,下称微软)、西门子公司(Siemens)以及美国军方在内的多家大型企业和组织所采用。“通过走网络导向服务与表象化状态转移(Representational State Transfer,REST)相结合的路线,扩展应用程序的要求大大降低了,” 比约格说,“那些带有复杂WSDL文档和SOA注册的简单对象访问协议(SOAP)处理栈不存在了。现在人们可以利用任何计算机语言轻而易举地开发出Deki Wik的应用扩展。”
有些公司担心WOA不能完全替代SOA,但事实上,它们是两种互为补充的架构风格。在某些情况下,只要WOA就能满足企业的需要。而在其他情况下,你可能需要升级扩展到SOA层面。但有一点可以肯定的是,如果没有做好准备,千万不要鲁莽地部署SOA。
SOA似乎有一个奇妙之处:用多种语言编写的运行在多种平台上的应用程序,在SOA下看起来就好像是用一种语言写成的运行在同一平台上的程序一样,难怪它对于企业用户有这么大的吸引力了。分布式计算往往被认为是编程的理想境界。一些软件行业的巨头,如IBM、微软和太阳公司(Sun)等,都在这一问题上进行了20多年的研究,并且各自取得了不同程度的成功。截至目前为止,SOA是业界为解决分布式计算问题而做出的最新、也是最伟大的一种尝试。不过,那些基于Corba、DCOM和Java/RMI标准的方法在此前遇到过的难题,如今仿佛也同样困绕着SOA。
对于SOA号称能带来的投资回报率,一些IT专家也表示了怀疑。2007年,《信息周刊》对278位IT专业人士进行过一次调查,结果32%的受访者表示,在部署完SOA后,该项目达到的效果要低于期望值;58%的受访者认为,SOA给他们的IT环境引入了更多的复杂性;另外,还有30%的人说,SOA的项目成本超过了预算。只有10%的受访者觉得SOA的效果超出了预期的目标。
核子研究公司(Nucleus Research)2007年8月份发布的一份报告证实了《信息周刊》的调研结果。该报告指出,在106家公司中,只有37%表示在SOA技术和编程上的投资实现了预期的投资回报。今年早些时候,伯顿集团(Burton Group)分析师安妮·曼妮丝(Anne Manes)就SOA目前的商业价值表达了类似的否定意见,她说:“到目前为止,在我所采访的所有公司中,能称之为成功部署了SOA的公司只有一家。”
那么,怎样才能顺利部署SOA呢?让我们来看看从WOA出发来部署SOA会为我们带来何种惊喜。
SOA与Web服务
很多人都将SOA和Web服务混为一谈。事实上,SOA是关于设计方面的,而Web服务则是一套支持分布式计算的具体技术机制。Web服务让开发人员能够轻松地创建基于服务的系统,但前提条件是开发人员使用的是SOA的设计准则。在此准则之下,各种功能被打包成模块化的、可共享的分布式服务,它们可被多个应用程序重复使用。如果开发人员做不到这一点,那最终得到的只是一些受限的非集成应用程序。
2000年,IBM 和微软推出了第一代的Web服务中间件框架,也就是所谓的Web Services Framework(以下简称WSF)。WSF基于一个非常小的规范集合,其中包括SOAP、Web服务描述语言(Web Services Description Language,WSDL)以及通用描述、发现和集成(Universal Description, Discovery, and Integration,UDDI)。一开始,开发人员对于这个Web中间件框架的简洁性赞誉有加,但随着时间的推移,WSF在经过多次完善和检审之后,目前必须支持的规范数量已经增加到了50多个。
为了应对WS-*标准的复杂性和流动性,一小部分颇具影响力的企业架构师已开始支持返璞归真的WOA架构方法,在HTTP协议之上使用古老而简单的XML。这种方法是基于万维网(World Wide Web)和REST背后的架构,它要比WS-*标准简单得多,不过却没有它们灵活。
对于某些领域,如安全性和可靠邮件传输,WS-*有一套标准的信息格式和定义参数,而WOA方法则意味着业务功能有时是被硬编码到组织的基础设施中。为了弥补这方面的缺陷,WOA的支持者提出了一套基于REST原则的非常好的实践,如使用统一接口访问所有的应用程序资源。最看好这套方式的倡导者自称是“REST一族”,他们甚至声称REST是几乎哪儿都能用得上的“万金油”。
关于WOA和SOA的争论是没有完全必要的。很明显,REST和WS-*风格的SOA都有属于自己的一片领地,所以IT部门应该将重点放在架构问题上,而不是抓住部署细节不放。