IaaS、PaaS、SaaS 的区别只有一条主线:谁负责操作系统、运行时、中间件和应用程序。IaaS 把虚拟机交给你,操作系统以上全部自管;PaaS 接管操作系统与运行时,你只管代码和数据;SaaS 连应用本身都由厂商运营,你只是使用者。控制力越往下越强,运维负担与成本弹性也越往上越轻。
责任边界:一条线划清三种模型
把技术栈从下往上排:物理设施、虚拟化、操作系统、运行时、中间件、应用、数据。不同模型的分界线画在不同高度,这条线以上是"你管",以下是"厂商管"。云安全领域把它叫责任共担模型,选型时它同样适用。
| 层次 | IaaS | PaaS | SaaS |
|---|---|---|---|
| 物理设施与虚拟化 | 厂商 | 厂商 | 厂商 |
| 操作系统与补丁 | 你 | 厂商 | 厂商 |
| 运行时(JVM/PHP/Node) | 你 | 厂商 | 厂商 |
| 中间件与数据库 | 你 | 厂商(受管服务) | 厂商 |
| 应用代码 | 你 | 你 | 厂商 |
| 数据与账号权限 | 你 | 你 | 你(配置层) |
| 典型产品 | 云服务器、VPC、块存储 | 应用托管、容器平台、云数据库 | 在线文档、CRM、邮箱 |
要特别注意最后一行:无论哪一层,数据与访问权限始终由你负责。把数据放进 SaaS 并不等于把合规责任也外包出去。
IaaS:给你地基,其余自建
IaaS 交付的是计算、存储、网络这些原始资源。你拿到 root,能装任何软件、改任何内核参数、配任何网络拓扑。优点是控制力最强、可迁移性最好、能承载任何形态的遗留系统;代价是所有运维工作都要自己做——补丁、监控、备份、高可用、容量规划。
适合的场景:有专职运维或平台团队、需要特殊内核或网络配置、有明确的成本优化诉求并愿意自己动手、或正在从 IDC 迁移且短期内无法改造架构。相关的基础概念可参考什么是云服务器。
PaaS:把运维成本换成约束
PaaS 的形态比 IaaS 模糊得多,从"托管的数据库"到"只能推代码的应用引擎"都算。共同点是:你不再拥有服务器,平台保证运行时、扩缩容和健康检查,你通过配置和代码描述期望状态。
- 托管中间件:云数据库、消息队列、Redis。最容易被接受的一类 PaaS,省掉主从、备份、升级这些重复劳动。
- 应用托管平台:推代码即部署,平台负责构建、发布、回滚、日志。约束是不能随意改系统层。
- 容器平台:Kubernetes 及其托管版本。介于 IaaS 与 PaaS 之间,你仍然要理解节点与网络,但调度和编排交给平台。
PaaS 的核心权衡是"用控制力换效率"。当你需要改一个系统参数而平台不提供入口时,这个约束会变得非常具体。选型前先确认三件事:能不能自定义运行时版本、能不能导出数据、出问题时能不能看到底层日志。
SaaS:买的是结果,不是组件
SaaS 直接交付可用的应用,按账号或用量订阅。它的优势是把固定成本变成可变成本、上线周期从月变成天、由厂商承担升级与安全补丁。代价是数据在别人那里、定制空间受限于厂商开放的能力、长期订阅总成本可能超过自建。
判断 SaaS 是否值得,不看单价看"总拥有成本":把自建需要的人力、服务器、备份、合规审计折算进去,多数非核心业务系统用 SaaS 更便宜,核心业务系统则往往需要保留控制权。
成本结构与弹性差异
| 维度 | IaaS | PaaS | SaaS |
|---|---|---|---|
| 计费单位 | 实例规格 × 时长 + 流量 | 实例数 / 调用量 / 存储 | 账号数 / 月活 / 功能档位 |
| 固定成本占比 | 高,需预留容量 | 中,可按需伸缩 | 低,纯订阅 |
| 规模效应 | 用量越大单价越低 | 较平缓 | 按人头线性增长 |
| 闲置浪费 | 高,易出现长期空跑的实例 | 较低 | 低,可随时减席位 |
| 退出成本 | 低,镜像可迁移 | 中,存在平台绑定 | 高,数据导出格式受限 |
一个常被忽略的事实是:PaaS 与 SaaS 的隐性成本主要在"绑定"。迁移时导出的数据、重写的部署脚本、重新培训的团队,都是真实支出。成本优化的系统方法见云计算成本优化实战。
企业选型决策树
- 这项能力是不是公司的核心竞争力?是,倾向 IaaS 或自建,保留控制权;否,倾向 SaaS。
- 有没有专职团队维护它?没有,直接排除需要自己运维的选项。
- 是否有硬性合规或数据落地要求?有,优先私有化部署或受管专属实例。
- 负载波动是否剧烈?剧烈,选能自动伸缩的 PaaS 或按量 IaaS。
- 未来两年是否会大规模改造?会,避免深度绑定单一平台的专有接口。
- 算一遍三年总拥有成本,包含人力与迁移成本,再做最终决策。
实际落地通常是混合的:底层用 IaaS 承载核心系统,中间件用 PaaS 托管,办公协作类业务用 SaaS。三层并存不是妥协,而是把有限的工程能力投到真正差异化的地方。
FaaS 与 BaaS:往更上层再走一步
FaaS(函数即服务)把责任边界推到函数级:你只写一个处理函数,平台按事件触发、按调用计费、自动伸缩到零。适合事件驱动的轻量逻辑,比如图片处理、Webhook 接收、定时任务。限制是冷启动、执行时长上限、以及本地调试体验较差。
BaaS(后端即服务)提供现成的后端能力:用户认证、推送、对象存储、实时数据库。移动端和小程序开发常用它跳过自建后端。两者常被合称 Serverless,本质都是"进一步放弃对运行环境的控制,换取更细粒度的计费与更低的运维投入"。
若打算走向容器化与微服务,建议接着读云原生架构入门与Kubernetes 核心概念,PaaS 的抽象方式与这两者有直接继承关系。
常见问题
云服务器属于 IaaS 还是 PaaS?
属于 IaaS。你拿到的是虚拟机和网络,操作系统、运行时、中间件都要自己装和维护。如果厂商进一步接管了运行环境和扩缩容,比如应用托管或容器平台,那一层才是 PaaS。
中小企业应该从 IaaS 起步还是直接用 PaaS?
没有专职运维的小团队用 PaaS 更快,能省掉大量重复劳动;但核心业务应保留数据导出与迁移通道。有一定规模且负载特征明确的团队,IaaS 加托管中间件的组合通常性价比最好。
SaaS 的数据安全由谁负责?
厂商负责平台安全与基础设施,你负责账号权限、数据分类、共享设置与审计。多数数据泄露源于配置错误而非平台被攻破,例如把内部文档设成公开链接。
PaaS 会不会锁定厂商,以后迁不走?
取决于用了多少专有能力。只用托管数据库、对象存储这类通用能力,迁移成本可控;用了厂商专有的函数框架、专有数据库或深度集成的 CI,迁移会显著变难。签约前先确认数据导出格式与网络出口方案。
延伸阅读
- 什么是云服务器?与物理服务器、VPS 的区别
- 云原生架构入门:微服务、容器与 CI/CD
- Kubernetes 核心概念:Pod、Deployment、Service
- 备份与容灾:3-2-1 原则和一次真正的恢复演练:选 IaaS 还是 PaaS,备份责任边界差别很大。
- Docker 入门:镜像、容器、数据卷与网络一次讲清:PaaS 的底层通常是容器,理解容器才理解抽象边界。
- 云服务器选购指南:CPU、内存、带宽与计费方式怎么选:自建 IaaS 层意味着选型责任全在自己身上。