信息化 频道

SOA,热话题下的冷思考

编者按:企业到底要不要实施SOA,SOA能够为企业带来哪些实实在在的好处。

  SOA 在刚刚过去的2006年里,一直是一个热点的话题,IT厂商在不遗余力推动SOA的向前发展,一方面宣称唯有SOA才是未来IT架构的出路,另一方面在积极探索SOA的企业应用,推出各种SOA的应用套件。而在铺天盖地的SOA浪潮中,企业对此一方面是新奇、充满期待的,另一方面又是迷茫、不解和怀疑的,对于企业到底要不要实施SOA,SOA能够为企业带来哪些实实在在的好处,这些问题也一直在困扰着企业。

  根据IDC对全球大型企业的CIO 和IT 高管的调查中(采样数据为224),对SOA非常了解的CIO仅为14%、了解的约为26%,没有概念和不了解的则占了大约60%。业务部门对SOA 的了解比例就更低了。认为SOA 对本企业IT 和IT 供应商的重要性的比例为:非常重要的约为12%、较重要为24%,其余的是不重要和不知道。数据表明,SOA虽热,但大部分人并不能完全理解SOA,而且对于SOA的理解也不尽相同,可以说“1000个人心中就有1000种对SOA的理解”。对此,我们邀请了源天软件CEO谢赞恩和Elec & Eltek系统分析师耿秉骏来讨论一些跟SOA相关的话题,带来一些冷静的思考。

  嘉宾:源天软件CEO 谢赞恩;  Elec & Eltek系统分析师 耿秉骏

  主持人:王培培

