BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

MuleSource CTO给出是否选用ESB的检查清单

| 作者 胡键 关注 0 他的粉丝 发布于 2009年7月11日. 估计阅读时间: 4 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

在InfoQ的网站上已经有了很多关于ESB的新闻和文章。然而,只要ESB还是当今企业应用领域的热点,关于它的报导肯定还会延续下去。最近,MuleSource的CTO Ross Mason发表了一篇题为《用还是不用ESB》的博文,他在文中给出了是否在项目中选用ESB的检查清单。

这篇文章并非Ross Mason的心血来潮之作,而是对ThoughtWorks员工Erik Dörnenburg的博文《让ESB的痛苦曝光》的回应。在这篇博文中,Erik描述了一个典型的“简单问题复杂化”的例子:使用ESB来集成两个应用,而且只有两个。采用ESB的理由是架构师期望能让程序适应未来可能出现的变化。这似乎没什么问题。然而,在和项目的发起人经过一番交流之后,Erik开始怀疑ESB的必要性;开发者对此的反应则是“只有痛苦”,ESB不仅没有给项目带来好处,反而使它有延期的危险。通过对比引入ESB和没有ESB情况下的两副图,Erik展示了引入ESB所带来的复杂性,并认为此项目中的ESB纯粹是“简历驱动开发(Resume-Driven Development)”的结果,这种开发方法的唯一目的就是要得到一份漂亮的简历(CV)。

在引用完Erik的博文之后,Ross Mason给出了用于判断是否选用ESB的检查清单:

  1. 你是否在集成至少3个应用/服务?如果你只需要在2个应用之间进行通信,使用点对点集成会更简单。
  2. 你是否真的需要在未来插入更多的应用?尽量避免架构中有多余之物。更好的方式是保持简单,然后在需要时再重新构架。
  3. 你需要使用的通信协议类型是否多于1种?要是你只使用HTTP/Web服务或只使用JMS,那么你就无法从Mule提供的跨协议消息传递和转换中得到任何好处。
  4. 你是否需要消息路由功能,如分裂(forking)和聚合(aggregating)消息流,或基于内容的路由?许多应用并不需要这样的功能。
  5. 你是否需要发布服务供其他应用消费?这非常适合用Mule,因为它提供了一个健壮和可伸缩的服务容器,但是在Erik的用例中,他们所需要的只是一个来自他们前端Struts应用的HTTP客户端。
  6. 你是否有超过10个的应用要集成?避免大爆炸式的项目,考虑把这种项目分割成更小的块。首先把你的架构在3到4个系统中进行试验,在它对其他系统产生影响前把所有问题都搞定。
  7. 你是否真的需要ESB的伸缩性?应用的伸缩性需求非常容易被过度构架。Mule对伸缩性的支持使它成为了“内建”伸缩性的流行选择。但是,这要付出代价,因为你给架构中增加了一种新技术。
  8. 你是否确切地理解了架构的目标?厂商往往把ESB描述成一个盒子,有许多应用环绕在其周围。实际上,这并不是它的工作方式。围绕集成点、协议、数据格式、IT基础设施、安全等一开始有大量细节需要了解。从小做起有助于控制问题的范围,使莫名其妙的问题降至最少。在你了解你的架构并适当地划定范围之前,你都无法真正判断ESB是否对你合适。
  9. 通常来说,总要验证产品解决方案是否符合你的需要。不要选择ESB或其他任何技术,仅仅因为:
    • 让你的简历好看
    • 虽然今天我不需要这些特性,但是将来有一天我可能会用到它们
    • 我和销售们的老大一起渡过了一个相当不错的高尔夫周末

对于Ross的清单,Erik评论说

绝佳的检查清单,我完全同意;只要出于合理的目的使用象Mule这样的ESB,就能极大地简化项目。然而不幸的是,我们仍然可以看到许多架构甚至连你单子上的第一条都通不过。而且,这正是我在写我的那篇文章时所想到的。

孙子曰:“兵无常势,水无常形”。ESB的存在并非就意味着你非得在项目中使用它。Ross Mason的清单可能不太全面,可能带有个人偏见,但是它绝对有助于缓解“ESB强迫症”。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

resume driven development by Huang Hideto

这个词很帅~

Mule不要太难用! by 沙 俊星

Mule不要太难用!之前做一个小项目原先想用Mule的,结果搞了1个多月愣是没搞定:文档奇少,和代码严重不对应,开发者对网上提问的人态度傲慢...愤而转用OpenESB + GlassFish,从NetBeans网站下载了几篇教程练习了一下,两天搞定了!

Re: resume driven development by 竹十一 Julian0zzx

97 Things Every Software Architect Should Know, 第一条就是这个

Re: Mule不要太难用! by Peng Sunny

Mule很轻量,很好用,配置就可以了,
Mule文章:www.mulesource.org/display/MULE2INTRO/Understan...

相反open ESB集成太多概念,很重量。

Mule支持Spring pojo,Open ESB看到的是EJB哦

Re: Mule不要太难用! by 沙 俊星

这些入门文章都看过,基本原理也懂,但是实际做的时候一旦碰到问题,基本上别想在网上找到答案。

Open ESB确实概念很多,什么JBI、BPEL、CASA一大堆,但是普通应用基本不需要学习这些概念,因为Eclipse和NetBeans都提供了可视化的开发环境,鼠标拖一拖,一个应用就出来了。

个人对XML技术十分反感,从生理角度讲,这玩意儿根本就不是给人看的,所以使用可视化编辑器隐藏某种XML的细节是非常好的。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT