写点什么

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:311924
用户头像

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

关注

评论

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

建成 5000 多间「梦想中心」后,他们决定将技术开源

腾源会

开源 公益 腾源会

蓝牙5.0简介、nRF52832 BLE样例工程框架及main函数初始化流程简析

矜辰所致

蓝牙 启动流程 8月月更 nRF52832

入门机器学习?还是先抢救一下数学吧!

博文视点Broadview

无需编写一行代码,实现任何方法的流量防护能力

阿里巴巴云原生

阿里云 微服务 云原生 流量

【小程序项目开发 --- 京东商城】 启航篇之uni-app项目搭建

计算机魔术师

8月月更

2022 世界人工智能大会|人工智能与开源技术先锋论坛即将开幕

Kyligence

开源技术 人工智能大会

兆骑科创人才引进服务平台,线上直播路演,投融资对接

兆骑科创凤阁

厚积薄发--一文带您了解阿里云 RocketMQ 轻量版消息队列(MNS)

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

bboss数据同步ETL工具介绍

大河

elasticsearch ETL bboss

NFT平台开发:NFT数字馆藏平台开发

开源直播系统源码

数字藏品软件开发 数字藏品开发 数字藏品系统

节能环保LED显示屏为什么是未来发展趋势?

Dylan

LED显示屏 led显示屏厂家

兆骑科创创新创业服务平台,海内外高层次人才引进,赛事承办

兆骑科创凤阁

Tapdata 获得阿里云首批产品生态集成认证,携手阿里云共建新合作

阿里巴巴云原生

阿里云 Serverless 云原生 SAE 合作

【小程序】view视图,swiper轮播图,scroll-view滑动列表 (在线详细手册)

计算机魔术师

8月月更

Kyligence 亮相 Gartner 2022 数据与分析峰会,解锁数据智能新潜力

Kyligence

数据管理 指标中台

移动端App自动化之触屏操作自动化

霍格沃兹测试开发学社

字节跳动基于 ClickHouse 优化实践之“查询优化器”

字节跳动数据平台

OLAP Clickhouse 查询优化 数据库开发 数据引擎

为什么MatrixOne 0.5变慢了

MatrixOrigin

矩阵起源 MatirxOrigin MatirxOne 因子化

你还有什么问题吗?

AlwaysBeta

程序员 面试

GOPS现场 | 对话龙智董事长何明,探讨DevOps安全新概念

龙智—DevSecOps解决方案

运维 GOPS大会 GOPS全球运维大会

【小程序项目开发-- 京东商城】uni-app开发之配置 tabBar & 窗口样式

计算机魔术师

8月月更

leetcode 227. Basic Calculator II 基本计算器 II(中等)

okokabcd

LeetCode 算法与数据结构

校区多,客情管理难?看中进教育使用明道云的新解法

明道云

技术分享 | 测试人员必须掌握的测试用例

霍格沃兹测试开发学社

这份SVN命令备忘清单,请查收

龙智—DevSecOps解决方案

svn 版本控制系统

技术分享 | 这些常用测试平台,你们公司在用的是哪些呢?

霍格沃兹测试开发学社

AntDB最新成果亮相全球分布式云大会,推动企业数字化变革深入

亚信AntDB数据库

AntDB

网络组件axios可以在OpenHarmony上使用了

OpenHarmony开发者

Open Harmony

项目经理和ScrumMaster可以是同一个人吗?

ShineScrum捷行

Scrum 敏捷 ScrumMaster 项目经理

Elasticsearch添加修改删除索引文档

大河

elasticsearch bboss

BulkProcessor异步批处理组件使用

大河

elasticsearch bboss bulkprocess

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