
基本术语定义:
IaaS:基础设施服务,Infrastructure-as-a-service;
PaaS:平台服务,Platform-as-a-service;
SaaS:软件服务,Software-as-a-service。

IaaS
基础设施即服务。有了laaS,企业在开发APP时,只需在公有云平台上注册一个账号,花点钱,配置各种云服务器,各种大小的存储,各种带宽的网络,都配齐,不用操心诸如机房选址、设备采购、实体服务器、存储、网络等问题,只要一个账号,便解决了。而作为程序员,只需在服务器上安装各类runtime,中间件,数据库等等以及开发这款APP的前端与后台,测试,上线,再迭代,再更新的操作,如果没有IaaS,前期工作还有很多。
PaaS
平台即服务。PaaS是在IaaS的基础之上,解决了操作系统、数据库、运行时环境runtime、中间件、各种框架的搭建操作问题,有了PaaS,程序员只需要专心开发自己的APP就行了。Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,即一个开源的应用容器引擎,源代码托管在 Github 上, 基于Go语言并遵从Apache2.0协议开源。
SaaS
软件即服务。对于用户来说,SaaS是现成的,用不着开发,只需要专注在自己的业务上就行了,写代码、维护等各种事情都交给SaaS厂商就行了。用户只需要一个续费账号,所有问题都解决了。

三者都有非常庞大的产品群体和用户服务群体,三者之间的特征也非常明显,也已构成了各大厂商的基石。
服务层次的区别:
IaaS,提供最底层服务。IaaS处于最底层,服务商提供底层/物理层基础设施资源(服务器,数据中心,环境控制,电源,服务器机房),客户自己部署和执行操作系统或应用程序等各种软件。
PaaS,提供更高一层服务。PaaS处于中间层,服务商提供基础设施底层服务,提供操作系统(Windows,Linux)、数据库服务器、Web服务器、域控制器和其他中间件,以及服务模型中的备份服务等中件层服务。例如IIS,.NET,Apache,MySQL …,客户自己控制上层的应用程序部署与应用托管的环境。
SaaS,提供最上层服务。SaaS处于最上层,服务商提供基于软件的解决方案,满足客户最终需求;如OA、CRM、MIS、ERP、HRM、CM、Office 365、iCloud、G Suite等应用,客户不需考虑任何形式的专业技术知识,获得完整的软件包,使他们的日常工作和生活变得更轻松。
下面这个小例子常用来帮助理解:

请设想你是一个餐饮业者,打算做披萨生意。你可以从头到尾,自己生产披萨,但是这样比较麻烦,需要准备的东西多,因此你决定外包一部分工作,采用他人的服务。你有三个方案。
方案一:IaaS
他人提供厨房、炉子、煤气,你使用这些基础设施,来烤你的披萨。
方案二:PaaS
除了方案一的基础设施,他人还提供披萨饼皮。你只要把自己的配料洒在饼皮上,让他帮你烤出来就行了。也就是说,你要做的就是设计披萨的味道(海鲜披萨或者鸡肉披萨),他人提供平台服务,让你把自己的设计实现。
方案三:SaaS
他人直接做好了披萨,不用你的介入,到手的就是一个成品。你要做的就是把它卖出去,最多再包装一下,印上你自己的 Logo。