一、核心概念

云计算三层服务模型:从底层基础设施到上层应用的分层抽象。

┌─────────────────────────────────────┐
│          SaaS (软件即服务)           │  ← 用户直接使用
│      (Gmail, Salesforce, 钉钉)      │
├─────────────────────────────────────┤
│          PaaS (平台即服务)           │  ← 开发者部署应用
│   (阿里云 EDAS, AWS Elastic Beanstalk)│
├─────────────────────────────────────┤
│         IaaS (基础设施即服务)         │  ← 运维管理虚拟机
│      (阿里云 ECS, AWS EC2)          │
└─────────────────────────────────────┘
           底层物理资源

二、详细对比

1. IaaS (Infrastructure as a Service)

定义

提供虚拟化的计算、存储、网络资源,用户自行管理操作系统及以上层级。

职责分工

层级 云厂商负责 用户负责
应用
中间件
操作系统 ✅ 安装配置
虚拟化
服务器/存储/网络

典型产品

厂商 产品 说明
AWS EC2 + S3 + VPC 计算 + 存储 + 网络
阿里云 ECS + OSS + VPC 同上
Azure Virtual Machines 虚拟机

使用示例

# 阿里云创建 ECS 实例
aliyun ecs CreateInstance \
  --InstanceType ecs.c6.large \
  --ImageId centos_7_9_x64 \
  --VSwitchId vsw-xxxxx

# 用户需要自行
ssh root@47.100.x.x
yum install -y docker
docker run -d nginx

适用场景

  • ✅ 完全控制基础设施
  • ✅ 自定义网络拓扑
  • ✅ 传统应用迁移上云

2. PaaS (Platform as a Service)

定义

提供应用运行平台,开发者只需上传代码,平台自动处理部署、扩容、监控。

职责分工

层级 云厂商负责 用户负责
应用 ✅ 业务代码
中间件/运行时 ✅ JDK、Tomcat
操作系统
虚拟化/硬件

典型产品

厂商 产品 说明
阿里云 EDAS、SAE 应用托管(支持 Spring Cloud)
AWS Elastic Beanstalk 自动部署扩容
Heroku Dyno 推送代码自动部署
Google App Engine 无服务器应用平台

使用示例

# Heroku 部署 Spring Boot 应用
git add .
git commit -m "deploy"
git push heroku main

# 平台自动:
# 1. 检测 pom.xml 识别为 Java 应用
# 2. 编译打包(mvn clean package)
# 3. 部署到容器并暴露端口
# 4. 提供 HTTPS 域名

适用场景

  • ✅ 快速开发迭代(Startup)
  • ✅ 标准应用(Spring Boot、Node.js)
  • ✅ 不想管理基础设施

3. SaaS (Software as a Service)

定义

直接提供可用的软件服务,用户通过浏览器/客户端使用,无需安装维护。

职责分工

层级 云厂商负责 用户负责
应用 ✅ 全部功能
所有底层
用户 ✅ 配置使用

典型产品

类别 产品 说明
CRM Salesforce 客户关系管理
协作 钉钉、企业微信、Slack 即时通讯
邮件 Gmail、腾讯企业邮 邮箱服务
文档 Google Docs、WPS 云文档 在线文档
财务 用友云、金蝶云 ERP 系统

使用示例

用户操作: 
1. 访问 https://mail.google.com
2. 登录账号
3. 直接收发邮件

无需关心:
- 邮件服务器部署
- 数据库维护
- 软件升级

适用场景

  • ✅ 标准业务需求(CRM、OA)
  • ✅ 快速启用(开箱即用)
  • ✅ 零运维成本

三、三层模型对比

比萨类比(经典)

传统 IT (自己做):
🏠 厨房 + 🍕 原材料 + 👨‍🍳 厨师 + 🍽️ 餐桌

IaaS (外卖):
🏠 厨房 + 🍕 原材料 + 👨‍🍳 厨师
(厂商提供厨房,你自己做)

PaaS (半成品):
🍕 半成品披萨
(厂商提供面团,你加料烘烤)

SaaS (餐厅):
🍕 成品披萨
(直接吃,啥都不管)

控制力 vs 易用性

控制力高 ←──────────────────────→ 易用性高
         IaaS    PaaS    SaaS
         │       │       │
灵活性   ████    ███     █
运维成本 ████    ██      ─
上手速度 █       ███     ████
成本     低       中       高

四、技术实现对比

IaaS 实现

# OpenStack (开源 IaaS 平台)
from novaclient import client

# 创建虚拟机
nova = client.Client(version=2, session=sess)
server = nova.servers.create(
    name="web-server",
    image="ubuntu-20.04",
    flavor="m1.small"
)

PaaS 实现

# Cloud Foundry Manifest
applications:
- name: my-app
  memory: 512M
  instances: 2
  path: target/app.jar
  buildpacks:
  - java_buildpack

SaaS 使用

// Salesforce API 调用
sf.sobject("Account")
  .create({ Name: "Acme Corp" })
  .then(result => console.log(result.id));

五、选型决策

决策树

需要完全控制基础设施?
 ├─ 是 → IaaS (如自建 K8s 集群)
 └─ 否
     ├─ 需要定制应用?
     │   ├─ 是 → PaaS (如托管 Spring Cloud)
     │   └─ 否 → SaaS (如钉钉、Salesforce)

实际案例

场景 推荐方案 理由
电商系统 IaaS + 自建 K8s 高定制化需求
企业官网 PaaS (Serverless) 流量低,按需付费
客服系统 SaaS (Zendesk) 标准化需求
大数据平台 PaaS (阿里云 MaxCompute) 免运维,专注业务

六、混合使用

典型架构

┌──────────────────────────────────┐
│  SaaS: 钉钉(内部协作)           │
├──────────────────────────────────┤
│  PaaS: SAE 部署微服务             │
│  (Spring Cloud Alibaba)          │
├──────────────────────────────────┤
│  IaaS: ECS 运行数据库             │
│  (MySQL/Redis 自建)              │
└──────────────────────────────────┘

原因

  • 数据库用 IaaS:完全控制(性能调优)
  • 应用用 PaaS:托管运维(快速迭代)
  • 办公用 SaaS:开箱即用(降低成本)

七、答题总结

2 分钟框架

1. 定义(30秒)

模型 关键词 类比
IaaS 虚拟机 租厨房
PaaS 托管平台 买半成品
SaaS 在线软件 去餐厅

2. 职责边界(1分钟)

用户管理范围:
IaaS: 操作系统 + 应用
PaaS: 应用代码
SaaS: 配置使用

厂商负责:
IaaS: 虚拟化 + 硬件
PaaS: 运行时 + 虚拟化 + 硬件
SaaS: 全栈

3. 选型建议(30秒)

  • IaaS:传统应用上云、需要完全控制
  • PaaS:标准应用(微服务、容器)、快速迭代
  • SaaS:标准业务(OA、CRM)、零运维

加分点

  • 提及混合使用场景
  • 对比控制力与易用性权衡
  • 实际产品举例(AWS、阿里云)