信息化 频道

SOA,热话题下的冷思考

以中间件为基础,定义服务和接口是关键

  王培培:有资料显示,目前很多公司实施SOA的主要原因就是服务驱动,比如美国西北航空公司(Northwest Airlines)采用SOA的主要原因是因为订票服务需要改进。多年经验使西北航空公司注意到:订票系统是客户感受最直接的服务窗口,而自助办理乘机手续是旅行者最常采用的方式,西北航空公司超过80%的乘客喜欢通过网络接入和设在机场、酒店等地点的登记处办理手续,而不是在售票机构排长队。现在,这家航空公司正应用SOA技术向乘客提供可靠、便捷、定制化的服务。他们已在亚洲的日本、菲律宾等地部署SOA支持其下一代的订票系统,这种订票系统能够更快速响应乘客的需求,比如为经常乘坐飞机的乘客提供更优惠的折扣,或者提醒乘客购买飞机食品。

  谢赞恩:没错,这种订票系统是一种服务。而实现SOA,关键在于定义服务和接口,但定义服务的过程比较困难,因此在社会上实现比较难,而在企业里内部实现相对简单些,实际应用中还会碰到很多问题。
  
  比如一个企业里有三个系统,分别是客户关系管理(CRM)系统、项目管理系统、文档系统(OA)等,我们在已知客户编码的情况下,如果想查一个跟这个客户相关的所有项目信息,就需要到项目管理系统中去查,所以这个项目管理系统就有这样一种服务需要定义,就是用户提供一个客户号,系统可以反馈一个相关信息。而对于项目来讲,出报表、收钱等,可能需要客户的信息,包括客户地址、客户帐号等,这些信息又需要从CRM系统中找。那么这里有个代码统一的问题,比如要找客户001的信息,在项目管理中也要关联进去,而且实现这种关联在两个系统里面的编码要统一。

  耿秉骏:企业要应用自然离开不了SOA或者说Web Service的基础。在大陆,应用以中间件为基础的IT系统的企业还不多。没有这种基础的系统,应用SOA必须要在原系统上制作可以调用系统服务的中间接口程序或者直接定制服务程序,具体要视乎原系统的开放性与具体需求。要制作这样的接口程序同样需要考虑数据一致以及服务的定义的问题,所投入的资源以及项目的风险都很大。

  王培培:如何部署SOA?

  谢赞恩:要完成这样一个SOA,要做很多事情,首先公司内部的基础编码要一致,像客户号等都要一致。打个比方,要在项目管理系统中新建一个项目时,就需要去客户管理系统中新建一个客户,然后建项目,这样进行后续操作时才能保持一致,这就是一个主数据(master data)的问题。确定一个主数据,这样其他系统才能跟着变化。比如两个客户合并了,主数据中变化了,发出来,其他系统才能够及时变化。

  第二,确定主数据以后,还有一个问题,那就是服务的定义也很复杂,颗粒度有粗有细。还是刚才查询帐户余额的问题,查询一个客户余额,可能这个客户有几个帐户,提供客户之后,有好几个备选,另一种较细的服务可能就是提供某一个帐户的余额。到底如何定义服务,要根据企业的内部通讯、使用习惯、效率高低来决定。类似SOA只是提供这种架构,但真正用得好,还是要涉及很多问题,包括主数据维护、编码统一以及服务定义的颗粒度粗细等。

  耿秉骏:说到部署SOA,还得先回到SOA出现的最初原因上。因为现在的企业已经有了一系列的管理系统,提供了众多的服务/功能,而企业的具体需求又多种多样,不是单个现有的系统服务就可以完成的,所以将众多系统服务组合搭配,满足用户特有的需求,这是SOA的功用。可见部署SOA最终目的是快速敏捷得满足用户多变且特殊的需求,这也决定了部署SOA是一个长期的,不断重构的过程。

  在现有系统各服务已是原子性的良好基础下,部署SOA是一个快速而愉快的过程,只需要专注于需求的整理,甚至可以不用太过于深层次挖掘需求,只要满足现有用户需求就可以了。因为重构对SOA来说是如此简单,如此轻松,真正实现了软件工程中敏捷开发的真髓。

  但是考虑到大陆的实际系统情况,我们还是得从头一步一步的从基础做起,小心定义原子性的服务,努力保持数据物理与实际的一致性,确保服务的可被调用且不丢失等等技术细节。在完成了漫长而且技术要求很高的开发编制后,同样需要注意SOA部署的硬件设备配置。SOA应用效率不高(与提供Service的系统相比),网络资源占用较高,不同供应商提供的SOA套件所需的支持软件配置调试复杂……这一切都要最终用户花费不少的人力物力资源。

  总之,SOA的部署是一项极其漫长而且耗费巨大的工程。

0
相关文章