SOA是企业生存的“灵丹妙药”吗?
【 技术文章】
从SOA的概念中,不难发现三点:第一,SOA不是一个可以拿来就使用的技术,而是一种架构和组织IT基础结构及业务功能的方法;第二,基于SOA架构的软件系统相对于传统架构更加柔性,更加能够适合企业依据业务情况对软件系统进行快速调整和重新部署;第三,SOA的出现可以使得企业在解决多系统集成方面获得新的思路和方案。
SOA在过去2008年里可以说是大行其道,无数软件厂商、咨询公司和企业的热捧,使其近乎成为了软件业2008年最火的关键词,在盘点2008年的热门关键词之时,我们不妨来回顾下SOA,SOA的英文全称为service oriented archITecture,面向服务的体系架构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
另外,从这个定义中还可以发现一点就是,对于企业级的应用来说,SOA可以为企业对于业务应用和管理带来一个新的理念:“服务组件化管理”。这与软件组件化概念一致。一个“相对独立,完整的”服务可以方便的被以各种方式组合成为一个大型的服务。
这一点听起来确实很美,但确是如此吗?企业级的IT应用现阶段分为两大类,一类是技术系统应用,一类是业务管理系统应用。其中对企业来说应用最为复杂也最具价值的则非业务管理系统莫属了。然而就以ERP在企业中应用现状看,SOA,距离我们到底有多远?
首先,ERP在目前企业中应用可以说并不成熟,多数企业还处于信息孤岛状态,没有掌握ERP的核心理念。特别是当企业处于成长期时,企业组织架构、业务流程与职责权限于是,经常会发生由于企业组织架构的调整导致信息系统无法为企业提供足够的支撑,而大多数企业在这个时候,都会期望能够找到一个快捷的方法解决这样的问题。事实上,很多企业在企业发生变革之后,对于信息系统的调整都处于随心而动的状态,也就是说不假思索的要求信息系统在很短的时间内完成调整和重新部署。我们知道当企业变革时,最先反映的是组织架构的调整。其实,组织架构的调整,对企业的影响通常只存在一个方面,那就是部门职责的变动,而部门职责的变动更多的是表现在权限的变动,权限的调整相信对任何软件系统都是一个非常简单的事情。另外,权限变动还会带来报表的问题,目前中国企业特别是国有企业的报表有一个非常显着的特点就是无定性,报表格式无定性,报表数据无定性,可以说是“年年变,月月变,日日变”,与其花更多的钱去选一个所谓的先进架构的软件,还不如去买一个灵活一点的报表工具更实际。
如果说,企业变革导致业务流程发生变化,那么相信即使你应用了SOA架构也不能很方便快捷的对系统进行调整。业务流程变化可以简单的归为两类,一类是流程增加,也就是流程变长,这种情况下,可能会导致软件功能的增加,也可能会涉及客户化开发,系统的调整就会变得复杂。而另外一种情况,流程缩短。流程的缩短通常会表现为流程环节的减少,对于这种情况,只要是基于组件技术的系统都能够简单应对,那么SOA架构的软件属于奢侈品。
其次,我们有必要来一起分析一下,企业IT应用服务都包括哪些方面。一般情况下,企业IT应用服务会更多的表现在两个方面,一是IT系统本身的应用,包括IT系统选型,IT系统实施以及IT系统的维护,另一方面企业内部的IT管理,例如IT治理方面。很显然SOA在IT管理方面起到的作用微乎其微,更多的是为企业IT管理提供一个新的思路。
另一方面,SOA又确实能够发挥作用。例如,很多企业都提出了设计软件与ERP系统进行集成。但是又没有多少企业能够真正实现这样的集成,但是在应用SOA架构之后,在一定程度上就会显得更好解决一点。因为基于SOA架构的系统就如同大家都处于一个平台,执行同样的开发标准,两个系统之间的接口相对标准化。说的简单点,SOA就好象一个拥有标准接口的电脑主板,企业的各个应用系统就如同内存、CPU等等,集成的过程,就如同往这个主板上插上各种插件,以此实现了数据全面集成,当然这里还要考虑的是集成的成本与集成后的效率。
第三,SOA并不是新生事物,事实上大型IT组织成功构建和部署SOA应用已有多年的历史,而这个历史要比现有的XML和Web服务要长很多,IBM CICS和BEA TUXEDO就是过去被用于构建SOA应用的两种技术范例。同时,SOA也并不是一种现成的技术,而是一种架构和组织IT基础结构及业务功能的方法。无论是IBM还是BEA,特别是BEA是以中间件见长,而通过中间件将各系统进行集成无疑是一个相对有效的方法。所以,SOA更多的将会被中间件厂商所采用,而对于大型管理信息系统公司来讲,更多的是应用SOA理念和原则,设计更为开放和标准的接口,以使得自己的信息系统更好适应未来集成的需要。
第四,SOA应用实际上还要求企业自身具备良好的流程管理体系。要进行流程管理,首先必须要求企业的业务流程是成体系的;第二,要求企业的流程是清晰可快速识别的;第三,企业流程必须要完整的资料记录,包括流程描述,流程图以及流程变更记录。同时,要想在流程变更时能够快速对系统进行修改,还要求企业的业务流程能够同系统流程相互关联,能够实现良好的互动。
因此,SOA对于企业的应用绝不是探囊取物般简单,而是需要企业内外部的各方面资源以及与软件厂商、甚至是咨询公司充分配合才能发挥其作用,这样的成本能否被企业所接受,将是企业所必须考虑的问题,否则一次失败的SOA应用后果将远远大于一个局部信息系统应用失败所带来的后果。