Serverless应用架构开发与生产部署 - 第1节
1.1 什么是 Serverless
Serverless(无服务器计算)是一种云原生执行模型,它允许开发者专注于编写业务代码,而无需管理底层服务器基础设施。云服务提供商负责动态分配、伸缩和管理计算资源,开发者只需为实际消耗的计算资源付费。
Serverless 并非真的没有服务器,而是服务器对开发者完全透明。核心特征是:事件驱动、自动弹性伸缩、按需付费。
关键误解澄清: Serverless 不是“没有服务器”,而是“你不需要关心服务器”。服务器依然存在,但由云平台全权管理。
Serverless 的核心组件
- 函数即服务(FaaS): 以函数为粒度部署代码,事件触发执行,如 AWS Lambda、阿里云函数计算。
- 后端即服务(BaaS): 托管的后端服务,如数据库、认证、存储、消息队列,无需自建服务端。
- 事件源: 触发函数执行的事件生产者,如 HTTP 请求、对象存储上传、定时任务、消息队列消息。
1.2 Serverless 的核心价值
Serverless 架构带来的核心价值体现在以下四个维度:
| 价值维度 | 传统架构痛点 | Serverless 优势 |
|---|---|---|
| 运维成本 | 需专职运维团队管理服务器、补丁、监控 | 零基础设施运维,平台自动处理扩缩容、故障恢复 |
| 弹性伸缩 | 需预估峰值容量,扩容慢,易造成资源浪费 | 毫秒级自动伸缩,从 0 到数千并发,无需预置资源 |
| 成本模型 | 按固定资源包年包月付费,闲置资源也需付费 | 按实际执行次数和时长付费,无请求时零成本 |
| 开发效率 | 需处理服务器配置、中间件集成、部署流水线 | 聚焦业务代码,快速迭代,缩短上市时间 |
典型场景: 图片处理、Webhook 接收、定时任务、实时文件处理、IoT 数据接入、API 后端。这些场景天然具有事件驱动、短时执行、流量波动大的特点,最适合 Serverless。
1.3 与传统架构的对比
为了更直观地理解 Serverless 的定位,下面从多个维度对比传统单体架构、微服务架构和 Serverless 架构:
| 对比维度 | 传统单体架构 | 微服务架构 | Serverless 架构 |
|---|---|---|---|
| 部署单元 | 整个应用 | 独立服务 | 单个函数 |
| 伸缩粒度 | 整个应用 | 按服务 | 按函数(毫秒级) |
| 状态管理 | 本地内存/数据库 | 分布式数据库/缓存 | 外部 BaaS(无状态函数) |
| 启动时间 | 分钟级 | 秒级 | 毫秒级(冷启动除外) |
| 运维复杂度 | 高 | 中 | 低 |
| 适用场景 | 稳定、低频变更的业务 | 复杂业务、大型团队 | 事件驱动、短任务、弹性需求高 |
注意: Serverless 不适合长时间运行的任务(如超过 15 分钟)、有状态应用、对冷启动延迟敏感的场景。选择架构时需结合业务特性综合评估。