围绕递增式 SOA 的价值的辩论

  • Mark Little
  • 马国耀

2009 年 11 月 2 日

话题:SOA方法论架构文化 & 方法

在最近一片文章中,John Moe讨论了 SOA 实施方法的分类,特别是递增式 SOA, 如 Zero MiddlewareGuerrilla SOA。John 如是说,

……有一组可以让 SOA 更简单,更易接受的实施方式,我把对他们的讨论归类成“游击”SOA,但仍然试图找出这些方法之间的不同之处,以便于你找到最适合你的场景的答案。

这些方法包括:

  • Web 服务:对于这类开发者来说,“SOA 就是用 Java 或.NET 创建最符合 WS-* 规范的服务代码,因为每个 Web 服务可以通过(在 Web 上不断演化的)WS 标准调用其他服务并被其他服务调用”
  • Agile:“Agile 可以应用于 SOA 中用于缩短开发时间,但是要小心,必须只应用于服务的开发,而不是整个应用的开发,不然,将以整个应用级的服务而收场。”
  • 服务提供者:“随着软件即服务(SaaS)越来越成为主流,某些 Web 功能背后的服务提供者(如提供商)正在推销使用浏览器 和小工具(widget)进行应用开发,在这里你只需通过混搭和匹配 SaaS 服务就可实现你的业务需求。然后在云计算平台即服务(PaaS)中运行你的应 用。”
  • 产品提供商:“仍然有很多且数量还在不断增长中的 SOA 产品提供商蜂拥在这个市场上为你的业务拼命。其中大部分都拥 有对你有帮助的独创软件,而且他们不断地重复着这种论调:‘只要买了我们的工具,你的 SOA 就无需其他了’,或类似的标语。产品提供商的观点试图表达:要 么他们的产品是你唯一需要的 SOA 基础设施,要么它的产品如此大以致于他们要收取 $250M[才能为一个大公司建立 SOA 基础设施]。”

Jim Webber, Dave Chappell,Steve Jones 及另外一些人相继提到这篇文章,Dave 首先评价了提供商驱动的 SOA 解决方案的显而易见的开销 。

如果大公司的每个 SOA 项目投入 $250M 买我们的中间件的话,那公司(Oracle)将非常乐意,然而这并不属实……

但是随后他的话题集中在 John 的核心观点上:

任何项目(不论是否是 SOA 项目)的更大开销是人天。我认为一个基于 SOA 原则的项目,如果不用任何中间件的话,则是浪费了更多的时间在重新缔造“轮子”,而且这些“轮子”又作为私有框架的一部分必须进行长期维护,而若这些“轮子”是由“游击”顾问留下的话则更糟糕。

来自非集成商群体Steve同意 Dave 的说法:

+1

产品开销是 SOA 项目的一大块的说法是不靠谱的。大部分项目的开销相对于产品开销比例一般是 10:1,如果项目周期长的话比例会更大,即使是短期项目也至少是 4:1 或 5:1。任何把钱花在版权而不是 SOA 实现上的人都像提线木偶一样。

来自另一家非提供商公司的 Jim 给出了一些有趣的事实反驳上面的观点。它讨论了它和它的团队参与实施的一个电信项目:

在我们的第一个项目开始前,客户已经选择了一家可靠的咨询机构对他们将来的架构(每月需完成 1 亿笔交易)做了分析。咨询公司的结 论是要部署一个总线将现有系统连接起来,任何其他需求也会一并实现。预期的中间件投入是£10M。相对于做大事来说这并不多,但是这£10M 不能解决问 题,这仅仅是提供商的(也许将来某天能带来收益的)流程的第一步,但尚无经验数据来支持这种说法。

由于提供商的开销太大,所以为其他选择敞开了大门。因此,使用 Agile 和“游击”SOA 背后的方法,Jim 的团队能够……

……在几周内完成对问题的分析,包括用一些简单的数学模型分析了问题域随时间的延伸会产生的问题,以及相应的弥补措施。我们花了 些时间理解如何递增地修改企业架构,使其更早地实现价值,并且我们推荐使用廉价的 HTTP 服务器,而花在中间件上的成本是£0。重要的是,我们的架构方法 有数据支撑: 我们通过高层设计评估了测试桩(一段简短的用于回答问题的代码)的吞吐率及延时特征,数据显示 HTTP 及所选的 Web 服务器能够支撑系统所必须承受的流量。

按 Jim 的说法,项目会越做越强,最终客户只需要为交付的解决方案支付较少的费用。第一个项目的成功迎来了第二个,第二个项目亦然成功。Jim 在结尾时直接回应了 Dave 的关于人力开销的观点:

十分有趣的是,再回到人力开销和中间件开销的问题上,我们在中间件上无开销,而人力开销大约在£1M 左右,这比起£10M 的预付赌注来说要好很多。更清晰地表示如下:

产品环境的整体软件开销: £0 (中间件) + £1,000,000 (人力) = £1,000,000

中间件方式的开销: £10,000,000 (中间件) + £? (人力) = > £10,000,000

Steve 回应了 Jim,这么说:

不知道他有没有考虑到未来 5+ 年的人力的支持开销……

随后它集中在 Jim 的观点中的数据,特别是中间件产品花费的 $10M 上面:

[……] 如果谁一开始就在中间件上花 $10M 的话,那么这个人一定是个彻头彻尾的傻瓜。我很难想象会有人会预先在中间件上开支那么多;很难想象哪个公司在公司外那么多钱,那其全年的 IT 开销一定会超过 $500M。

双方的有趣事实都难以用于下决定(更糟的是,个例不能很好地用作下结论的统计样例)。所有的 SOA 执行者,不管是否基于提供商,都会深入分析他们的项 目为什么成功或失败,但是出于某些原因又不能暴露这些信息。没有真实独立的数据,永远很难在几种方法之间作出孰优孰劣的判断。然而,Steve 还是做了个有趣的总结:

Jim 的博文中没有考虑到的一点是在作出 $10M 决定的人中一定有白痴,……而现在这里面也许还有我的钱。

争论继续激烈地进行着……

查看英文原文:What Value for Incremental SOA

SOA方法论架构文化 & 方法