争论:SOA 已死?

  • Dilip Krishnan
  • Boris Lublinksy
  • 胡键

2009 年 1 月 11 日

话题:SOA架构云计算DevOps

Anne Thomas Manes 为 SOA 写了一篇讣告,声称

2009 年元旦,SOA 遭遇死亡,经济衰退的灾难性影响彻底摧毁了它。SOA 由其后代得以延续:mashups、BPM、SaaS、云计算及其他依赖“服务”的架构方法

她接着说:

SOA 曾被认为是 IT 的大救星,现在却证明是一项极其失败的试验——至少对于大多数组织而言如此。SOA 被认为能大规模降低成本和增加机动性。但除了极个别情况,SOA 并未兑现它承诺的好处。在投资百万后,IT 系统并未得到改善。许多组织的情况更糟:成本增加、项目延期,系统比以往更脆弱。手握钱袋的人们对此已感到厌倦。鉴于 2009 年的预算紧缩,许多组织消减了他们 SOA 项目的资金。

尽管 SOA 最初主要被技术人员接受,但就其本质而言,它是业务而非技术问题。又由于是技术人员和产品提供商引入(并且往往执行)了 SOA,他们对 SOA 技术(软件销售)的关心要多过对其本身业务影响的关注:

人们忘记了 SOA 的目的,沉醉于愚蠢的技术争论(如,“最好的 ESB 是什么?”或者“WS-* 火拼 REST”),却遗忘了重要的内容:架构。

由于无法快速地展示其 ROI,导致许多业务决策制定者对 SOA 敬而远之:

SOA 的衰弱导致了 SOA 的幻灭。业务人员不再相信 SOA 会带来可观的收益。“SOA”已经成了过街老鼠。它必须从我们的字典中消失。

这意味着 IT 界的滑铁卢:

SOA 的灭亡是 IT 界的悲剧。组织迫切需要给他们应用程序集合进行架构性改进。面向服务是快速集成数据和业务流程的先决条件;它使环境开发模型(如 mashups)成为可能;它还是 SaaS 和云计算的基础架构。

那么接下来会怎样?根据 Anne 的说法:

尽管“SOA”一词已死,但是对于面向服务架构的需求比以前更迫切了。

她建议停止讨论 SOA,开始讨论服务(可是她并未清晰定义该词,因而为解释和误解创造了条件)。

该文无疑在该领域的思想领袖中引发了极大争议。

David Linthicum分析了出现的问题,解释如下:

  • 缺乏理解 SOA 的熟练架构师。
  • 大咨询公司更关注战术和时间计费而非结果。
  • 厂商过分关注销售,对解决方案却关注不足。
  • 大肆渲染 SOA 是所有 IT 困境的灵丹妙药

Joe McKendrick表示 SOA 是一种架构风格而非产品:

成功的 SOA 是变革过程中的一部分,该过程将改变组织被管理和做业务的方式。并且一些组织似乎立刻就“得到了它”。然而,大多数公司可能认为 SOA 更像是 JBOWS(Just a Bunch of Web Services,只是一堆杂乱无章的 Web 服务)架构。SOA 是一种方法论和哲学。SOA 所用的技术和方法混合体会发生变化。几年前,这种方法是 Web 服务,昨天它成了 REST 和 Web 或企业 2.0,今天则是云计算。SOA 的妙处就在于它必须独立于底层的技术或协议。

Miko Matsumura支持 Anne 对改变术语的建议,但强调 SOA 概念,尤其是 SOA 的业务维度肯定会延续下去:

我认为把 SOA 作为术语使用迟早要到头,但是解决根本问题的策略将不得不脱离 SOA“潮流”继续演变。在 SOA 死亡的同时,SOA 也必然会被一个不同的名字所替代。大组织的 DNA 会需要接口根据实现方式对需求进行适当地分割,而 SOA 的设计模式恰恰能实现企业、多企业和真正的“云”平台长期愿景。任何像 SOA 这样的术语必须经历这种炒作的循环,并经历语言上的神化、实现、试验、最终到达术语的疲劳程度。SOA 有一个特别的“大杂烩”议程,因此众多拒绝离开它的人们沉浸在 SOA 将打救他们的希望之中。坦白的讲,我认为“云”也会出现同类模式,这说明它是个不太容易定义的技术词汇,反而是一系列政治利害和一系列的内幕和实现联系在了一起。

他对反应也提出了警告,在 IT 最近的历史中它是如此的司空见惯:

对经济的担心应该让位于成为我们必需品的项目。反射性情绪反应的时代但愿能遗留给 2008 年(或是 2009 年上半年),并且我们能并肩前进来重新规划和重建我们的基础设施。为了实现这个宏伟愿景,我们需要每一个人都必需做出改变。

Steve Jones这样解释 Anne 的言论:

由于向你兜售了足够的废物,厂商正在离 SOA 而去。现在,他们又想向你倾销它的后代:mashups、BPM、SaaS 和云计算……现实情况是,服务在现阶段其实比其他时候更重要。这并不是说 SOA 已死,它意味着在无法销售更多的 ESB 和 Web 服务工具时,市场对 T-SOA(译注:Technology-SOA,技术性 SOA)不再青睐。剩下来的,SOA 的服务所带来的事实是 SOA 的起点不是那些绚丽的技术;如果你采用新的技术,而不具备服务的心态,那么你就会制造一定程度的混乱,结果会轻易地让咨询师和提供商利用 EAI 而大发横财。在防火墙内部、大型应用之间制造混乱是一方面,在因特网上通过成千上万个小应用这样做则是一个规模完全不同的问题。

接着,Steve 阐述了服务的定义,提倡“业务优先”的方法,并把服务定义成“为他人使用而暴露的功能”:

……你需要发现你的服务、理解它们交付的业务价值、理解交付该价值的成本模型,最终决定正确的技术方法

另一方面,Nick Gall不同意Anne 指出的方向(“服务万岁”):

作为传统的理解,正是服务思想导致了这场混乱,我们发现自己深陷其中:实体相关(服务)的接口导致的支离破碎。相反,我更愿意说“Web 万岁”。我对 Anne 的博文对 Web 提都没提表示非常震惊!

他引用了 Google、Amazon,甚至是 Salesforce 的成功,并且把这些成果归因于很大程度上利用了万维网架构、Web 社区和 Web 业务模型:“面向 Web”是快速集成数据和业务流程的先决条件;它使环境开发模型(如 mashups)成为可能;同时它是 SaaS 和云计算的基础架构。

最后,相似的观点来自于 Don Box 在 2005 年公开发表的预言,尽管它与本讨论无关,但却暗示了相似的结果:

SOA 一词终将废止,软件业会发明或重新利用同样模糊的术语来代替它。

务必请阅读 Annes 的原文

很明显,光靠改头换面可能无法解决当前 SOA 的问题,但是有人可能会争辩说,重新关注 SOA 中的架构和业务方面却可以。你怎么看?SOA 已死,或者依旧活力十足?

查看英文原文Debate: Is SOA Dead?

SOA架构云计算DevOps