SOA 企业也玩“搭积木”

行业观察

2005年以前,中国企业对SOA一无所知,而后部分企业用户开始交流讨论SOA,觉得SOA远不如BI(商业智能)或EAI(企业系统集成)等技术词语显得通俗易懂,大部分IT专业人员也在头疼如何给企业用户讲明白SOA的含义。2006年,部分企业开始试点实施SOA 项目,随着厂商产品技术的不断完善和相关国际标准的出台,2007年后SOA慢慢变热……

SOA(Service-Oriented Architecture,面向服务的体系结构)是一个组件模型,它将应用程序的不同功能单元(也称为服务)通过定义好的接口“组合”起来。接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言,这样使得构建在系统中的服务能以统一和通用的方式进行交互。

SOA让企业应用化繁为简

虽然IBM等巨头近年来一直努力进行SOA扫盲教育,但对于一部分企业的IT人员来说,在他们的脑海中仍然没有SOA的清晰概念。这并不是夸张的说法,也不是在嘲笑那些不了解SOA的IT技术人员,因为对SOA有太多定义了。

有的人认为SOA是一种创新的技术,有的人说SOA是一种新的、统一的标准规范,有的人还认为SOA只是一堆全新的开发工具,有的人说SOA代表着一种先进的IT系统架构体系或一种先进的商业战略思想等。那么SOA究竟是用来做什么的呢?

在企业信息化过程中,特别是大型企业在部署信息化方案的过程中,操作系统不统一,不同的应用服务由不同的架构组建而成,这些一直是困扰企业信息化的绊脚石。不同的下属企业的信息化系统不一致,整个企业的应用服务无法实现高效整合,造成网络效率低下。

而SOA就是为了解决这些问题而诞生的,它就像是一条条看不见的线,能够随时把分散的“珠子”串成一条条完整美丽的“项链”。或者就如同儿童乐高积木中一个个标准化大小的积木组件,虽然积木的形状不一,但是标准化的接口却能够让这些组件严丝合缝地紧密组合在一起,最终组成用户想要的“作品”。因此,通过SOA架构,企业的信息化系统和营销系统等等能够高效无缝地整合在一起。

在实际实施中,SOA的主要作用是让企业的业务流程更加灵活。它将软件视为由“配置化服务”组成的新系统,且着重强调软件的松散耦合,并使用独立的标准接口,让企业应用系统变得灵活。通过让IT 运行环境更好地支持业务的变化,来保证业务的灵活性。当业务灵活性发生变化的时候,IT支撑架构就要很快适应这种变化。

从2005年开始,SOA中间件成为了“明星”,吸引着众多厂商的目光,其中以IBM和甲骨文为代表的国际企业“动作”尤其猛烈。IBM每年在SOA领域的投资达到10亿美元,甲骨文则以85亿美元通过对BEA的收购来全力发展下一代SOA产品。与此同时,国内软件企业也把巨额资金投入相应的技术研发中,相继推出了自己的SOA产品。

目前,探讨SOA的概念的时代已经过去,各家SOA企业都在考虑怎么做好SOA。从SOA的发展来看,以业务为中心的SOA项目发展最快,银行与保险业在SOA成熟度方面居领先地位。

SOA的魅力:细化业务运营系统

其实SOA并不是一个新概念,它是著名的顾问咨询公司Gartner在1996年提出的,但由于受限于技术基础和网络设施等诸多因素,SOA在当时并没有引起企业和IT公司的关注。在Gartner公司的描述中,SOA是客户端和服务器的软件设计方法,一项应用由软件服务和软件服务使用者组成。

Gartner公司相信,SOA与大多数通用的客户端和服务器模型的不同之处,在于它着重强调软件组件的松散耦合,并使用独立的标准接口。这一点尤为重要,因为它让SOA不同于以往的企业信息化概念,即用一个新的平台推翻旧的平台,SOA更关注怎样对现有的系统进行演化。

如果对SOA有正确的理解和实施,那么SOA可以帮助用户针对不断变化的商业需求对现有的系统进行演化。这可能是很多公司的市场部门在不理解SOA的情况下所产生的一个误解,把SOA和建立新系统联系起来,实际上SOA更多的不是建立新系统,而是对现有系统进行有序梳理加强。

SOA在企业中强调的是一种全生命周期的流程管理,这不仅包括了流程的自动化、流程的实时有效跟踪与监控,还要求设计制造部门与业务部门一起来梳理、管理和改进流程,这也是它的美丽所在。SOA不同于OA的流程自动化,也不仅仅是工作流,它既可以满足OA流程的快速应用,也能满足工作流程的个性化定义,它不仅能做到以组织架构为基础的动态角色管理,也能实现跨系统的异构整合应用。

当IT预算被管理者大刀阔斧地减少时,作为IT掌门人的CIO又应该如何运用有限的IT预算与投入为企业带来更多的投资回报呢?是减少一切IT开销,少买几台电脑和网络设备?是减少买软件项目的投入?还是优化软件系统,提升业务流程的执行效率?

