IaaS,PaaS,SaaS 的区别

作者: 阮一峰

日期: 2017年7月23日

越来越多的软件,开始采用云服务。

云服务只是一个统称,可以分成三大类。

  • IaaS:基础设施服务,Infrastructure-as-a-service
  • PaaS:平台服务,Platform-as-a-service
  • SaaS:软件服务,Software-as-a-service

它们有什么区别呢?

IBM 的软件架构师 Albert Barron 曾经使用披萨作为比喻,解释这个问题。David Ng 进一步引申,让它变得更准确易懂。

请设想你是一个餐饮业者,打算做披萨生意。

你可以从头到尾,自己生产披萨,但是这样比较麻烦,需要准备的东西多,因此你决定外包一部分工作,采用他人的服务。你有三个方案。

(1)方案一:IaaS

他人提供厨房、炉子、煤气,你使用这些基础设施,来烤你的披萨。

(2)方案二:PaaS

除了基础设施,他人还提供披萨饼皮。

你只要把自己的配料洒在饼皮上,让他帮你烤出来就行了。也就是说,你要做的就是设计披萨的味道(海鲜披萨或者鸡肉披萨),他人提供平台服务,让你把自己的设计实现。

(3)方案三:SaaS

他人直接做好了披萨,不用你的介入,到手的就是一个成品。你要做的就是把它卖出去,最多再包装一下,印上你自己的 Logo。

上面的三种方案,可以总结成下面这张图。

从左到右,自己承担的工作量(上图蓝色部分)越来越少,IaaS > PaaS > SaaS。

对应软件开发,则是下面这张图。

SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。普通用户接触到的互联网服务,几乎都是 SaaS,下面是一些例子。

  • 客户管理服务 Salesforce
  • 团队协同服务 Google Apps
  • 储存服务 Box
  • 储存服务 Dropbox
  • 社交服务 Facebook / Twitter / Instagram

PaaS 提供软件部署平台(runtime),抽象掉了硬件和操作系统细节,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层。下面这些都属于 PaaS。

  • Heroku
  • Google App Engine
  • OpenShift

IaaS 是云服务的最底层,主要提供一些基础资源。它与 PaaS 的区别是,用户需要自己控制底层,实现基础设施的使用逻辑。下面这些都属于 IaaS。

  • Amazon EC2
  • Digital Ocean
  • RackSpace Cloud

微软的 Azure 云服务有一张图,解释这三种模式的差异。

上图中,绿色的部分是云服务商决定的,紫色的部分是用户决定的。可以看到,SaaS 模式下用户没有任何自主权,只能使用给定的应用程序;PaaS 模式下可以自己安装应用程序,但是不能定制操作系统;IaaS 模式下则是云服务商提供(虚拟的)硬件,从操作系统开始都可以自己选择和定制。

参考链接

(完)

留言(55条)

真形象。

没鸟用

懂了

IaaS 怎么读?

一如既往的好懂

学习了,讲的很形象。

引用搅屎棍的发言:

没鸟用

人如其名

一峰大哥,博客有导航么?如何能快速找到相关分类下的文章呢?
例如我想找JAVASCRIPT相关文章,如何操作~

很形象哈~

从使用者角度看云产品,比较独特。

秒懂

引用志远的发言:

一峰大哥,博客有导航么?如何能快速找到相关分类下的文章呢?
例如我想找JAVASCRIPT相关文章,如何操作~

http://www.ruanyifeng.com/blog/javascript/

介绍的很形象。

清晰

很通俗易懂,比很多生硬的名词解释要好理解很多

现在那种叫 docker 的虚拟机很火,不知道阮老师在上面玩出什么好东西没有。

SaaS,我要做的就是吃,而不是卖。

引用杨捷的发言:

SaaS,我要做的就是吃,而不是卖。

必胜客就是SaaS

形象生动啊,阮老师...谢谢一直分享

有那么复杂吗?
IAAS就是服务器,也就是硬件
PAAS就是开发工具
SAAS就是码农做出来的网站

好懂

引用志远的发言:

一峰大哥,博客有导航么?如何能快速找到相关分类下的文章呢?
例如我想找JAVASCRIPT相关文章,如何操作~

是真的,我刚试过!Goolge搜索“阮一峰 javascript”关键字即可

真的形象生动,看完就懂了