SOA是一种策略

  王培培:尽管SOA在2006年被炒得很热,但仍然有很多人对于SOA的概念并不是完全理解,该怎样理解“SOA是面向服务的体系架构”这种定义,定义中的“服务”是指什么,SOA跟服务之间有什么关系?

  谢赞恩: 实际上,SOA(Service-Oriented Architecture)就是为了解决一些系统之间交互难的问题,比如说企业原来有几个系统,ERP、CRM之间要整合,但这些系统可能是 Oracle, SQL-server等, 数据库的结构都不一样,包括一些银行原来用的是比较老的系统,可能是“古董”级别的应用系统,如用CORBA开发的,交互会很困难。现在提出SOA的策略以后,如果想进行两个系统的整合,事情就变得简单多了。

  假如一个系统可以提供3种服务,首先把这三种服务定义出来,这三种服务各有一个对外的接口,就是说如果需要某种服务的时候,需要用特定的格式来申请,然后系统用特定的格式来反馈,至于内部是怎样实现的不关心,对外就是三种服务。

  举个例子来说,这个系统是个很老的银行系统,有一种服务是查询帐户余额,那么需要用户提供用户名、密码、帐号这三个信息,然后系统反馈一个数字,就是这个帐户余额,内部怎么操作不用去管,对外的公布就是可以提供一种这样的服务。而假设另外有一个系统是我们熟悉的携程网,用户通过网络的网联卡来实现酒店的预定和付款,那么携程需要查询银行的余额以判断这个用户是否有足够的钱来付帐。尽管携程的系统可能是很先进的,可能是通过Java在 web based的环境下来写的。但是,他需要这种服务,就是从用户那边拿到这三个信息然后去银行系统申请得到帐户余额,这就是一个基本的SOA应用。

  如果每个系统都可以实现这种功能,那么就不用去管具体是哪种语言、哪种平台、哪种系统,只要提供相应的接口,系统之间都可以实现交互了。

  王培培:从技术的实现上来看,SOA目前的现状是怎样的?

  耿秉骏:按照定义来讲,SOA是一个技术架构,而不是某个特殊的技术产品或者技术实现。实现SOA的技术有很多,也没有限定于某种技术、开发语言来实现,但是现阶段最成熟,最方便的技术实现是Web Service。

  Web Service也是与开发语言无关的技术标准,建立于中间件(Mid-ware)系统之上。它采用通用的数据格式(XML,Extensible Markup Language)进行数据交换,走SOAP(Simple Object Access Protocol)协议,各个服务(Service)特性(接口,参数等)使用Web service的通用语言WSDL描述,查找这些服务使用UDDI (Universal Description, Discovery, and Integration)。举个例子,Web Service就像电话机制。我们的语音信息,就是一个个服务(Service)。它们被包装成统一的描述格式(XML),电话线路就是SOAP, WSDL就像工作中的电话机,WSDL(Web Services Description Language)描述Service的特点,以便被其他的Service接受者接收,就像电话机将语音信息按照一定规则转化为电流,以便被对方电话机所接收还原。最后,UDDI类似于黄页,它通过统一注册,来查找需要的Web service。

  Web service是建立在中间件基础上,如同电话的使用建立在语音的基础上,没有了中间件,Web Service不能使用,SOA也谈不上。就像电话不可以传输图像一样。上面的例子如果两个系统都不是中间件架构的,对不起,你不可以SOA。因为你的 Service不是标准的,不能够被Web Service所认知。你只有将你所需要的Service封装成中间件结构,才可被调用。(注:Web Service是公认的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的部署是一项极其漫长而且耗费巨大的工程。

SOA应用于多系统 or 单系统?

  王培培:我们看到,谈到SOA都说它对系统间整合重用起到很大的便利作用,是不是可以说SOA是解决系统之间的问题,对于孤立系统是不是没有意义?

  谢赞恩:SOA主要是为了解决系统之间的问题,对于孤立的系统意义不大,但可能也会有应用。比如如果税务局和海关等有一个系统是采用的这种架构,如果你企业需要提供这种服务,必须要用SOA来做一个专门的系统,这就是社会集成的概念。当然,这只是一种理想的情况,现实中并不常见。

  耿秉骏:不能单纯的认为SOA只是在系统间起作用。SOA的最初起因是重用现有的服务来满足新的需求。因为单个SOA系统也会提供大量的服务。比如现有某个ERP系统,甚至更小的CRM系统,利用某几个服务,我们可以重新搭配出用户特殊的业务流程。这种搭建如此简单,只要对企业中IT人员简单培训就可以完成,相对于传统的系统需要软件供应商需求分析再修改源代码的方式来说,企业所花费的资源与时间是大大减少,对追求快速响应的企业是有很大诱惑力的。

  但是,我们常常发现,用户的大多数需求都是跨部门,跨系统的,这种情况下单个SOA系统确实对用户的意义不大。所以,衡量系统的具体意义还是要看最终的需求,给用户带来的效益。

SOA是概念炒作还是成效显著?

  王培培:目前SOA在中国企业中的成功案例并不是很多,有的企业尽管宣称自己已经成功部署了SOA,但企业信息化负责人描述的情况可能跟大多数专家理解的SOA差别很大,不知道您认为目前这种情况下,SOA是概念炒作还是具有实际意义?

  谢赞恩:我认为概念炒作的成分大些,这些类似的东西不是新的,已经有很多都在做了,很多行业之间都会有了这种标准。企业建设SOA还是要根据企业的实际情况,选择买新的系统还是保留原有的东西,基本企业不喜欢投资的东西扔掉。目前有很多产品是支持SOA这种架构,具体提供哪些服务还是要跟企业的业务结合起来。

  耿秉骏:我认为在现阶段大陆企业IT系统的基础上谈SOA更多的是炒概念。因为在此基础上实施SOA费时费钱,而且短期见效还不明显。没有多少企业愿意做一个ROI(投资回报)小的项目的。

  王培培:目前可以说,企业对SOA的态度也是比较复杂的,企业高层管理者更注重SOA能带来的投资回报,而CIO比较热衷SOA,希望能够把握SOA进而更好应对将来的机遇和挑战。

  谢赞恩:在企业里面,中高层不怎么在乎这种概念,他们更在乎IT厂商是否理解行业,提供的解决方案是否能够解决问题。而对于技术人员,可能更在乎这种新的技术,觉得这是个主流的东西,希望可以跟紧这个潮流。对企业的应用会更重要一点,不要在意这个概念,尽管SOA对于企业运维、升级、更新换代系统时会更方便一些。但不能说SOA就能解决所有问题,要从一个比较高的层面,比如说IT规划层面。还是需要一个好的IT规划,如果几个系统之间的主数据没有弄好的话,即使有了SOA架构,还是不会起作用。在建系统的时候,事先就知道将来会有哪些系统,这样在建设时就能够维护好这样一种关系,原来规划时已经定好了主数据了。比如说增加一个人力资源系统,人力资源的组织架构就从这里来同步,而不是重新建设。但如果没有这种规划,就无法跟供应商提要求。SOA的主数据映射、维护的关系也都可以理顺了,单纯从产品层面来强调是没有意义的,还是要从基础的角度。

  耿秉骏:对企业来说,更加关注的是IT系统可以给企业带来的效益,以及所必需的投入,也就是ROI。企业都痛恨那种一旦使用某套软件就再也离不开软件供应商的IT系统与软件厂商。SOA对企业来说是件大好事。考虑到SOA实施的巨大困难与花费,企业都会采取观望态度。而我作为企业的IT规划人员,我比较倾向于在应用新的软件系统时采用SOA架构的系统(当然它必须是技术意义上的SOA,并且提供成熟可靠的产品,并且所必须支持的软件不能过于昂贵,难以配置),逐步构建敏捷灵活的企业IT系统。对于应用SOA来做系统间的EAI(Enterprise Application Integration)则不会现在考虑。

  谢赞恩:如果企业的IT基础比较差,可能实施SOA的难度比较大,但是理顺这种关系的意义还是很大的。因为当企业任何系统都没有的话,企业会很难认识到这种价值。

  因此,谈到SOA,首先会谈到很多IT规划的东西,第二才是技术上的,就是产品层面的东西,比如说技术、代码等方面。企业级的规划价值更大,单单谈产品层面的意义不大。企业利用SOA的架构来做规划,规划好主数据,而后同步,包装成服务的格式.

  当然,实现起来困难重重,包括很多问题,比如同步更改等,如果能够找有经验的公司合作会更容易些。服务颗粒度的粗细,是由很多因素决定的,比如会因服务行业、企业规模、周边环境、客户、监管等很多因素而不同。另外,还有个行业标准的问题,比如医院之间或者银行之间确定一个标准,传递信息可以采用这个统一的标准。尽管标准制定起来很难,但有了标准之后,实现这种交互就变得容易了很多。

(信息周刊)

0
相关文章