如何理解SOA与Enterprise Web2.0 - ZDNet China - Whe...

来源:百度文库 编辑:神马文学网 时间:2024/04/30 06:00:28
如何理解SOA与Enterprise Web2.0
ZDNet 软件频道 更新时间:2007-08-28 作者:霍泰稳 来源:InfoQ中文站
本文关键词:Enterprise 2.0Web2.0SOA
SOA要做的第一件事情不是整合,第一件事情,当然还是重新梳理你的业务流程,把它SOA把它Service化,但是呢,在着手进行改造,第一件事情,打散你的业务,先破再立,不是简单的把过去的业务进行整合。
记者:请问你是怎么理解SOA的?
孟岩:我这个理解来说下来就是,有这么大概几个过程,也分成这么几个阶段。最早就是03年左 右,我刚到CSDN的时候,那个时候呢,SOA有一段的这个宣传的这种高潮,各大公司,包括微软、IBM、Oracle、BEA啊,都在打SOA,所以当 时我们作为技术媒体,不得不了解一下SOA是什么东西,在那个时候,我们是很模糊的。
所以我的第一个阶段呢,我就认为在技术上,我认为SOA是一个用 Web Services来做企业应用的,这么一个想法,所以本质上我只是觉得这东西没什么大不了得,因为在03年的时候,Web Services 这个概念已经火了两三年了,所以我觉得,SOA没有什么了不起的。 之后不久呢,通过跟企业接触,企业告诉我们呢,也是一个误解,现在来看也就是一个误解,就是SOA是一个新一代的企业应用集成这样的一种架构,也就是 EAI的下一代,当时我们就这么看的一个问题。
有人提出来说,中国是不是不太适合SOA,因为在中国EAI在企业没有特别多成熟的运用系统,主要依靠新 建,所以呢,当时也比较困惑这个问题。后来SOA呢,进入了一段相对不是那么热闹的一个阶段,可以说进入了一个具体实施的一个时期,各家的认识和经验都在 积累,我们的思想也处在一个相对来说比较稳定的一个状态。
那么再过一段时间,当这个一些实施成果上来以后,包括我们去采访一些SOA实施,有了实践经验以 后的这些人,我们作为媒体来讲,得到一个新的认识,就是因为SOA是一种新的企业的IT基础架构的,这么一种风格,一种架构,其中流行的一种东西就是一个 ESB,即总线,然后很多Services通过根据总线相连接,简化之间的交互,达到松耦合等等。
所以当时,我们那个时候,大概一年以前的时候,我对这件 事情的认识呢,进化到它是一个风格,它是一种架构,它架构也可以具体实例化成一种技术,一个产品,这是我当时的一个认识。 那么到现在,到今天,又经过一段时间的演化,又经过了跟一些企业的交流,跟一些这个行里的大师,或者行业里的领导人物的交流,我最后,我觉得我现在的认 识,相对可能比较接近1996年Gartner提出来SOA的概念,这SOA是指什么呢,SOA是一种新的建构企业应用和企业IT基础架构,主要是企业 IT基础架构的思想、方法、风格、工具的一个总称,所以SOA现在的这个思想,比较泛,就是说比较宽广,就是说含义比较宽广。
甚至我发明了一个顺口溜,说 “SOA是个筐,什么都可以往里装”,只要你这些新方法,是符合企业IT基指架构发展的下一个潮流,一个阶段,那么现在很多人都把它会往SOA里去装,但 是呢,SOA还是有它确切的含义和它明确的价值,所以,我刚才说的这个含义呢,其实是我现在的一个认识。
记者:我也知道你在前段时间去了美国,去参加一个IBM组织的SOA大会,然后也接触了很多国外的SOA专家,我想问一下,国外的那个技术人员对SOA的理解和国内的人对SOA的理解,有什么区别吗?
孟岩:恩,说实话,在这一点上,我不能说我知道的很清楚。我是跟国外的技术人员就这方面交流的并不多,但是呢,从国外的一些文章,网站上的一些文 章,还从有限的一些交流来看的话,SOA这个概念即使在美国,这仍然是一个引起很多争议,引起很多的误会的这个概念。尤其是在开发者,在很技术的人员当 中,SOA是一个招人讨厌的,或者说是不被人理解的,或者是别人觉得,你就是个叫Hip,这么一个东西。
也有很多不同的认识跟理解,可是我觉得,如果要是 正本溯源的话,还是应该去向Gartner这个提出SOA的这个组织,像IBM,像BEA,Oracle,包括微软,他们技术的决策者,技术方向的决策 者,到那里去SOA的真经,如果我们到那里去问的话,我觉得,他们那里的SOA的思路跟我们国内目前一般开发人员,一般技术管理者的认识水平,那还是不太 一样的,就是还是有,他们还是比我们要领先很多的。
记者:但是另外一种观点就是说,SOA是从国外开始兴起的,主要是去解决一些,去整合遗留的系统,但是我们国内的IT历史并不是特别长,你认为SOA对我们国内的IT界有什么作用?
孟岩:我需要指出的是,你刚才的那个Statement就不对,首先它是从国外来的,这是对的,我们所有的东西差不多都是从国外来的。但是说它只是 为了整合遗留系统,这句话就有问题。因为SOA要做的第一件事情不是整合,第一件事情,当然还是重新梳理你的业务流程,把它SOA把它Service化, 但是呢,在着手进行改造,第一件事情,打散你的业务,先破再立,不是简单的把过去的业务进行整合。
我们如果运气好,你过去的业务系统呢,正好能被完整的包 装成一个服务,那当然好了,但是如果你过去的业务系统,不好被完整的包装成一个服务,那就需要先把它打开,给张三的给张三,给李四的给李四,把它包装配成 一个服务,这个是要纠正的。
所以就是说,即使从国外的企业来讲,它也不纯粹是一个整合的概念,它确实是一个以服务为导向,重新规划系统的这么一个过程,而 对中国呢,我讲过了刚才的观点,如果说国外呢,是改建为主,就是我的房子已经盖好了,我要改建,我一定要把它该拆的拆,该破的破,该打通的打通,对吧,但 是它毕竟都属于改建;中国的情况呢,则是新建、改建、扩建并行,我们大量的系统,大量的企业,到现在还在怀疑IT的价值,它没有进行第一代的IT化的建 设,还有一些企业已经进行了第一代的IT建设,还有很多的企业正在进行第二代的,第三代的IT建设。
从2003年开始,中国IT建设70%的投资是二次建设,所以你可以想像一下,做IT的公司才多少?大量的公司,大量的企业还没有做IT,还没有认真的把 IT放到自己的这个管理中间来,包括还有一些非企业性质的,政府、学校和一些社会组织,都还没有把IT纳入自己的业务管理的过程当中,所以潜力是很大的。 对于它们来说,一个主要的考虑就是,说白了,领导说话算不算话,这个很重要,领导说话要算话你就必须要让IT系统足够灵活。
我们中国的企业是有这样的特 点,和我们国家国情比较接近,我们喜欢突变,我们可能会在某一个水平线上,某一个状态上维持一个比较长的时间,然后突然一下发生巨大变化,这个时候就是要 求我们IT系统非常灵活,其实我个人认为,我们中国的企业在国际市场上获得一些成果一个很重要的原因,我们以外国人想象不到的速度在改变自己。
所以呢,这 是我刚才上一个问题讲到的,中国的企业绝不会允许自己损失机动性,损失敏锐性,因为这是我们赖以生存的一个根本,所以如果你上一个IT系统,让我把这个敏 锐性给损失掉了,我就不会上,也不会要的。 反映在很多现实当中,开发人员给我们无耐地摇头解释说,中国没法做IT,那领导人拍脑袋就变,你还非得听他的不可。这就说明一个问题,领导人拍脑袋就变, 这可不一定是坏事,这可能是这个企业竞争力的源泉之一。
所以我们在中国做企业的话,要支持这种东西,要足够灵活,要让IT系统能够跟随决策者的思想变化而 变化。IT的意义本身在于使你的管理规范化,流程化,效率提高,严格,这样一个避免人为因素,降低对人力素质的要求,这样的一个特点。所以我们,还是刚才 说的,我们中国的IT,目前在SOA要解决的问题就是不损失灵活性的情况下,提高管理水平、有效性、管理的效果。
记者:那么在实施SOA的过程中你认为应该注意哪些问题,有哪些难点存在?
孟岩:在实施SOA的过程当中,第一个难点,我觉得是要改变一些思维,改变一些传统的思维方式。传统的思维方式是把这种,从业务到IT系统,这种运 作过程看成是一种魔术的,要靠培养巨牛无比的人,这个既要具有极强的面向对象这些基础的软件和IT基础的这种知识和技能,通过多年的磨炼,能够规避各种各 样的风险;然后还要懂这个业务,要善于沟通,要用有效的方法来帮它及时地找到和发现自己的错误,这是非常难做到的事情。
那么首先要改变观念就是说,我们现 在一个层面是业务,一个层面是技术,所以我们在中间加一个层面,叫Service,这个Service是一个贴近技术,贴近业务,又可以被技术支持的一个 概念,能够以它为标准,又能够以它为单位,对于业务来进行模块化,实现Service之后,你会发现,当你的业务要发生变化的时候,你所要做的仅仅是微调 Service内部的接口、契约、服务质量和重新调整各个Service之间的关系,几乎就可以满足你对业务调整的需要。
这就是说我们把业务给模块化,找到合理的一个单元,可以用它来把业务这个事情模块化,而这个单元又特别巧的,也不是特别巧的,刻意地可以被技术,用我们现 在传统的这一代组件啊,对象啊这些东西来支持和实现,这不是很好的事情吗?我们说一句谚语叫“当你在软件里面遇到任何问题的时候,请增加一个中间层”,这 个就是这个思想的一个应用。增加了一个Service这样的一个中间层,一个间接层,来协调这两个差的太远的之间的关系,来做到这件事情。
所以首先思想上 要改变,要知道SOA为什么?知道了这一点,你才能够有可能去正确的去实施SOA,SOA在实施的时候第一步,应该是梳理业务流程;第二步,应该是用 Service的观点重新描述你的业务流程,这个过程也是挺关键的,我认为,从这个过程往下,就比较容易一些,包括做一些具体实现Service的一些方 法、操作和我们常用的一些方法。当然可能还有一些新的标准,SCA啊,SDO啊,包括ESB啊,包括一些提供的工具。
但总的来说,到了我们开发者日常工作这一块,他的改变有,但是他的工作形态的变化并不是很大,可是在这个业务梳理和业务架构这个过程当中,是有一个关键变 化,这个是我觉得这个,你刚才说到难点在哪。那么这个难点归根到底就在于,我认为SOA存在的关键在于,它是否能够培养出足够多的高素质的,高质量的这种 SOA架构师。
SOA的架构师跟我们传统意义上的架构师不太一样,传统意义上的架构师就是变魔术的那帮人,也不知道他怎么想的就变了。现在呢,要把这个过 程分成两步,第一步把它分解成为服务,把服务之间的关系理顺;第二步,把每个服务的接口、契约,全部都封装好,服务之间的关系,包括它的 Governance之间的关系,这个叫做业务架构,这个人我认为是在SOA时代最吃香而且至关重要的一个脚色。
记者:你按照你的意思来说,就是我们现在的开发人员,或者说是一些架构师,做转变的话,要重视业务的发展,是这样吗?
孟 岩:对,我觉得这句话其实说的很多。就是没有SOA时候,大家也都在做,你作为一个开发者也好,作为一个架构师也好,你一定要关注业务。但是呢,过去这种 说法,是种泛泛的,我们不知道怎么关注,你总不能让我去成为一个石油专家,一个银行家,或者一个什么,才能够就是说开始这样的一个系统,那这样的人有多少 呢?成为那样的人,还做IT系统吗?有这样的问题存在。
现在呢,有一个具体的指导方针,就是说你该怎么去了解业务了,你要把业务分解成为一个一个的 Service,理顺这些Service的关系,调整Service的接口和契约,这是对这个的理解。对开发者的理解,对开发者的影响来讲,有些实践就要 变了。比如说,我们现在用到的一些,它已经熟习的一些思想、方法,一些东西可能有一些变化。
因为过去呢,你直接面向业务,开发者往往要学会一种能力,看了一段自然语言文本,就把一个什么对象图啊,什么模块图啊,类图啊等都画出来,这个是过去要求 的一个。现在呢,你要面对的问题,可能就是说,你要面临的是怎么样最好的,向外界提供高质量的符合企业的服务,这是开发者的一个变化。但是更大的影响呢, 对于开发者来讲的话,是他需要重新安排自己的职业生涯和规划,过去他觉得我学习这些东西也就可以成为架构师,设计师架构师怎么怎么样,或者我就专心的做我 的.NET,做我的Java的内核,高效率的东西,也可以成为那个领域的专家,但是你要知道这是两个不同的路线。现在呢,你想做企业里面的架构师,有来之 后,你就可能,对自己职业的规划,一个目标,要有一些调整和变化。
记者:我在看很多关于SOA的文章都提到各式各样的标准,我想问一下,为什么SOA里面会有那么多的标准?
孟岩:其实坦率的说,现在SOA一个很大的问题就是标准化不够,标准没有得到很好的制定和实施,甚至可以说,我可以这么讲,SOA,现在是有一个 OSOA组织了,但是这个组织不是一个很强有力的组织,国际化的这个标准组织一般都是比较松散的,这个OSOA也是松散的。然后呢,各大厂商都有自己的想 法和主意,结果就是说,SOA标准化的东西目前做的不是特别好,但是尽管有这么多的问题,还是有SCA、SDO这样的标准出现,这个对于SOA还是很好的 事情,还有一些其他的标准,比如说WS-*,有三十多个标准,那些东西不属于SOA,尽管可以用它很好的来实现SOA,但是你不要把它作为SOA标准,所 以在我看来呢,SOA的问题不是说标准化太多,而是标准不足的问题。
我们马上面临很大的一个问题就是说,微软它做了一套体系,跟SOA的SCA、SDO标 准是不一致的,这里的问题就是说,我们当然还要看,微软的WPF、WCF跟这个是相关的,以及WF这个标准,能够互相兼容,互相操作。如果可以的话,当然 很好,如果不可以的话,怎么办?我们得到了一些微软方面的承诺,但是毕竟这个还是不官方承诺,我们想看看这个事情怎么发展。所以标准有,如果谈到SOA的 话,标准真的不是太多了,而是还不够。
记者:另外然后业界里面流行的概念,一个是SOA,另外一个是Web 2.0,两者之间也是有很大的关系,我想请你评价一下这两者之间的关系?
孟岩:这次我去美国的时候呢,我去参加的IBM Impact 2007这个大会,这个大会的主办者或者说最主要的一个人,是IBM软件集团的一个副总载,叫Sandy Carter,是一位女士,IBM的一位传奇的一位女性。她写了一本书,叫做《业务的新语言》,子标题是SOA&Web2.0,所以从这句话来 看,就知道这两个是有关系的。什么关系?我可以这么说的,这两个东西协同起来,可以共同为我们搭配刚才所说的敏捷业务的目标,为什么这么说,因为传统上, 这个企业呀,你像我们业务系统总得用数据,业务逻辑,在它上面展现,还有一些整合的过程,有人提出Portal,企业级Portal这样一个概念,这么一 些过程的话。
实际上,当整个技术转移到外围以后,由于Web技术,第一代Web技术的制约,也使得它们在企业运行当中的,企业当中的一些运用受到了一些限 制,现在的问题就是说,Web 2.0这东西怎么理解呀,大家还在说。我觉得固然有很多,从网络社会学意义角度去出发,去阐述Web 2.0,著名的博客Keso,他提了很多,比如说用户与这个编辑处于同等地位呀,强调自由啊,强调话语权的平等呀,开放性呀,强调用户权益至上,把这些东 西列为Web 2.0的一个标杆。
但是从我们做IT的技术来讲,Web 2.0他有他固定的技术含义,他是指一系列的第二代的Web服务的集合,这里面包括像RSS、Atom,然后有这个Syndication,其实就是刚才 说的这两个协议的抽象概念。然后有像这个Blog的这种服务,社会网络,技术上的有Ajax,数据的Mashup ,有数据的微格式,这样的一些东西,这个东西综合起来,能够给用户更好的体验,能够给实施者提供更轻便,更容易的一种集成,这种东西叫Web 2.0。
那么它为什么可以用来和SOA一起来为企业来服务来使用呢?你记住,我们刚才说为了业务敏捷性,业务敏捷性就意味着,我们不仅仅数据和业务的关系 发生变化,它给用户的展现,它的集成方式,它的集成范围,都会迅速发生改变,而在这一点上,传统的企业使用的C/S模型,或者第一代Web技术,它那种局 限性,都使你没有办法很快地,使你的最后传到用户那里的最后的一公里也跟着一块变。 只有我们采用Web 2.0这些功能,Web 2.0提供的这些服务和协议,它这种风格,REST和Micro-format也就是微格式,这些东西融合起来,你才能够从下到上为用户,为企业提供一套 完整的敏捷的技术栈,才能够说,人家的Idea一变,业务一变,底下的数据变,上面的模型,上面的业务叫流程变、服务变,流程变,最后到上头来,到前边 Portal也变了,这个界面也变了,数据表单也变了,只有这个才能做到这一点。
所以Sandy Carter在这本书里面画了一张图,我刚刚提到她也是这个原因,这张图是一个金字塔,然后她用一张薄片,把金字塔拦腰一切,底下SOA,上边Web 2.0,很明显地说明这个问题,就是说在底下要用企业级的SOA技术解决问题,将数据用标准方式如XML等暴露出来,上边用Web 2.0的技术去整合Mashup,去呈现,这种东西就会导致,就会使得我们刚才说的业务敏捷性的目标得以实现,这就是这两个技术应用之间的关系。
它们之间有什么关系?它们之间是盟友的关系,我们共同协作可以达成敏捷性的目标,否则的话,如果你几家是很快变化的数据和流程,上面我还是传统老旧的那一 套,比如说Web 1.0的,或者是,甚至是更传统的VB或者是更传统的.NET富客户端所写的程序,当然对于企业最后还是得不到迅速变化,随之实施的这么一个结果。那我可 以给你举一个小例子,这个Web 2.0一旦跟企业应用相结合,形成一个Enterprise Web 2.0这么一个新概念。
那么这个,我给你举一个小例子,已经实施的例子:就是有一家远洋航运公司,他们呢,做了这么样一个应用,就是他们通过GPS系统,将自己的每一艘航船在远 洋,在地球上的位置,都能够实时的确定下来,他们把这个数据得到并放在一个服务器系统里面;他们另外一个系统保存着每一艘远洋航船此次航运他的目的地、起 点、他的运货是哪些,这些定单信息,这些商务上的信息;另外一个系统保存着每艘航船里边的人都是谁,雇员的信息,海员的信息,临时工是谁,他的情况是什么 样子。然后,其实现在就表示他们已经提供了一些服务了,在把这些服务跟就是,他把这些数据用SOA的方式,把这些服务给整合起来。
整合起来之后,跟Web 2.0这个技术能够理解的格式比如XML以后,再跟Google Map整合,立刻得到了一张全球海洋图,一张大的一个全球地图,每一艘现在在什么位置都可以看到。当他点击那个船的时候,他可以立刻看到这个船本身的信 息,船上船员的信息,这次航行的有关商务信息,都可以看到,这个就是SOA跟Web 2.0融合的一个例子。
但故事还没完,当我们部署到内部的时候,好多事情就会不断的出现。因为你不仅可以缝合你,Mashup你自己企业内部的信息,当你 采用公共的Enterprise Web 2.0作为你的架构以后,你就可以公开的自由的获得,或者是通过付费的方式,获得别的企业高质量的数据服务。他们很快又购买了一家海洋天气预报公司所提供 的高质量的数据服务,然后Mashup到这张图里面,就可以看到天气的情况。
然后更有意思的是,他们后来又想知道海盗报警,哪些地方发生海盗的事情,英国 有家公司提供这样的信息,于是他们就把那些信息又通过Web Service的方式抓过来,那些公司的信息通过Web Service的方式暴露出来了,他们把这些信息抓过来,缝合到这张图里面去,让它来显示不同的信息。它立刻就可以得到,我这次航行处在什么样的气象条件 下,海洋气象条件下,然后它前方或者它路过的地方,有没有海盗的这个情况,高危险地区我就要提示它警告它,这样的一个应用,我认为是目前我所知道的,比较 好的Enterprise Web 2.0和SOA的应用,这么一个表现。
我相信,由于这样的一个系统,据我所知,它是在一家全球顶级的大公司支持之下,来完成的。据说这个整个的项目的实 施,尤其是后面融合数据的过程,都是非常快,花费统一,而且就是说,完全没有那些繁冗的过程,这就是Enterprise web 2.0的威力。