Serverless应用架构开发与生产部署 - 第1节

1.1 什么是 Serverless

Serverless(无服务器计算)是一种云原生执行模型,它允许开发者专注于编写业务代码,而无需管理底层服务器基础设施。云服务提供商负责动态分配、伸缩和管理计算资源,开发者只需为实际消耗的计算资源付费。

Serverless 并非真的没有服务器,而是服务器对开发者完全透明。核心特征是:事件驱动、自动弹性伸缩、按需付费。

关键误解澄清: Serverless 不是“没有服务器”,而是“你不需要关心服务器”。服务器依然存在,但由云平台全权管理。

Serverless 的核心组件

  • 函数即服务(FaaS): 以函数为粒度部署代码,事件触发执行,如 AWS Lambda、阿里云函数计算。
  • 后端即服务(BaaS): 托管的后端服务,如数据库、认证、存储、消息队列,无需自建服务端。
  • 事件源: 触发函数执行的事件生产者,如 HTTP 请求、对象存储上传、定时任务、消息队列消息。
Serverless 核心组件关系图 事件源 HTTP / 存储 / 定时 / 消息 FaaS 函数 业务逻辑执行单元 BaaS 服务 数据库 / 认证 / 存储 核心工作流: 1. 事件源产生事件(如用户上传图片到 OSS) 2. 事件自动触发 FaaS 函数执行 3. 函数调用 BaaS 服务完成业务(如图片压缩、写入数据库) 4. 函数执行完毕自动销毁,按实际执行时间计费

1.2 Serverless 的核心价值

Serverless 架构带来的核心价值体现在以下四个维度:

价值维度 传统架构痛点 Serverless 优势
运维成本 需专职运维团队管理服务器、补丁、监控 零基础设施运维,平台自动处理扩缩容、故障恢复
弹性伸缩 需预估峰值容量,扩容慢,易造成资源浪费 毫秒级自动伸缩,从 0 到数千并发,无需预置资源
成本模型 按固定资源包年包月付费,闲置资源也需付费 按实际执行次数和时长付费,无请求时零成本
开发效率 需处理服务器配置、中间件集成、部署流水线 聚焦业务代码,快速迭代,缩短上市时间
典型场景: 图片处理、Webhook 接收、定时任务、实时文件处理、IoT 数据接入、API 后端。这些场景天然具有事件驱动、短时执行、流量波动大的特点,最适合 Serverless。

1.3 与传统架构的对比

为了更直观地理解 Serverless 的定位,下面从多个维度对比传统单体架构、微服务架构和 Serverless 架构:

对比维度 传统单体架构 微服务架构 Serverless 架构
部署单元 整个应用 独立服务 单个函数
伸缩粒度 整个应用 按服务 按函数(毫秒级)
状态管理 本地内存/数据库 分布式数据库/缓存 外部 BaaS(无状态函数)
启动时间 分钟级 秒级 毫秒级(冷启动除外)
运维复杂度 高 中 低
适用场景 稳定、低频变更的业务 复杂业务、大型团队 事件驱动、短任务、弹性需求高
三种架构模式对比 单体架构 UI + 业务逻辑 + 数据访问 数据库 部署慢 · 伸缩粗 · 运维重 微服务架构 服务A 服务B 服务C 分布式基础设施 独立部署 · 按服务伸缩 · 运维中 Serverless 架构 fn1 fn2 fn3 BaaS 服务 按函数伸缩 · 零运维 · 按需付费 架构演进趋势: 单体 → 微服务 → Serverless,核心变化是关注点从“管理服务器”转向“编写业务逻辑”。 Serverless 并非银弹,但对于事件驱动、短任务、弹性需求高的场景,它是当前最优解。
注意: Serverless 不适合长时间运行的任务(如超过 15 分钟)、有状态应用、对冷启动延迟敏感的场景。选择架构时需结合业务特性综合评估。