英雄杀手游真褒姒:SOA怎样从工程的角度落地 兼谈ESB的作用

来源:百度文库 编辑:九乡新闻网 时间:2024/07/08 19:23:22
程鸿:之前我跟陈渌萍老师做过一些沟通,她认为目前中国企业普遍存在的困难有三方面,一个是现有软件不规范,导致业务流程难以有效提升;不同系统的不同标准数据源难以整合,第三点是新建的系统缺乏统一的基础架构,产生了更多的信息孤岛。 陈老师也提供了三条解决思路,第一个现有子系统推倒重来;第二个大量新建系统构建粒度更小,组合更容易的标准服务,把新的服务用SOA方法实现;第三个是把多服务用ESB实现集成。

程鸿:我们曾经调查了188位CIO和CTO,说起SOA,表示听说过的人有77.9%,表示没有听说过的不到10%。我想问一下嘉宾豪客先生,他也是一位资深的软件工程师,你猜认为自己非常了解SOA的人是多少?

豪客:我估计不会超过10%。

程鸿:我们调查的结果中自认为非常了解SOA的人是0,认为不了解的是34%。现在听见说SOA已经越来越频繁了,很多人知道SOA的好处是什么,但不知道怎么具体实现,能够为我们解决什么问题。几乎所有的中间件厂商都在讲SOA的理念,大家谈到后来常常有个一致的观点——用ESB整合复杂的应用,但具体怎么做往往说得不是很详细。接下来还是请毛新生老师为大家讲解他对ESB和SOA的看法。

毛新生:我们几年前就跟客户接触,包括亚洲客户,跟美国、欧洲的客户也有接触,中国IBM SOA设计中心和他们一起实施SOA。我们在这过程中得到了一些经验,今天结合这样的经验和IBM在全球的做法来谈一谈对这个问题的看法。

毛新生:首先关于SOA怎样落地?我觉得陈渌萍老师刚刚谈到的问题都是IT行业常见的,基本上到每一个地方都会看到类似的问题,比如说在美国有40多年的历史,IT的现状就如陈老师所说。中国的情况可能稍微有一些不一样,中国有相当多的企业处在建设部门级别的应用,建设新应用的阶段;可是也有相当多的老系统存在,尤其是在一些成熟的行业。因此SOA作为IT发展新的趋势,作为一种新的IT架构范式,能够解决这样的问题,为什么能够解决,我们怎么做才能真正解决这些问题呢?

毛新生:事实上IBM在过去这么多年,也是我们这个团队在过去这么多年的实践,首先我们要明确SOA整合的目标,选择好一个切入点。谈这个事情的时候首先应该是业务问题不是技术问题,从业务层面来讲,我们有不同的阶段。一个企业在考虑整合,在考虑利用SOA架构模式的时候,第一个阶段是基础层面,从技术层面怎么打通业务的连通性,怎么考虑IT的资产,不管是数据还是实物交易还是业务流程相关的能力,怎么组件化,怎么提升它的力度,怎么可以变得重用。

毛新生:通常我们考虑整合业务目标的时候不应该在整个企业范围内,而是从大处着眼,小处着手。通常我们选择部门级别,一个部门通过整合或多方数据的整合,也可以有一点点跨部门的东西,但不应该是整个部门级别的。在这个阶段做了一些之后可以过渡到整个企业范围内端到端整合的阶段,在这个阶段里面,我们可以打通企业各个部门的关联,在这个基础上去进行端到端的整合,提供整个企业范围内完全整合在一起的业务流程,使得部门之间可以很好的协作。

毛新生:到了下一个阶段,在有了整个企业范围整合基础之后,可以进入业务转型和业务创新。为了业务敏捷性,为了业务快速应变的能力,开始考虑怎么让IT从技术连通性从IT资产重用能力,从部门级别支持能力,演进到整个企业非常实时,能够快速根据业务环境的变化创新,提升我们的竞争能力。因此就开始逐渐进入到IT不再局限技术层面讨论IT重用问题,而是进入怎么利用IT推动业务的创新,推动整个企业的跃进式的发展。