大多数管理决策者通常会选择后者,只有企业流程的执行效率提高了,才能提高应对市场变化的速度,增强企业的竞争力。然而,如何优化现有的软件系统,把分散在各个业务系统的流程打通,连接成一条通路,将成为CIO必须面对的一个问题。

而在SOA的业务流程管理服务中,一个个生产要素都被看作了单独的服务,并找到它们的“衔接点”。我们可以给出一个简单的例子,多数商家在进行商品交易时,基本上可以分解成:确定商品、选购进货、展示销售、接受订单、销售产品。其中每个步骤从定义上说都可以称为一个服务,几个服务按顺序串在一起就形成了产品出入库的简单业务流程。SOA就是要先把这几个服务内容定义清楚,再用IT语言来实现,然后在一个统一的框架标准下,将它们纳入企业完整的IT系统中,使它们成为一个有机的组成部分。

这样企业中的每一个环节就如同一盒积木中的一个组件一样,当企业需要调整的时候,可以灵活地重新拼组、重新用这些定义清晰的组件。例如上面的交易服务流程,可能一个企业许多不同的产品和业务都会有交易服务的内容,服装部门需要交易模块、玩具部门也需要交易模块、食品部门同样需要交易模块,而交易模块已经在SOA中被规范化为了一个标准的组件,这就意味着所有需要这个模块服务的部门只需要使用这个标准化的模块即可,而不用每个部门都重新开发一个交易服务模块,造成巨大的资源浪费。

此时我们或许就能够感受到SOA的魅力了,它其实改进了企业原有的粗放式业务运营系统,用一种全新的思路和方法,将企业的业务系统划分为细致的结构,并将每一个细化的环节明确定义为一个个标准化的服务,并在这些细化的服务中“刻印”上一个统一的接口。这样更细的组件或者更细的服务环节就能够自然地组合出更多的业务种类,也能够实现最大化的环节复制与再利用。而当这些业务系统环节被SOA用IT标准化的语言打通后,每个封装服务组件的接口都是统一的,自然也会流畅地运转,而且千变万化。这种变化可以完全依据企业的具体运营而变化,这就使业务系统和IT系统无限地接近,甚至融合在一起,成为一体,不会再存在以前粗放式业务运营系统中的磨合问题。

国内企业的“积木”怎么搭

经过近几年的发展,国内企业也建设了大量生产型信息化系统,他们纷纷尝试整合这些系统。但与国外同类企业不同的是,国内企业仍然缺乏大量的服务性系统,许多企业刚刚部署了CRM之类的信息系统。中国有相当大数量的服务性系统仍有待新建,全新构造服务才是中国SOA的主要任务,这一点和欧美市场是完全不同的。

在成熟的欧美企业软件市场上,欧美企业已经建设了大量的应用系统。欧美企业的IT 建设更多集中原有系统改造、升级或整合,新建软件系统比例相对很小。欧美企业实现SOA架构的常见场景是将已有系统提取和包装成标准的服务,再将不同系统中的分散数据整合包装成为数据服务,最后通过业务流程管理对服务进行整合。

在IBM提出的“SmartSOA”方法论中,IBM将企业SOA发展过程总结为一个四阶段的“SOA演进图”,即基础整合、跨部门扩展、企业转型、随需而动四个阶段。而国内部署SOA的企业大都处于第一阶段,处于SOA成熟阶段即随需而动阶段的企业仅占3%左右。

欧美企业能对原有系统进行有效分割包装,主要得力于其软件系统中部署了大量标准化、模块化程度很高的套装应用软件。欧美企业多年的企业应用集成实践,也为切割标准化打下了一定的基础。

因此,在以新建为主的软件系统建设背景下,国内企业实现SOA架构时应建立一个标准的平台,并在其上构造企业需要的所有标准服务。由于大部分国内企业的现有软件建设技术和业务制定均不规范,导致业务流程难以有效提取,同时,不同系统的不同标准的数据源也难以整合,因此国内企业陆续新建的系统大多都缺乏统一的技术架构,最终产生了很多的信息孤岛。

国内企业在实现SOA架构时,不得不将许多现有的系统推倒重来,或将整个系统包装成一个服务,而大量的新建系统将直接构建粒度更小、组合更容易、架构更灵活的标准服务。为了实现SOA的关键任务,企业和软件开发商在实践着不同的技术路线以构建SOA服务,包括纯代码编写、基于套装软件二次开发或基于面向构件技术平台进行开发。

但大型套装软件开发周期长、开发费用高、无法有效适应国内企业复杂多变的需求。而纯代码编写又不利于标准遵从,同时开发效率较低,于是面向构件的技术出现了,面向构件技术是基于构件的软件开发方法、技术和标准。通常,一个构件包括构件类型、构件实现、提供接口和依赖接口四个方面。用面向构件技术来建造SOA服务,同时可以让SOA服务本身的管理和组装也是一个面向构件的过程,因此基于面向构件技术平台进行定制开发,很可能成为国内企业在实现SOA时的选择。