写点什么

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

  • 2009-07-10
  • 本文字数:1436 字

    阅读完需:约 5 分钟

在 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 强迫症”。

2009-07-10 19:312237
用户头像

发布了 255 篇内容, 共 65.2 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

AI低代码,或将再次颠覆开发行业

引迈信息

低代码 AIGC JNPF AI低代码

专访高雪峰:从GPT3.5到4,超强推理能力的实现与“图”密不可分 | 36氪专访

Fabarta

人工智能 AI 图计算 图智能

创建各种类型的3D模型:Rhino 7中文激活版

真大的脸盆

Mac Mac 软件 三维建模 建模软件 3d建模

如何简单快捷的使用上ChatGPT?

Ricky

人工智能 openai ChatGPT

Amazon EKS 上有状态服务启用存储加密

亚马逊云科技 (Amazon Web Services)

亚马逊云科技

声网自研编码器 a264 & a265:更优画质更低能耗,进一步适配实时互动场景需求

声网

Footprint Analytics、Oasys L2 区块链和 HOME Verse 联手推动区块链游戏基础设施创新

Footprint Analytics

分库分表的 21 条法则,hold 住!

小小怪下士

Java MySQL 程序员 分库分表

YMatrix 5.0 故障自动转移功能新实现,运维更方便!

YMatrix 超融合数据库

数据库 时序数据库 超融合数据库 YMatrix

20 分钟搭建互动教室,实现多人实时互动白板协作丨RTE 开发实战课 • 第三期

声网

行业实践专栏上线|互娱领域专家解读 Flink 企业应用实践

Apache Flink

大数据 flink 实时计算

一文看懂THD布局要求

华秋PCB

PCB 布局 PCB设计 布线 波峰焊

NFTScan:05.08~05.14 NFT 市场热点汇总

NFT Research

NFT

IPv6 无状态地址如何自动配置?

天翼云开发者社区

IP 网络

共享电动车制造的厂家有哪些?要注意什么

共享电单车厂家

共享电动车厂家 共享电单车生产 共享电动车制造 本铯电动车厂家

飞桨EasyDL月刊:4月功能全新升级,模型训练步骤缩短63%

飞桨PaddlePaddle

飞桨 EasyDL

一周狂赚50万,GPT-4帮你在线“脱单”,AI女友按分钟收费,男友高达数量1000+

加入高科技仿生人

人工智能 AI 低代码 ChatGPT GPT-4

浅谈TCP、UDP、ICMP三种常见协议

天翼云开发者社区

网络传输协议

软件测试 | SQLite管理工具

测吧(北京)科技有限公司

测试

明道云开放日上海站开启报名

明道云

山东移动:全业务域核心系统升级,实现大幅降本增效

OceanBase 数据库

数据库 oceanbase

MySQL的varchar存储原理:InnoDB记录存储结构

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

低代码开发平台 重塑数字医疗生产力

力软低代码开发平台

4 月 NFT 月报: 在动荡的 NFT 市场中寻求生存

Footprint Analytics

区块链游戏 NFT 链游

软件测试 | 安装PyMySQL

测吧(北京)科技有限公司

openEuler 成功适配 LeapFive InFive Poros 开发板

openEuler

Linux 操作系统 openEuler 开发板 risc-v

NUMA架构介绍及优缺点分析

天翼云开发者社区

架构设计 NUMA

共铸国云 智领未来 | 化云为雨 泽被万物

天翼云开发者社区

云计算 网络

软件测试 | 配置MySQL

测吧(北京)科技有限公司

测试

一图看懂一体化数据安全平台 uDSP

原点安全

数据治理 数据安全 数据安全法 信息泄露 个人信息安全

VictoriaMetrics常见性能问题排查

天翼云开发者社区

vm 架构设计

MuleSource CTO给出是否选用ESB的检查清单_SOA_胡键_InfoQ精选文章