毛新生:再进一步,IT进入到非常了不起的阶段,我们称之为动态适应的随需应变的阶段,在产业链里面,在若干个产业链里面,在一个动态的价值网络里面,不管用户需求怎么变化,不管合作伙伴怎么变化,业务流程都可以说变就变,像超女一样“想唱就唱”,这是一个境界。

实施SOA需要重视沟通和选择合作伙伴

毛新生:明确了目标以后,接下来很重要的事情是,要想让SOA进行,还是需要沟通,刚才程鸿提到,其实对SOA有深入理解的人并不多。在企业里面要想推动SOA,它是业务和IT结合的大工程,不是纯粹的技术工程,需要业务层面的人和技术层面的人有一些沟通和了解,让大家知道SOA作为IT发展新的趋势,是一个新的东西,它带来的好处是非常多的。我们战略上要做这事情,战术上要一步一步把事情做好,沟通的工作,动员的工作,推动立项工作非常重要,要明确业务价值,让领导感到很满意,我们要做这个事情。

毛新生:接下来进入实施阶段,有一个相当重要的问题,我们怎么选择合适的合作伙伴?选择合适的合作伙伴一定是他们有相应的能力,相应的技能,以及相应的经验。另外我们要确定好技术和产品的选型,在这个基础上要适当结合自己企业实质的管控流程。我看到过去的经验,有很多公司,尤其是中国,有时候CTO本身才20多岁,也不知道怎么样去把执行的事情做得很好。所以管控的事情在中国总体上来讲,意识上很弱,更不要说执行层面,管控的层面很重要,所以应该有一些管理和控制的事情,为SOA的实施做保驾护航的动作。

毛新生:真正到了实施的时候就是一个大的工程,这个工程及其重要的事情是要有良好和正确的工程方法。

毛新生:我们首先要理解一点,在SOA中谈整合,最终的目标就是企业级的整合,是跨企业,在整合价值链范围的整合,是一个大整合。不是几个哥们一瓶啤酒,两包花生。做个小项目,整合一把,我们管那个叫打包或小工程。SOA是一个大工程,大工程大整合需要大的工程方法,这个工程方法有若干层面。

IBM实施企业服务总线的工程方法

毛新生:首先应该在企业架构实践的指导思想下来设计和安排这些事情,企业服务总线在中国的推行和了解是比较早期的,在国外有比较好的基础,企业服务总线是谈企业级的架构,从这个意义来讲,今天只是简单介绍一下这个工程方法,尤其站在IBM角度经验总结的做法大概有几个层面。

毛新生:首先从业务层面上将业务架构做出来的工作,我们称为业务架构,IBM有一个方法CBM方法来做业务组件建模,帮助你从企业范围的角度来看待你的业务。

毛新生:从业务的策略和战略角度,从业务本身在未来转型和创新的角度,从整体业务在整个企业范围内运行和优化的角度,将你的业务建模.做出来一个逐步细化,迭代下去做出一个以服务为基础,以流程为基础单元的业务架构,在这样的业务架构里充分体现SOA的基础思想就是服务导向,或者说以服务为中心。每个服务都是可重用,可组装的,一个又一个粗粒度的业务活动.这代表了企业服务能力包括拥有自己的功能接口,拥有对这个功能接口需要的输入和输出的业务消息,有非常明确提供业务能力的触发条件,要满足业务规则和相关衡量指标,以及和谁来实施这个业务工程,使用业务数据的角色。所有这些东西都是业务人员可以理解的,这一套方法帮助企业不需要关心技术,纯粹站在业务的层面,站在业务敏捷性和灵活性的层面进行业务的分解,获得高层的业务架构。在此基础上我们才开始考虑我们IT究竟怎么做?IT架构究竟怎么进行?

毛新生:我们考虑这是一个企业架构,而且分各个层面。首先要有一个整合的架构,因为这是企业级别的架构,所以牵扯很多的应用和不同的系统,这些应用和系统又是分布在企业的各个地方。比如联想或TCL都是全球化的企业,当年我们做的中远集运在全球17个国家有港口、应用和办事处,这样一种分布多样化的应用,而且采用的技术都是在历史不同阶段由不同人做出来的,所以异构性,技术上的不同性非常厉害。这时候作为一个架构师在企业级范围内有两个问题,首先是怎么让奇奇怪怪,相互没有共同性的东西实现互联互通。 第二个问题是互联互通后又怎么样?

