导读:非常荣幸今天能够跟大家一起分享和讨论我本人以及埃森哲公司过去二、三年时间里在SOA领域中的一些研究、实践和学习的体会。尤其是SOA演进路径和演进模式方面的思考。
各位来宾、各位学友,大家下午好!非常荣幸今天能够跟大家一起分享和讨论我本人以及埃森哲公司过去二、三年时间里在SOA领域中的一些研究、实践和学习的体会。尤其是SOA演进路径和演进模式方面的思考。我本人在IT领域有十多年的经历,最早在北美IBM那边做数据库的研发,然后赶时髦,在电子商务比较热的时候去做了e-business和e-commerce的consulting。在2001年回中国,当时在IBM公司做咨询工作。在过去的三、四年时间里,是在埃森哲公司做技术架构方面的工作,做一些最新技术架构的推广,以及一些复杂项目的技术架构设计。对SOA的接触比较多其实也只有两年多时间。但我觉得SOA也是基于以前的技术基础之上发展起来的,如XML、SOAP、J2EE、面向对象等等。结合以前的一些技术体会,加上两年的亲身实践,我花了很长时间去思考,到底是推出了一个新的技术概念,或是为了推市场,卖新的产品,还是有它的很底层的一些推动因素。
在开始主题之前,我先大致介绍一下埃森哲公司,埃森哲全球有16万人,在中国有几千人。在过去几年其实花了很大精力和时间去研究SOA。这里面有些观点不仅是我个人的认识,还有很多是我与同事们一起研究的一些共识。SOA这个词听起来现在有点泛滥。不管是供应商、集成商等等,都在谈SOA,有点象98、99年谈e-business和e-commerce的味道。回想电子商务这些事情,当时确实有些泡沫,但是10年以后大家再来看,e-business和e-commerce确实改变了我们生活中的很多东西。在这个泡沫产生的时候,肯定会有一些非理性的东西,但是它这个方向,它的这个原则是正确的,也是基于很多人的集体智慧的结果。虽然中间经历了很多的大浪淘沙,很多的公司昙花一现就消失了,但现在大家看电子商务到底起没有起作用。所以说SOA目前可能有一些扩大化,有一些泡沫,但我个人认为这是个方向,只是它需要时间。JAVA到落地开花也花了10年的时间,电子商务的真正落地也花了将近10年的时间。SOA也就在2、3年前才开始重视,也许还需要4、5年,它的效果才能真正体现出来,才能让我们真正感受到。
今天我从这几个方面和大家分享一下SOA的认识和方法。首先我讲一下SOA方面的相关概念,再讲一下SOA的主要演进方式、埃森哲SOA成熟度模型,以及埃森哲关于SOA演进路径方法论,最好讲一下SOA在中国的发展状况。为什么要做SOA?大家可能在管理上听说过轻公司、快公司。PPG公司在三年时间里基本上进入了中国服装领域的前几名。它的主要竞争对手可能是雅戈尔,雅戈尔就是一个重型公司,它建了很多的厂房,有自己的直销和分销,在生产、物流和采购等投入了很大的资金。它的产品的推出需要很长的时间。PPG公司很简单,它的公司只有二、三百人的呼叫中心,它的制造都是由第三方提供,它可以不需要很大的投入。它需要关注的是我要做什么产品,我要面向什么样的用户,至于说生产和物品的配送都是合作伙伴完成。这些它都是无法人工去完成的。红孩子公司是做婴幼儿用品的,它主要是发目录单到各个家庭,也是三年的时间,达到几亿的销售额。它有6000多个产品,有几千家供应商,它也需要很有效的方式去跟它的供应商、银行等结成很紧密的关系。这就是所谓的轻公司和快公司。亚马逊公司现在也不把自己叫电子商务公司,而叫Web service公司,它是一个提供电子商务平台的公司,它有很强的处理能力,这个能力可以租给很多公司去用。过去我一直在做架构规划的设计,很多时候,驱动力都是来自管理,在商业上我们需要非常灵活非常多变的方式来应对全球化和多元化的竞争环境。那反映到IT上,它需要有非常有效的方式把我内部有价值的东西组合成服务或产品卖出去。所以以上就是从业务出发说为什么需要SOA,快公司、轻公司就是讲的业务灵活性,我能不能很快地把我的业务推出来。
还有,就是埃森哲过去对企业战略研究方面有一个观点,就是内部“简约化、外部差异化”。就是说内部我的管理逐步地做到标准和统一。那可能是60%,可能有20%是你要不断创新的。还有20%呢,有一定的成熟度,但需要不断地加深,使它成形化。这就是内部要简约化。那么外部差异化怎么体现出来,就是你能够比较灵活地去组装你的流程,去组装你的业务。
那SOA怎么去定义?从埃森哲的角度去看,它有这么一些关键的地方。第一个就是差异化。第二就是比较灵活地组装,第三个就是把业务分解成比较标准化的服务单元。这个颗粒度其实是非常难把握的一个东西,到底要做到什么颗粒度,这里面其实也取决于你的业务建模。业务的模型从理论上,从实践经验上,发展趋势上,你怎么去理解你的业务构成元素。所谓的服务,或者说业务逻辑的一些构件,这是我们认为在SOA里面非常重要的三点。那么它要达到的目的是什么?就是刚刚提到的差异化的服务和业务。因为我们可以把新业务推出的时间缩短,然后成本也可以降低,因为它讲究重用和复用。它怎样去达到这个目的呢?这里面很重要的一条就是标准化,它包括我们技术上的标准化,如XML、Web2.0等,还有行业的标准化,如我们有没有Supply Chain的一些标准,比如说在中国,我们发工资也会有一些税务和社保方面的服务,这些方面也有一些标准化的程序。所以还要有一些行业业务层面的标准。所以国外很多公司把它们发工资的一些工作都外包出去了。就是因为这个行当的一些做法都是标准化的,不管是事实上的标准,还是强制的一些标准。以前的汽车制造,针对每个车型也是特别的生产线,特别的流程。这个结果是差异化很强,但是它的代价是它推出的时间和成本会相当高。发展到后来有了装备线的形式,使他们共用生产线,共用各种配件。当然差异会很小,但是它的成本大大降低了,时间也更快了。现在的汽车制造业是平台式的,这个过程中间,它总结出来自己共总有几种发动机、底盘、座位配置、内装修配置等等。不是在一个产品型号之类,而是在跨产品型号地去考虑,哪些我怎么去组装。结果是这些车可以共享2/3的配件。这其实就反映计算机信息化发展这么多年,它也应该更工业化地、更有效地做,而不是每次我都重新去设计程序,重新去实现一个流程。这样信息化的成本当然就很高,效率也就很低。对客户需求的响应就很慢。
对比汽车业的发展,我们来看SOA。过去的Client/Server这种模式,各个业务流程都是在应用系统内部去做配置,它有一定的可配置性。但它局限在一个应用系统的框架里面。到了后面以网络为中心的时代以后,前几年大家都有了EAI的概念,有了EAI以后呢,它实现了跨系统的信息共享和交换。但应用系统基本上是一个比较大的黑盒子,谈不上比较灵活地去组装、去适应业务流程的变化。只有到SOA时代以后,各个系统是要把大的业务逻辑分解成一个一个合理的业务单元,然后这个业务单元能不能快速地组装成一个业务流程。实际上它是在应用系统这个层面之上去组装面向流程的,而不是面向应用系统的一个IT支撑能力。最下面一层就是服务层。服务层一个最基本的东西就是要把业务逻辑分解成合理粒度的,比较标准化的服务元素。先跳开这一层看的话,在往上这些业务的单元它需要有编排,组装成业务能力,然后在这个过程中可以实时地把业务流程的一些情况收集起来,那就是业务活动的监控。这个里面举一个比较技术性的例子,Google earth现在有人基于它做商业服务,这是它的技术性能指标就要监控,服务提供方或使用方需要对这个服务进行监控,这些服务如何灵活组装成新的业务,共用的一些东西就反映在我们这个service bus里面,就象在企业目录里面让我们找到我们需要的服务提供商一样。
再看SOA的推动力是什么?一方面是刚刚提到的业务驱动力。业务要求IT能够随需应变,另外一方面,就技术的推动力来说,就是标准化和技术的成熟。再过几年,如果厂商都是基于SOA的,你也不得不去选择。不管是主动还是被动,SOA都是你避免不了的。半年前,我们接触到的客户对EAI和SOA都有不少争论,EAI它的业务流程基本上还都是在各个业务系统,它只是对一些主要的信息做些转换,做一些集成。而SOA它是要把各个业务中的服务开放出来,这实际上从各个应用系统中开放出来的服务。提供者是它,但它是在一个service bus的架构上。在这个架构上你可以比较灵活地去组装。以前是个大黑盒子,你只能看到它几个典型的业务逻辑的输入输出。在未来,你花大功夫进行业务建模之后,你分析出来的业务元素是你这个组织运行的最基本的东西,这些东西在3年、5年是不会变的。我想补充一点的是,我们看标准,也有第1版,第2版,只是说它在一个相对阶段的时间里是稳定的,但是并不是说我定完的这个标准就可以不管了,标准也是一个不断演进的过程。
综合应用就是在最底层,有可能是我们套装软件系统,也有可能是我们自主开发的系统。它里面会开放出很多业务服务元素。这是一个保险公司的示例。这些服务元素都是从业务层面抽象出来的。如不管是医疗保险还是寿险,你都可能存在客户注册的问题,客户资料的问题,这些是可以重用的。那我们可以让某个应用系统提供标准的客户注册服务,我寿险的应用或医疗保险的应用就可以在上面去组装。在SOA环境里,因为它有业界公认的或者是即成事实的一些标准,当我们外包出去给合作伙伴,或者收回来,它都可以比以前相对更加省力来使用。
第二个题目就是关于SOA的演进方式。我们认为有三条线路。一条是以服务为主导,一条是以业务流程为主导,还有第三条就是以折中的方式去演进。以服务为关注点,它是把我们的业务运作的基本元素分析出来,业务单元怎么去建,然后考虑这些服务和业务单元如何去组装成适应市场的一些业务。某种程度上它是以打基础为出发点。这种适应如我们已经有很多的业务系统,那我目前更多地关注集成,它把业务逻辑分解成更细颗粒的服务开放出来,然后在服务的层面建立集成,这是一种常见的方式。
以业务流程为导向的方式,从我们的观点来看它需要非常小心的。它容易导致头疼医头,脚疼医脚。如我现在有一个业务的问题,就专门去使这个流程怎么走通畅,而不是从长远来看,我有哪些东西从整个企业角度来看是可以重用的,或者说用不到,但明年后年可能会用到。我们是不是把这些基础打好,所以这种方式我们不建议采纳的方式。
在整个SOA能力体系里面,你应该是按部就班、逐步地去推进。我要到未来我需要那些方面的能力,我在中级阶段要达到什么样,我的目标要达成什么样,所以我们归纳成一个成熟度的四步曲。第一阶段你要做计划,做思考,你要去定战略。这里的输出就是我们从哪个地方着手,分几步走,今年做哪些事,是打基础的事,与支持业务的事一起来做。还有人员培养上我应该怎么办,我们business service的建模你怎么去做。在综合蓝图里,有哪些是我通过第一阶段要做的,包括组织和战略。你要规划出来第二阶段的一些具体工作。其实第一步我们认为一般要三个月的时间去思考。业务部门只关心我现在的功能需求能不能实现,她才不关心下一个应用能不能重用。你也不好考核,我能不能建得比较标准化,你怎么去看,所以这个是要在计划和组织阶段就要去思考的问题。我们SOA技术还处在青春期,产品也有一个成熟的过程。我们作为使用方,我们要使用这种新的技术,新的理念,新的架构体系的时候,你也存在一个问题,我们内部的能力怎么建立起来,我们自己怎么统一认识这个过程,我们认为需要4到5年的时间。我们看到的这四个阶段要到工业化、产业化接大致需要4、5年的时间。针对以服务为关注点的模式,我们在逐步成熟的过程中,我们都应该关注什么?例如在总体架构上,以服务为关注点的话,我们应该关注什么问题,以综合性的方式的话我们又应该关注什么问题,类似对第二阶段、第三阶段,我们都有一些不同的看法。由于时间关系就不详细介绍了。
从刚才说的演进方式和成熟度四步曲,这只是一个框架。你真正今年、明年要做什么事情,你在SOA方面,哪些方面你已经具备了能力,哪些你还有差距,你需要根据各个企业的具体情况量体裁衣。最终极的目标是类似的,就是我们要达到一个产业化、工业化的信息化体系。从我们的驱动因素开始,到底是业务流程,或者仅仅是集成,因为我们已经有很多系统,只是说大的套件或者自己开发的系统,它的灵活性不够,我们的关注点可能是集成为主。还有我企业里面现在IT能力现状是什么,以这两个为输入条件去定义我们刚提到的第一阶段的组织计划和战略的一个演进图。演进图定义后,并不是定义后计划后就可以自动去执行。我们注意到我们国家很多企业在怎么去监督执行上有很多问题。其实计划也需要一定的调整,根据标准化发展的一些实际情况,都需要一些调整。企业有没有管理机制去监督你,和业务部门共同朝着这个目标去执行,这个可能是更难的事情。
再讲最后一个问题。2006年底,我们跟信息周刊一起在中国做了一个调查,针对SOA在国内的实施现状。总的来说中国在采用新技术方面,包括SOA,比国外更激进,更加大胆,在某种程度上也是我们中国企业的机会。其实现在在美国和欧洲,他们有些企业的系统是20年前的,甚至是30年前的,很多系统它要丢掉,爱也不是,恨也不是,很多东西没法动。中国企业是有机会赶上这波浪潮的。我们看到有85%的企业在态度上是非常积极的,或者是比较积极的。在行动上有将近11%的企业已经开始做基于SOA的机构的规划。有将近10%已经开始在做试点。采用SOA的原因目前主要是集成现有的系统。SOA投资效益评估和量化问题是碰到的主要问题。然后第三个就是提高业务流程的成熟度,没有一个比较成形的稳定的业务流程,很难抽象出重用的服务。第四个就是把握SOA的演进路径。
最后要跟大家谈的是,SOA需要从长计议,现在有些炒作,有些夸大,但从长远来看,我个人认为SOA是我们未来IT发展的一个大趋势。然后要从全局着眼,从小事做起,逐步实验性地做一些项目,去感受新技术,然后再去调整计划和方法。最后就是要从现实出发,量力而行。
我要跟大家分享的就是这些,谢谢!
评论列表
|
||||||

