阮志敏谈云计算与 SOA

发布于 2011年04月29日

作者:阮志敏

InfoQ 于 4 月 23 日在北京组织了主题为“企业架构在互联网环境下的挑战”的 Oracle 技术沙龙。“云计算与 SOA 有什么区别?”这是 Oracle 讲师做完企业私有云 PaaS 解决方案的讲演后,提问环节中观众提出的第一个问题。回答这样的问题是颇具挑战性的,不同背景的人会有不同的理解,也不是一两句话能够解释清楚的。我个人的职业经历正好和 SOA、云计算有很大的关系,因此希望和大家分享下我个人对这两者及企业软件领域的一些看法和理解。

过热 (Hype) 中的云计算

云计算起源于大型互联网企业,成本和指数级的业务增长压力使他们非常关注于 IT 资源的利用率和应用的可扩展性。云计算动态的、可伸缩的、基于互联网的 IT 服务交付模式很快产生共鸣,得到政府、企业和 IT 软硬件厂商等的一致认同。大家一致认为云计算将是继 PC 革命、互联网革命之后的第三次 IT 革命。

然而,在Gartner 2010 Hype Cycle(下图) 上,云计算位于炒作期的顶峰,而 SOA 早在2009年就已经位于成熟期,更不在 2010 的图上。对于 SOA 来说,人们已经不再谈 SOA 是什么、能做什么、怎么落地,而是谈论 SOA 的最佳实践。对于经历过 SOA 潮流的人来说,应该会有非常深的体会。

图片来源:Gartner 2010 Hype Cycle (如果看不懂 Hype Cycle 这个图,请看这篇文章)

面向企业的云计算解决方案,特别面向企业的私有云 PaaS 产品和解决方案,仍处于创新(研发)和市场整固阶段,离进入主流应用阶段仍有相当的距离。Oracle 的现有私有云 PaaS 解决方案本质上是对已有产品如 Fusion 中间件及 Oracle 数据库等的重新包装,宣传和抢占市场的意义更大一些。这一套东西同样也是构成 Oracle SOA 解决方案的根基。这就不难理解为什么人们听完讲演后会提出“Oracle 的云计算和 SOA 有什么区别?”这样的问题。

如果想更深入理解 SOA 和云计算的区别和共同点的话,需要深入分析企业 IT 问题的根源,以及 SOA 和云计算所要去解决的问题和所能带来的价值。

企业 IT 架构面临的核心问题

企业软件和互联网有很多差异,本质的区别在于企业必须直面其“遗留系统 (Legacy Apps)”,企业必须保证其核心应用系统的稳定,导致其核心应用系统的生命周期会很长。所以,企业面临的核心问题如何解决长期以来形成的“烟囱式 (Silo) 的企业计算环境”,如下图所示:

烟囱式的企业计算环境和 IT 建设存在如下问题:

  1. 不同的应用系统拥有不同的基础设施(硬件)和应用基础设施(中间件);

  2. 每个新应用都要建设一个新“烟囱”,建设周期长;

  3. 基于峰值规模设计,系统资源利用率低;

  4. 扩展困难;

  5. 没有统一的技术标准,运维成本高;

在云计算概念普及之前,企业已经在尝试解决这个问题,解决的思路是:

  1. 在基础设施层:虚拟化。利用虚拟化的基础设施提高物理资源的利用率和供给速度。

  2. 在应用基础设施层:SOA 化。

  3. 在应用层:集中化。比如原来是一个地市分公司建设一套 OA 系统,后来是整个省公司只建设一套 OA 系统;原来结算在每个省公司进行,后来全部集中在集团处理。

我们来分析一下 SOA 化。SOA 之前,企业应用集成的方式是 EAI,但是由于 EAI 缺乏统一的标准,集成完后又产生了新的孤岛。我们来看看围绕 SOA 的一些关键字,就不难看出 SOA 与传统 EAI 的区别,这些关键字是 SOAP、Web Service、服务、互操作、重用、ESB、服务编排、BPM、复合应用、业务敏捷等。因此 SOA 的目标是使 IT 基础架构更加灵活并且可重用,以最终实现业务敏捷性。

我们再看看围绕云计算的一些关键字,这些关键字是多租户、共享的资源池、弹性、动态伸缩、自服务、按需使用、基于 Internet、快速供应、IT 资源利用率等。企业利用云计算进一步地去解决它所面临的核心问题,但主要目标是提升 IT 资源的利用率、降低 IT 成本,促进企业 IT 建设从粗旷型方式到集约型方式的转变。云计算出现后,企业解决烟囱式问题的思路是:

  1. 在基础设施层:从虚拟化进一步扩展到 IaaS。相比于虚拟化,IaaS 增加了共享的资源池、自服务及统一的管理、监控和计量。

  2. 在应用基础设施层:基于 SOA 架构风格上逐步将应用迁移到 PaaS 平台上。从技术上讲,SOA 的核心 Building Block 如 ESB、BPM 中间件是位于应用基础设施这层,因此 SOA 与 PaaS 之间的对比或许更加合理。下面会对这两者之间的关系进行分析。

  3. 在应用层:企业会考虑更多地直接使用一些 SaaS 应用。

PaaS 就是云环境中的应用基础设施,也就是中间件,因此 PaaS 也可以说是中间件即服务,Middleware as a service。中间件的类型非常多,事务型中间件、消息中间件、远程过程 / 对象调用中间件、应用服务器、数据库服务器、ESB、BPM 等等。在传统 On-premise 部署方式下用到的中间件在云部署下也是要用到的。Gartner 把 PaaS 分成两类,APaaS(application platform as a service) 和 IPaaS(integration platform as a service)。APaaS 主要为应用提供运行环境和数据存储,能够将 On-premise 下部署的简单三层架构的应用直接部署到 APaaS;IPaaS 主要用于集成和构建复合应用。

鉴于企业现有 IT 的复杂性及目前 PaaS 平台的能力,是不可能将所有 On-premise 方式部署的应用一次性部署到云端的,因此 On-premise、私有云、公有云将在很长时间内共存。在这种情况下,SOA 架构风格能够非常好的支持 On-premise、私有云、公有云的共存,如下图所示:

企业 IT 架构的演进

本文并不想直接去回答云计算、PaaS 和 SOA 的关系和区别。我想用下面的这面这张企业架构演进图来作为这篇文章的总结,希望以此来给大家的一些启发,使得大家等够更多地从技术演进的历史来理解新事物。

从图中我们可以清楚看到企业架构在大型机时代、客户机 - 服务器时代、互联网时代和云计算时代的演进过程,以及每次演进的业务驱动力和技术驱动力。

从大型机时代物理上的集中,到云计算时代云端的集中,似乎是一个轮回……

关于作者

阮志敏,企业级 PaaS 平台CloudTao创始人,长期专注于企业软件领域,同时深受互联网技术影响,曾在 CORDYS 中国,摩托罗拉和惠普中国任职。