写点什么

阮志敏谈云计算与 SOA

2011 年 4 月 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 中国,摩托罗拉和惠普中国任职。他的个人博客是: http://www.cloudtao.org/external/blog/taoofcloud ;新浪微博是: http://weibo.com/taoofcloud


感谢张凯峰对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2011 年 4 月 29 日 00:0010226

评论

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

智慧公安大数据可视化分析平台开发,重点人员管控系统

WX13823153201

LTN挖矿系统开发

Geek_a620db

数据库范式与反范式设计,是一门艺术

flyer0126

数据库 范式

共享单车系统搭建

Geek_a620db

物联网方面的竞赛有那些?

IoT云工坊

STARFIELD星域APP系统开发|STARFIELD星域软件开发

开發I852946OIIO

系统开发

区块链电子合同铸就数字经济信任基石

CECBC区块链专委会

电子合同

数据可视化平台搭建,警务实战平台大数据应用

t13823115967

数据可视化 可视化数据分析搭建 警务实战平台

2020年物联网行业有哪些新趋势

IoT云工坊

为什么线程安全的List推荐使用CopyOnWriteArrayList,而不是Vector

Java旅途

Java List 线程安全 vector

架构师训练营大作业(一)

木头发芽

如何基于SDK快速开发一款IoT App控制智能灯泡(Android版)

IoT云工坊

android App 物联网 API sdk

多币种钱包app系统开发,数字货币交易所系统源码开发

系统开发咨询:I76-883I-5I52 邓森

vivo 互联网业务就近路由技术实战

vivo互联网技术

中间件 服务器 分布式路由

物联网目前的安全问题有哪些?

IoT云工坊

PiNetwork 挖矿算力系统开发

Geek_a620db

掌趣电竞系统开发搭建

Geek_a620db

海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js

刘悦的技术博客

Python Docker 镜像 容器化 部署

联联周边游系统源码

Geek_a620db

译|Optimal Logging

cyningsun

监控 日志 异常 故障 错误

架构师训练营大作业 (二)

木头发芽

批量作业调度工具Taskctl Web应用版/ETL免费调度工具/数据挖掘,抽取,转换工具

会飞的鱼

数据挖掘 大数据处理 kettle 运维自动化 海豚调度

面试官:说说操作系统微内核和Dubbo微内核?

yes的练级攻略

dubbo 操作系统 微内核

HBC环保卫士系统搭建

Geek_a620db

vivo 全球商城:订单中心架构设计与实践

vivo互联网技术

分库分表 服务器 架构设计

高速增长的跨境电商业务背后,区块链应用场景来了吗?

CECBC区块链专委会

跨境电商

智能合约系统软件开发|智能合约APP开发

开發I852946OIIO

系统开发

指尖上的警务,打造微警务管理服务平台

t13823115967

智慧警务系统开发 微警务

搜狗开源框架发布纯自研C++ Kafka客户端

Geek_459987

使用 Serverless 创建一个简单的短网址服务

donghui2020

flask Serverless Lambda Store

盘点2020 | 作为技术号主的一年!

小傅哥

Java 小傅哥 盘点2020 技术成长 技术盘点

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

阮志敏谈云计算与SOA-InfoQ