我们不是为了互联互通而互联互通,我们是为了相互交流数据,相互操作交换功能,更重要的是我们希望我们这样的互联互通不只是为了这一次,而是为了未来想用这个应用里的数据。想让这个系统做什么事就去做。

这个事情就难了,毛泽东主席说过,做一次好事很容易,做一辈子好事就难了,这是一样的道理。让一样的功能应用被别人用起来,让它随时随地永远被别人很好地用起来,这是一门艺术,这就是SOA力图带给我们的。

所以,考虑这两件事情的粗粒度的时候,要考虑整合架构。

SOA怎样从软件工程的角度落地

毛新生:整合架构考虑的是拓扑结构的简单性,所谓拓扑结构的简单性就如同北京市的交通。很多读者、听众刚刚都讲首都的交通真棒,堵得厉害!这是什么问题?是拓扑逻辑不太好。同样的道理在企业级范围内,要让系统和应用都互联互通有一个东西很重要,那就是企业服务总线,ESB是我们应用系统,尤其在分布和异构的环境下进行整合的集成架构的技术基础。

毛新生:谈完整合要来看,之前已经定义了站在业务和业务灵活应变的角度的架构的服务,这些服务牵涉到不仅仅是功能,还牵涉到业务层面的数据,而且牵涉到从业务角度,这个业务组件和服务要遵循的业务规则以及衡量和评价.我们怎么让这些东西实现出来?

毛新生:有两种可能性,一种是已有的,已经做了一些。一种是靠新的应用来提供。那么问题就出来了,已有应用里的能力做得跟定义的功能和数据不一样。更别说你定义的那么好的业务能力和数据了。我们需要一个方法帮助我们将业务层面上的服务递次分解映射到已有系统的数据和功能上,并且有一种方法帮助我们很好的完成逐步提升抽象层次和包装的过程。它不仅仅是连通的问题,所以牵涉到应用架构和数据架构的问题。应用架构是需要组件的模型,数据本身也需要数据的模型,这就是IBM为什么携手业界定义了服务相关的标准。就是SCA和SDO,分别帮助我们从数据和功能的角度构建出一个标准,来使得你可以以全新的方式来实现刚刚谈论的粗粒度服务接口,也可以在已有系统上借助ESB连通性将已有的业务联系出来。

毛新生:再往下映射的时候,SOA在粗粒度,在服务和服务组件级别逐渐递次映像分解到传统的软件工程看到的层面,就是技术级别的组件。因此你就工作在传统的软件工程和项目之上,在这里面有一个分析设计和架构的过程,所以基础的过程是第一步你需要从集成架构,从企业级范围通过ESB的模式将分布式的应用放在一起,打通连通性,提供一个高效简洁的集成架构,进行集成应用的数据架构,并且逐次映射分解到传统的做法上,这一套做法IBM叫SOMA。

毛新生:做完这些以后就开始写代码,事实上,面向服务的开发和测试可以做的非常敏捷的,跟现有敏捷软件工程有深度的结合。这对于大家站在纯粹写代码和实施角度,测试是非常有好处的,紧接着你做完了部署以后要有一套设计好的监控服务和监控业务流程的基础设施。比如IBM Websphere Business Monitor来帮助你站在业务性能的角度,产生这一类的不是业务层次上的,通过对这些业务级别的数据,实施基于历史的监控与了解。我们明白业务流程从运作角度来讲,哪些地方有问题,哪些地方做得很好,有问题的地方拿出来进入前面的过程进行业务流程的重整和优化,并且进一步开始做。

毛新生:等你做第二轮就很简单了,我们已经通过简单的架构和应用数据架构将整个企业级范围内已经组件化流程好了,某个部分发生变化,可以非常清楚的定位到局部的部分,只要修改那部分就可以了,不需要大动干戈,在整个企业级不同应用之间跑来跑去的。这是我们可以看到的,SOA在面对今天的IT环境,面对新的业务要求的情况下,怎么思考,怎么从工程的角度落地。

此次访谈的全文以及现场录像已刊载在专题“巅峰访谈:整合异构,从ESB切入SOA”中,详请见http://www.51cto.com/actions/actions/ibmfangtan/