IBM等巨人一直声嘶力竭、不遗余力的宣传,数载下来,SOA便开始在江湖盛传,成为传说中的无所不能的利器。但是否实施SOA,决定权掌握在高层的老总手中,而IBM的销售代表们,则将天花乱坠的解决方案,很容易的输入到老总的大脑;而老总对于实施SOA来改变当前混乱的局面,亦寄予了厚望。
SOA的全称是"Service Oriented Architecture"(面向服务的架构),但我还是觉得作为一般人来讲,不太好理解这是什么意思。
其实SOA是老东西了。早在1996年就有这个概念,当年,Gartner提出了SOA,当时给出的定义如下:“A service-oriented architecture is a style of multitier computing that helps organizations share logic and data among multiple applications and usage modes.”。由于当时的技术水平和市场环境尚不具备真正实施SOA的条件,因此那时候,SOA并未引起广泛关注,在很长一段时间内归于沉寂。
随着越来越多的企业将业务转移到互联网领域,带动了电子商务的蓬勃发展。为将公司的业务打包成独立的、具有很强伸缩性的基于互联网的服务,人们提出了Web服务的概念,这可以说是SOA的发端。直到6年以后,也就是2002年末,Gartner提出SOA是“现代应用开发领域最重要的课题”,经过了三年的时光,2005年一些IT组织成功建立并实施SOA应用软件,IBM等厂商看到其价值,也纷纷推出自己的SOA解决方案。Gartner预测SOA将成为占有绝对优势的软件工程实践方法,SOA将结束传统软件体系架构长达40年的统治地位,将有60%的商业公司在进行商业IT建设时会转向SOA。至此,SOA成了江湖上最火的词汇。
那么,SOA落地中国有哪些问题需要去解决呢?我认为,首先要搞清楚SOA能干什么,不能干什么,到底是怎么回事,只有了解了这些,其他的事情就好说了。
首先,SOA并不是纯技术,而是一种架构,一套最佳实践,不是仅仅用钱就能买来的。没有任何两个SOA应用是相同的。刚才说了,SOA是一套最佳实践,不同的企业会根据各自特定的需求而选择不同的实施方案,所以SOA最佳的方案不会是一成不变的,它是处于经常变化的。
实施SOA有什么好处呢?它可以很好地减少总体成本、增加资产再利用、提供更清晰的商业透明度,更重要的是,它在复杂多元的环境中增加了商业灵活性。但如果你遇到的问题不在此之列,SOA则可能不是正确的选择。
实施SOA最大的问题是什么呢?答案就是:组织、文化和政治。因为,在国内,很少有人愿意接受改变、共享资源并为别人的项目做贡献。比较起这些挑战,SOA的技术反而是简单的。SOA最大的技术挑战是服务抽象的创建和维护。商业服务隐藏了存在于背后的IT商业和用户的复杂性,然而复杂性是真真切切存在的,SOA实际上增加了背后的复杂性。
控制、质量和管理是SOA的核心架构问题。没有控制,SOA注定失败。SOA前后联系质量成为正在探索的、整个生命周期的攻坚战。管理是松耦合问题的关键,而松耦合是服务抽象的核心架构原则。
你要知道,单纯的买卖并不需要SOA。企业需要的是,商业问题的解决方案,而最成功的SOA最初不叫SOA,却解决了他们迫切想解决的问题。所以SOA更多的是IT带来的秘密武器,帮助企业解决商业问题。
目前的问题是,SOA尚未成熟。最佳实践正在摸索,标准正在制订,还有许多其他不成熟的地方。大部分的SOA项目仍处于早期阶段,但这并不意味着你无法从SOA中得到较高价值。只是你要既要知道它的优点,也要知道它的缺点。
结合到中国的具体环境,企业在实施SOA过程中遇到一些难题,这很正常,因为SOA是一种新生的事物,它暴露了过去IT系统一直存在的诸多问题:建设模式、原有系统、组织架构、治理模式等等。对大多数企业来说,SOA的远景目标架构是比较相似,因此,SOA的设计哲学、治理原则、基于服务的软件工程学、SOA卓越中心等通用的策略与方法是可以借鉴的。不同之处主要有两个方面,其一是IT现状和业务发展策略的不同导致了每个企业演进路径的路线图不同,其二是管理模式和文化习惯的不同,又导致了实施策略的不同。从这几个角度分析,SOA要落地中国,就要特别注意中国特有的经济特性、管理模式和IT现状带来的一些特殊要求。
在实际的IT环境中,并非所有的项目都适合SOA,这涉及到原有系统的切割或者重建,如何才能寻求到这两者的平衡呢?
如果把企业的IT系统看成一棵大树,那么,像银行核心交易、电信计费、交通调度等那样的应用可以视为大树的根茎,它是很多企业的基础业务。而SOA 架构则相当于这棵大树的树冠,多适用于面向各种外部与内部信息服务有关的业务。部署SOA的过程就是一个边“破”边“立”的过程,不是一次性就把所有的原有系统全部服务化,而是逐步根据新项目的业务目标来改造原有系统。
从中国经济特性来考虑问题,中国企业搭建IT环境时最关心的问题无非有如下几个方面:如何快速部署?架构是否可以灵活改变?能否降低维护的成本?
SOA的实施过程有一个特点,它在开始实施的初始阶段通常需要比普通的项目花费更多的精力,因为需要考虑今后的治理原则、服务的未来复用等问题,因此 SOA的实施是一个N+1的项目,在N个业务应用之外,有一个持续存在的SOA(1项目)一直需要考虑,只有这样,SOA的企业级有时才会发挥越来越大作用。因此SOA永远不是一个速战速决的事情,它需要通过眼前更多的耐心和努力换取以后IT系统的长治久安。
SOA是解决整合问题的一个发展方向。SOA是基于服务的计算和面向服务的体系架构,是一种应用程序体系结构。在这种体系结构中,首先要建成一个服务平台,在这个平台上,各式各样的服务作为应用的插件,和平台实施对接,实现从数据到功能的共享和整合。面向服务的架构使所有应用能够交换数据和处理过程,而无需考虑应用软件是用什么编程语言开发的或在什么操作系统下运行。由于模块能够被重新配置或以新方式优化以满足新的需求,因此可以实现软件重用。
像笔者所在的公司为中国石化那样的单位,因为大量的服务型系统还没开始大规模构造,该如何走自己的SOA之路呢?笔者认为:
1.首先需要统一标准(SCA/SDO)。
2.用符合SOA标准的方法——面向构件——构造粒度更小、组合更容易、架构更灵活的“服务”。
3.SOA的流程管理。
4.SOA的软件治理。
5.多“服务”用ESB实现集成。
让我们拭目以待,SOA在中国遍地开花。