正确认识SOA真谛 走出ESB迷途

[摘要] 人们对ESB的追捧正在使SOA的实施走向“迷途”。利用ESB来辅助SOA实施变成了以ESB为中心来构建SOA应用,手段变成了目的,技术篡夺业务成为了SOA的重心,这严重地背叛了SOA的本原特性。    [关键字] ESB SOA 实施

关于如何把必要的企业服务总线转化为面向服务的架构一直存在着争论。强调ESB对于SOA重要性的人有着自己的关注点,而质疑ESB作为SOA基础的观点也有着更深层次的考虑,同时是对前一种观点走向极端的一种有益的矫正。

  使用SOA架构来搭建IT系统是一个复杂的过程,而ESB的使用则简化了这一过程。“面向服务的架构(SOA)从根本上改变了对企业应用的设 计、开发和集成的方式。它倡导企业应用的模块化服务、便捷集成和重用。然而SOA也带来一系列的技术挑战,如可靠的消息传递、服务的虚拟化、服务的发现和 调用、策略管理等等。而ESB做为SOA架构的中间层,帮助企业有效解决了这些难题,所以企业往往会从ESB入手,来实施SOA。” 甲骨文公司大中华区高级技术经理黄建勇这样向记者解释ESB在SOA中的作用。

  ESB在SOA中的重要作用已经得到了人们的共同认可,Forrester Research公司发表的一份报告指出,持续采用SOA能很好的体现ESB的思想,并且把ESB称为“SOA的主要切入点”。 SOA厂商更是纷纷推出自己的ESB产品,并不断地向用户宣扬ESB可以帮助他们简化SOA的难题,降低SOA实施的成本。

  ESB不等于SOA

  但是,人们对ESB的追捧正在使SOA的实施走向“迷途”。利用ESB来辅助SOA实施变成了以ESB为中心来构建SOA应用,手段变成了目的,技术篡夺业务成为了SOA的重心,这严重地背叛了SOA的本原特性。

  IBM WebSphere SOA与J2EE顾问Bobby Woolf最近写了一篇文章《以ESB为中心的架构是实施SOA错误的途径》来质疑这种把ESB当作SOA的实现基础的做法。Bobby Woolf在文章中提到,很多客户在开始建设SOA时要求先为他们建立一个ESB,他们抛弃了SOA的理念而只对ESB感兴趣。“这些客户在ESB和 SOA之间划了一个等号,或者更准确地说建设SOA就必须建设ESB。” SOA中国设计中心主任,IBM资深技术主管毛新生指出了这种错误的根源所在。

  ESB不等于SOA,它更不能替代SOA。以ESB来启动SOA应用,然后以ESB为中心来构建SOA系统是不可取的。

  Burton Group的分析师Anne Thomas Manes说道:“如果缺少我推荐启动SOA的基本组件,ESB将不会列在我的清单中。事实上,我并不鼓励人们由ESB开始。ESB并不会鼓励好的SOA 行为。ESB本质上是集成系统,而非SOA系统。SOA是用于拆卸应用竖井(application silos),而集成系统则是修补这些竖井。”

  而她提及的基本启动包括:

  一个或多个服务平台(如.NET,Java EE应用服务器等)

  SOA管理解决方案

  注册表

  如果服务要被暴露在防火墙之外,那么需要XML网关

  她还指出,ESB非常有用,但是,在SOA项目的初始阶段可能不会发挥多大的用途。在SOA项目的后期,你还可能需要一个编制 (orchestration)引擎,并且大多数的ESB都会提供一个。即便如此,ESB也绝对不是组织启动SOA的起点。所有这些能力你一开始并不需 要。因此,ESB应该在后期购买。

  Accenture首席技术官Don Rippert认为激活SOA的全部潜力需要通过四个阶段,而ESB则处于第三个阶段。他同时指出当前大多数的企业还只是处于第一个阶段,因此ESB实际上对于他们来说并不是迫切需要的。

  而他所说的四个阶段如下所示:

  1.使用XML,以更标准的方式使用应用程序接口。

  2.捕获一些业务过程,并将它们转化成为Web服务。

  3.引入并全面使用企业服务总线。

  4.产生业务过程执行语言(Business Process Execution Language,BPEL),它可由业务过程建模工具完成。BPEL可以改变应用程序的行为,而无需修改软件。

  另外,在IBM定义的实施SOA的五个切入点中——人员、流程、信息、连接性、重用,只有连接性和ESB相关。

  Bobby在他的文章中也说道,仅仅建造一个总线的工程是不可取的。IT部门认为只要建造了一个总线,人们就会围绕着总线来构造SOA的应用了。但是问题在于,当人们开始构造SOA应用时,他们会发现那些已经建造好的ESB已经不能满足当前的需求了。

  针对这种错误的倾向,他警告道“只有当你实际需要一样东西,才去实现它,决不要仅仅因为你预见到未来的需要。”这种哲学遵循的思想是“够用就 好”,或者说只有需求出现时才去满足它,而不是预测将来会出现什么样的需求,然后预先就去实现它,因为这样做将造成巨大的浪费,甚至给将来设置阻碍。

  “ESB就是道路,试想城市规划时是不是先把所有的道路都修好,然后再去修建筑呢?”毛新生这样形象地做了一个比喻。

  正确认识SOA的真谛

  以ESB为中心来构建SOA系统,这种错误的根源就是完全从技术角度考虑,而忘记了SOA的核心是业务价值。

   “Bobby Woolf的这篇文章就是批判唯技术而技术的错误路线,这是一个不太好的建设企业IT的倾向。”毛新生这样解释Bobby那篇文章的真正目的,他进一步说 道:“我们每天都在谈业务驱动,业务敏捷,把业务和IT对齐,所有这些其实都在强调SOA的核心是业务价值,它所解决的问题是业务问题,而不是关注技术 的。而ESB是一个完全技术的东西。”

  离开了SOA,ESB将失去它所连接的服务,而仅仅是一个总线,同时也将变得毫无价值。Bobby做了一个比喻:路是没有任何价值的,除非你利用它把一个东西从一个地方移到另外一个地方。而离开SOA,ESB就像一个没人使用的道路。

  “做SOA的事情不要先上来建立一个大而全的ESB,相反是关注你的业务问题,找到用SOA的方法来解决业务上的需求,在解决这个问题的过程 当中,你会看到一系列的业务服务。这些业务服务是会产生业务价值的。它可以灵活地组装,动态地解决你变化的业务需求。这是它的价值,只有这样才能使你的业 务敏捷起来,随需应变起来。而在服务的组装过程中,你再去考虑利用ESB来把他们连接起来。”毛新生说道。

  在认识到SOA的业务本性后,我们将重新回归ESB在SOA实施过程中的正确位置,而不是一切以ESB为中心。当然这种矫正并不是否认ESB的价值。ESB是好的,单纯的ESB项目是坏的。让架构围绕服务,而非总线。

 
阅读更多
个人分类: 体系架构
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