近几年,IT市场似乎就是一个不断创造概念的市场,从C/S(客户机/服务器)架构到B/S(浏览器/服务器)再到组件化体系,再到今天正在热炒的面向服务架构(SOA,Service Oriented Architecture),让人眼花缭乱,无从选择,真可谓是:长江后浪推前浪,一浪更比一浪高!不断频出的新概念、新理念为软件厂商带来了层出不穷的商机,但是却使得企业面对这些繁芜繁杂的,并且略带生晦的“词汇”更多的却是手足无措,举棋不定。
SOA是近一两年来最为火爆的词汇了,太多的软件厂商都陆续的宣称自己的产品已经正在或将要支持此架构,并且借助媒体不断的宣传着SOA各种好处。但是,SOA对于企业,特别是中国企业的IT应用来说真的是灵丹妙药吗?
首先,让我们一起来看看SOA到底是何方神圣?具有多大的法力?
根据相关资料描述,我们可以很容易的得到SOA的定义:
“SOA,service-oriented architecture,面向服务的体系架构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
从上述资料中,我们不难发现三点:第一,SOA不是更加不是一个现成就能拿来使用的技术,而是一种架构和组织IT基础结构及业务功能的方法;第二,基于SOA架构的软件系统相对于传统架构更加柔性,更加能够适合企业依据业务情况对软件系统进行快速调整和重新部署;第三,SOA的出现可以使得企业在解决多系统集成方面获得新的思路和方案。
另外,我们从这个定义中还可以发现一点就是,对于企业级的应用来说,SOA可以为企业对于业务应用和管理带来一个新的理念:服务组件化管理。这一点上和软件的组件化概念是一致的。一个“相对独立,完整的”服务可以方便的被以各种方式组合成为一个大型的服务。
这一点听起来确实很美,但是真的如此吗?我们都知道,企业级的IT应用可以分为两大类,一类是技术系统,一类是业务管理系统。其中应用最为复杂的则非业务管理系统莫属了。而依据我们能获得的SOA相关资料,似乎会使企业认为SOA是解决此道的灵丹妙药。
我们就以ERP在企业中的应用来看看,SOA,距离我们到底有多远?
首先,ERP在目前中国企业的应用可以说并不成熟,更多的企业还处于简单的手工业务电子化阶段,还没有把握到ERP的核心理念。特别是当企业处于告诉成长期时,企业组织架构、业务流程与职责权限于是,经常会发生由于企业组织架构的调整导致信息系统无法为企业提供足够的支撑,而大多数企业在这个时候,都会期望能够找到一个快捷的方法还解决这样的问题。而事实上,很多企业在企业发生变革之后,对于信息系统的调整都处于随心而动的状态,简单地说,就是不假思索的要求信息系统在很短的时间内完成调整和重新部署。我们知道当企业变革时,最先反映的是组织架构的调整。其实,组织架构的调整,对企业的影响通常只存在一个方面,那就是部门职责的变动,而部门职责的变动更多的是表现在权限的变动,搞清楚这个问题,那么就变得简单了,权限的调整相信对任何软件系统都是一个非常简单的事情。另外,权限变动还会带来一个问题,就是报表。坦率的讲,中国企业特别是国有企业的报表有一个非常显著的特点就是无定性,报表格式无定性,报表数据无定性,可以说是“年年变,月月变,日日变”,与其花更多的钱去选一个所谓的先进架构的软件,还不如去买一个灵活一点的报表工具更实际。
如果说,企业变革导致业务流程发生变化,那么相信即使你应用了SOA架构也不能很方便快捷的对系统进行调整。业务流程变化可以简单的归为两类,一类是流程增加,也就是流程变长,这种情况下,可能会导致软件功能的增加,这种情况下,可能会涉及客户化开发,系统的调整就会变得复杂。而另外一种情况,流程缩短。流程的缩短通常会表现为流程环节的减少,那么对于这种情况,只要是基于组件技术的系统都能够相对简单的处理。SOA架构的软件属于奢侈品。
其次,我们有必要来一起分析一下,企业IT应用服务都包括哪些方面。一般情况下,企业IT应用服务,特别是中国企业IT应用服务,更多的会表现在两个方面,一是IT系统本身的应用,包括IT系统选型,IT系统实施以及IT系统的维护,另一方面企业内部的IT管理,例如IT治理方面的。很显然SOA在IT管理方面起到的作用微乎其微,更多的是为企业IT管理提供一个新的思路。
而在另一方面,SOA又确实能够发挥作用。例如,很多企业都提出了设计软件与ERP系统进行集成。但是又没有多少企业能够真正实现这样的集成,大多数企业都是仅仅实现了数据级的集成,也就是说大多数企业的集成仅仅做到了PDM中的数据向ERP系统传递数据,而无法将ERP系统中的数据进行回传。但是在应用SOA架构之后,在一定程度上就会显得更好解决一点。因为基于SOA架构的系统就如同大家都处于一个平台,执行同样的开发标准,两个系统之间的接口相对标准化。说的简单点,SOA就好象一个盛菜的盘子,而企业的各个应用系统就如同一道道美味可口的大菜,集成的过程,就如同往这个盘子里盛菜,凡是能够符合SOA架构的系统都可以放到这个盘子里,不管是菜汤还是才本身,就能够融合在一起了,虽然味道不见得很好,但是毕竟实现了数据与业务级的集成。
不过有个问题,必须要搞清楚,那就是SOA架构的出现并不意味着一定要将各个系统集成在一起,其判断依据主要是:集成的成本与集成后的效率。
第三,SOA并不是新生事物,事实上大型IT组织成功构建和部署SOA应用已有多年的历史,而这个历史要比现有的XML和Web服务要长很多,IBMCICS和BEATUXEDO就是过去被用于构建SOA应用的两种技术范例。同时,SOA也并不是一种现成的技术,而是一种架构和组织IT基础结构及业务功能的方法。无论是IBM还是BEA,特别是BEA是以中间件见长,而通过中间件将各系统进行集成无疑是一个相对有效的方法。所以,SOA更多的将会被中间件厂商所采用,而对于大型管理信息系统公司来讲,更多的是应用SOA理念和原则,设计更为开放和标准的接口,以使得自己的信息系统更好适应未来集成的需要。
第四,SOA应用实际上还要求企业自身具备良好的流程管理体系。要进行流程管理,首先必须要求企业的业务流程是成体系的;第二,要求企业的流程是清晰可快速识别的;第三,企业流程必须要完整的资料记录,包括流程描述,流程图以及流程变更记录。同时,要想在流程变更时能够快速对系统进行修改,还要求企业的业务流程能够同系统流程相互关联,能够实现良好的互动。而这就需要企业应用一定的流程管理工具来进行管理。诚然,这也存在一个效费比的问题。
因此,SOA的应用绝不是犹如探囊取物之般简单,而是需要企业管理各方面的充分配合才能发挥其作用。