大家下午好!我刚刚听了仲老师的报告我觉得自己应该再一次回到学校当学生了,我想我今天带来的报告主要是侧重我在亚洲流传这几年的客户里面对SOA的一些感受和印象,还有我个人对SOA和Web2.0的想法和看法。 基本上我在亚洲到处乱跑,借IBM的光,因为我们有很多客户。从整个亚洲的客户状况来看,去年基本上是SOA概念的普及年,今年基本上没有客户来谈说SOA是什么?为什么要搞SOA,主要的重点就是说我怎么样做SOA?通过这几年我在这个领域里面做,这几年的经验给我带来有这么一些感受,比如说大多数的企业来讲,他们的CIO、CTO以及CEO来讲对IT的事情有一些挑战,在这些挑战面前,SOA是怎么解决的呢?第一个方面就是说对于现在越来越多的企业来讲,对于他们做应用方面的技术,来提高整个IT部门的生产效率都面临一个共性的问题,就是如何利用分布式系统构造方法来做,因为没有一个单一的方式来做能够满足一个IT整体的企业系统。对他们来讲他们需要寻找分布式系统的方法,SOA是在这个方面是一种构造方法,或者是分布式系统的发展,在这个里面来讲,我想SOA集中有几个重要的时期,一个是这么多分布的系统他们怎么样去高效率、可靠、可管理的互联互通。 其次就是异构的系统怎么样有一个通用的表示方法和协议以及互动的方式来更好的交互,对于CIO和CTO来讲,他们的IT系统面临各种各样的变化,人员出现了需求公司在业务上需要兼并,这种业务需求的变化在目前来讲其实对各个企业来讲都有一个普遍的问题,就是整体企业范围内的IT架构脆弱性,这种脆弱性表示在什么地方呢?表现在有一个非常局部的小的变化,导致这种变化通过各种应用程序之间比较传统的集成整合的做法,这种做法给整合的方式扩散到各个地方,带来的结果就是说这个小小的变化使得整个企业范围内的变化都需要处理,带来了巨大的挑战。这样巨大的成本就是CTO和CIO没有办法承受的,也是各个部门的领导人对IT有非常非常多的抱怨。我想几年前华尔街的一篇报道说抱怨花了很多钱,但是没有办法满足,能否做得更好,能不能花得钱更少,而且与此同时给我真正的带来我的业务上的竞争优势,这件事情对于CIO和CTO来都构成一个挑战,因为缺乏一个整体的勾划,还有过去历史技术和人为的原因导致架构本身的脆弱性,面对小量的变化从来带来灾难性的结果是密不可分的。在这种情况下来讲,SOA有很多新的设计原则,这些原则都应该打一个引号,在SOA的设计原则,我们的计算机软件工程发展历史来看,所有这些设计原则在过去都提到了,在SOA中非常重要的原则第一个是尽量的关注点分离,关于这一点有很多的文章都在讨论,大家可以到IBM网站上读一读。 我想在我的实践当中,它表现为第一相互之间传送的消息量是比较大的,不是一两个JAVA的参数,而是1K、或者是20K,我们服务的接口传过来10个消息,这样一个一个接口有驱动器,有数十个核心系统,从而有完整的业务流程给客户提供一个完整的用户体验,并且在这个过程当中来产生完整的业务价值。 所以我想,比较大的消息量是第一个特点。 第二个是这些契约的调用频率是不高的,就好象我们在银行核心系统是在细力度的,这不是服务的契约,它是一个服务量比较大,调用频率比较低的,交互的接口。这给整个企业范围的IT系统提供一个大幅度简化的视图,你不仅可以看到所有的系统加在一起了,打一个比方来讲,我们讲SOA是希望通过各种各样的设计原则,通过契约也就是服务这样一个概念来提供我们可以规划像北京城市这样一个规划的工具,而不是处理一间屋子,如果我们用OO设计原则,我们看到的会是一个门,一个窗,以及简单的结构之间的关系,是讲组件对象。如果有门和窗抽象的概念做某一些工具,想把城市复杂化的系统规划是没有办法的,我们想北京城市各个部门之间相互之间交互和契约形成把握和建模大规模复杂的工具,这是SOA在处理架构的复杂性和脆弱性,在设计原则方面带来的东西。 另外对符合应用也带来一些好处,符合应用是希望将这些契约组装起来,形成一个面向变化需求所需要的东西,这个设计的方式是希望契约本身相对稳定,但是这些契约之间相互组合用来满足业务模型本身,会不会符合应用这种方式使得我们原有的系统和原有系统实现的契约受到的影响很少,所以组合应用是我们屏蔽变化上的一些考虑。 我们前面已经谈到了通过契约和设计原则我们可以简化企业架构可以管理这样一个企业范围内的复杂度,在灵活性上讲,SOA它跟组件的方法,跟过去在主机上的模式是相互互补的,包括我在这么多的案例实践中发现,大部分的地方我们通常都是将SOA的设计原则、设计理念和相关技术用来支撑比较复杂的领域,而不是简单的小问题,对于简单的小问题我想用组件的方法、对象的方法和传统的方法提供紧耦合的方式,利用过去的技术、观念是绝对合理的做法,只有在比较复杂的,或者是单一的系统,相对简单的东西参与到未来一个相对复杂的系统时才需要考虑到SOA的设计理念和相关支撑技术。 其次所谓企业服务总线是在企业集成过程当中,在分布的系统当中各种各样的系统怎么样相互交互的一种非常好的实践的架构模式,为什么这么讲呢?我想过去我们分布式系统情况之下我们有各种各样的搞法,在企业观察当中我们发现虽然中间件炒得很多,事实上发现以我的统计数据发现,绝大部分的企业进行系统之间整合的时候用得最多的是FTP。所以各种各样的做法实质上在企业当中都存在一些问题,由点对点的方式逐渐移到HUB的方式,无论在物力上都在单一的控制,这种控制在面对一个分布的系统需要自制,在自制的系统上相互协调上产生根本性的冲突,所以我们实质上希望每一个物理系统部署运营的地方应该具备一定原来HUB提供的服务,从而结构物理和HUB的观念,作为一个架构模式,我希望在大家互联互通这个事情上,每一个物理的部署点都具备联通性的能力,并且这种联通性是规范化的,是大家都可以了解和认同的,而且这种东西不仅仅发生在联通性这件事上,而且还要实现一些消息本身传递转换,还有ATI,协议等等不同东西的转换能力。每一个交互的实体寻址,并且在这种概念之下我们要提供基于业务的语译本身进行寻址的能力,这种事情会使服务的提供者和请求者之间的关系是一个动态的关系,是一个在适时对业务流程运行过程当中动态的关系,到今天为止,以我的实践我们看到,这种真正的动态在业务当中的需求不是那么强,事实上你要去看其他的一些类似BPEL的组装和流程的技术到目前为止大多是做静态的绑定。 符合应用刚刚提到过了,它是一个很好的基础,而且很好的解耦,SOA通过单一的实力避免到CTO经常看到的功能与数据的冗余,我们可以看到大量的数据冗余,这对IT是情有可原的,业务人员总是说,我有一个业务的需求,麻烦你赶紧做了,他的期望值是第二天可以做好,这样IT人员压力很大,他只能从别的地方拷贝过来改一改然后安装做好。所以我这在企业里面非常的普遍,在SOA的做法里面,我们都表现一个可重用的业务资源,整个企业架构范围内都是单一实现的实例,你需要用的时候可以调用这些来服务用,这样可以提高我们的生产效率,不过要做到这一点不容易,这里面有相当多的政治问题,也存在企业要做到这个事情需要做什么,需要做IT监管和SOA监管,就是大家要制定一个游戏规则,不仅仅是发生在SOA今天要强调业务驱动,所以业务人员需要和IT一起来看业务的模型本身长什么样子。过去就是这些用例给你,今天这么搞业务人员是没有办法交差的,我们向SOA的方式转型我们需要业务人员说OK,我给你一个模型,是由这些小小的Service来组成的,这件事情不是IT人员做的,是我们需要和业务人员一起搞的。 从这样一个角度来说,我想我们这样东西的实现牵扯到业务人员和IT人员之间的互动,这样以免IT人员的冤案,业务人员自己的业务模式没有想清楚,IT工具再好也帮不了什么再大的忙。要做的事情我们还是需要整个IT的组织进行一点点的转型,我们今天的CIO面临这种麻烦一个原因是因为过去是以部门为导向进行决策的,进行系统规划的,进行系统建设和维护的,今天突然我们要谈论我需要端到端跨业务部门的流程整合。我们讲整个一个状况需要改变,需要我们整个IT部门,要由过去部门为导向的转向着眼整个企业范围进行规划建立各种各样的标准,包括企业架构的标准(数据问题、安全问题、整合架构问题、管理问题,以及整体各种各样的问题),以及这些要求如何实现,包括我们开发的过程要用什么样的方法,我们选择产品有什么样的标准和原则,我们选择技术方法论是哪些,为什么要这么搞等等。我想所有的这些事情其实都是现在要搞的。 刚才仲老师讲得很清楚了,通过提供这些东西我们可以为业务的变化提供一个非常好的适应能力,从而使得业务变化有一个很快的变化基础。从IT的角度来讲,SOA最主要的是提供了一个非常好的以服务为中心的整合能力,我在IBM也写了一篇文章,就是以服务为中心的企业整合,这里面谈得比较清楚,我们谈一下后面,站在一个实践者的角度SOA的解决方案当中有什么样的技术? 第一个我们开始要逐渐的摸索、探索和实践所谓的以服务为中心的分析与设计方法,这种方法有两条,把商务领域转化成为所需要实现的服务和这些服务的融合,并且这种组装是具有业务模型变化能力。我想其中所使用的一些其他方法都是传统的方法。对各种各样的业务变化以及流程变化等等一些变化不会产生自身的变化的技术。 通过这样一种在业务上的做的分解,并不是我们找到了Service,找到了我们实现的Service,我们将IT和商务结合在一起。它在业务层面做完以后第二个关键点是充分的利用过去的使用案例和方法去处理对象层次以下,而且在IBM的做法里面非常强调模型,我们我的业务模型可以采用模型转换,由业务层次逐渐往组件,对象转变,技术层次和业务层次都很好的利用。 再其次我们通过方法论在概念上,让我们的问题分解成了几部分,如果我们的计算环境还是支持对象的组件我们就很难搞,现在我们的技术开始升级,并且在这个上面提供了相应的编程模型。我们将信息服务转化为基础服务,它有一个通用描述的方法,但是SOA的绑定是可以是加上接口的调用。 在IBM的想法里面,我们如何德国Service开始也就是建模,到我们如何组装起来,到业务过程、到部署,到业务管理上去找到Service进一步修改我们的业务模型,从而使得我们的IT非常支持业务模型,让这个业务模型持续的变化而且去优化,这种优化意味着业务的创新,从而使得IT从业务需求从被动转化到一个可以主动的帮助业务创造价值,帮助业务创造和优化的境界。 在我的想法里面Web到了今天为止依然像英特尔发明四位或者是八位的芯片,我们的DOS还没有普及的应用,只有一些小的应用,今天事实上我们可以看一下在互联网里面我们只是实现了非常简单的信息发布,这是第一代的Web应用,以门户为主。紧接着我们提供了一日三餐必须用的能力,就是搜索能力。事实上搜索已经取代了第一代的Web门户,从而成为一个新的门户,至少我上网不会找哪个网站了,我想知道什么事就到GOOLE里面搜一下。 事实上今天随着互联网用户的越来越多,互联网本身的草根性也非常的民主,也得到了充分的体现这就是今天谈论的社会化的软件,我认为这种社会性的加入其实并没有改变今天互联网处在低阶发展阶段,技术也是这样,我们从过去非常简单的一些HTMLL,我们有了今天的RSS,来进行网站之间机器和机器谈论的方式进行,以网站之间搜索的方式进行交互,进行功能的交换,我们也有一些EBAY提供WebService。所以Web的一些公司具有一个极其大的发展空间,就像DOS逐渐的出现,我想接下来整个互联网将会从仅仅提供信息到提供越来越多开放的方式大家相互贡献数据、应用,从而使得用户以互联网作为一个媒体形成一个在一系列的网站S和这一系列的网站相互所代表的信息、服务的聚合,通过聚合的过程产生完整的商业价值和让我们的互联网最终用户获得一个良好端到端的用户体验,向这样一个状态进发,其中数据性大家以松散的方式相互的协作产生的内容提供服务,相互协作的特性将会越来越强。 在我的想法里面,Web2.0和SOA有非常多的不同也有很多的相同,从不同的角度来讲,至少站在我的理解上面,SOA专著企业内部的部分,Web2.0是专著企业外部的东西,SOA专注于B2B的应用,Web2.0更多专著的B2C的东西。SOA是面向企业应用的,强调严密的技术体系,严密安全体系,还有严密的可管理体系等等。Web2.0很轻度。Web2.0发展很快,Web2.0服务简单,以及去支撑这样一个大量数据在Web运营上怎么样使得它持续可靠的运行。但是我想说的是一旦这个背后二者的驱动力是一样的,都是来自互联网等各种各样技术的发展(XML),我想伴随Web2.0从简单的应用到高度以来数据,逐渐转移到我的功能越来越丰富,我提供的商务价值越来越丰富的层面上,Web2.0也将不得不在安全性、可靠以及在动态的价值网络上面进行数据应用和各个网站提供的功能聚合事情上不得不迈出新的一步。而这新的一步必将牵扯到安全事故等等方面体系。 SOA伴随高度控制体系,我相信它也会向Web2.0学习一些东西,从而使得未来在某一个点上Web本身提供了足够丰富强大的能力,这样一个服务网络相互融合,我就讲到这里。
中国SOA设计中心主任、IBM软件部企业整合解决方案大中华区主管架构师 毛新生