作者是互联网的相关SAAS人员吗?想请教些问题,可否

阮老师,那微信公众号是不是属于云服务中的SaaS呢?什么都做好了,打入自己的LOGO和Slogan就好了。

谢谢 本来非常复杂的东西 用了三分钟都了解了
谢谢啦~~~~

引用yyc的发言:

有那么复杂吗?
IAAS就是服务器,也就是硬件
PAAS就是开发工具
SAAS就是码农做出来的网站

大哥被你一讲反倒复杂了,感觉也不太对,原文挺好的。

讲的很生动,一直很喜欢看阮一峰的博客,感谢!

阮一峰的文章真的太棒了,真的大体一目了然,理解了大概思想一切都好理解得多了

我认为SaaS的说法不对,SaaS是我直接拿来使用,比如fackbook,我是直接用,而不是拿来提供服务给其他人用,pizza as a service,我拿到pizza是用来吃,而不是卖。

引用Bruce的发言:

我认为SaaS的说法不对,SaaS是我直接拿来使用,比如fackbook,我是直接用,而不是拿来提供服务给其他人用,pizza as a service,我拿到pizza是用来吃,而不是卖。

自己做完软件,自己在用吗?肯定是用户要用的

想问一下, 这三种都各有什么优势和劣势呢?实际工作中怎么选择呢

还是阮老师的BLOG写的好啊,不是同一个方向的人一下就能理解~~~

引用有为小青年的发言:

自己做完软件,自己在用吗?肯定是用户要用的

给别人用叫SAAS 厂商, 自己用叫SAAS 客户.

引用yyc的发言:

有那么复杂吗?
IAAS就是服务器,也就是硬件
PAAS就是开发工具
SAAS就是码农做出来的网站

IAAS 的范围小了点, 应加上数据库, 网络, 存储空间 等.
逻辑层次是这么个层次. 三句话也很明白. +1

很喜欢阮一峰老师的文章,不高大上,平易近人,做为我这种水平比较低的也能基本看懂,赞

还有一种理解:iaas 信息即服务,paas产品即服务,saas服务即服务

引用rootlife的发言:

IAAS 的范围小了点, 应加上数据库, 网络, 存储空间 等.
逻辑层次是这么个层次.三句话也很明白. +1

数据库是paas级服务

讲的很好,深入浅出,浅显易懂,学习了!

引用yyc的发言:

有那么复杂吗?
IAAS就是服务器,也就是硬件
PAAS就是开发工具
SAAS就是码农做出来的网站

ASAAS就是各种网站拼起来

感觉对于PAAS的解释不太准确。应该说PAAS是在IAAS的基础上提供一些底层支撑型的服务供使用,比如Mysql、Redis等配套设施,让用户在此基础上开发自己的SAAS产品,而不是说提供一个部署平台。

微软的这张图不错,Pass就是用户(通常是有开发能力的人)自定义应用和数据结构,很棒。

非常形象好懂~多谢科普啦~

还有一种FaaS,函数即服务。

其实还是第一张图最"形象"

生动形象!!!

不举哪个披萨饼的例子会更好理解

将太好了,一下就明白了

阮老师永远滴神

* SaaS最好理解,就是面向用户的软件服务,开通一个账号用户就可以使用。另外例如给商家使用的餐饮软件、教育软件等都是SaaS。
* PaaS是面向开发者的,你只需要在PaaS提供商上面写代码就可以了,数据你自己存储,软件怎么运行,就交给PaaS提供商了
* IaaS也是面向开发者的,只不过想实体的物理机、网络、存储等都是由IaaS提供商提供的,如亚马逊的ES2、阿里云ECS等都是IaaS。

引用leo的发言:

还有一种理解:iaas 信息即服务,paas产品即服务,saas服务即服务

iaas ==> (提供)基建的服务
paas ==> (提供)平台的服务
saas ==> (提供)软件的服务

IaaS = 阿里云
PaaS = 对程序员来说的微信小程序平台 可以借助微信平台开发和实现服务
SaaS = 对微信程序员来说提供给所有人的微信软件,大家拿来直接用

一直都没搞懂,看了阮老师的文章,介绍的很清晰了

有没有将serverless的文章呀,看别人的文章感觉还是一头雾水

这三者可以理解成包含关系吗??

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接