1. 无服务器架构核心概念与AWS服务全景

无服务器(Serverless)并不是“没有服务器”,而是把服务器的采购、补丁、扩缩容、可用性维护这些工作从应用团队身上移走,交给云平台。开发者只交付代码、配置和事件源,按实际调用次数、运行时长或请求量付费。理解这一点非常关键:无服务器首先是一种责任边界与计费模型的转移,其次才是一组具体服务。

以 AWS Lambda 为例,一个函数在未被调用时不产生计算费用;被调用时,平台在毫秒级拉起执行环境,执行结束后冻结或回收。与之相对,EC2 虚拟机需要你选择实例类型、维护操作系统、处理扩容;容器(ECS/EKS/Fargate)介于两者之间——Fargate 已经免去节点运维,但你仍需管理镜像、任务定义与服务编排。三者的差异可以用一张对比表看清:

维度虚拟机 EC2容器 Fargate无服务器 Lambda
运维对象OS、补丁、扩缩容镜像、任务、服务仅函数代码与配置
伸缩粒度实例级,分钟级任务级,秒级请求级,毫秒级
空闲成本持续计费按任务运行计费近乎为零
最长执行无限制无限制15 分钟
典型场景常驻服务、数据库长时任务、Web 服务事件处理、API 后端

无服务器的核心运行模型是事件驱动。事件源产生事件,事件被路由到计算单元,计算单元处理后可能写入存储或再发出新事件。AWS 的服务全景正是围绕这条链路组织的:

  • 计算:Lambda 执行函数;Step Functions 编排多步工作流。
  • 接入:API Gateway 把 HTTP 请求转为 Lambda 事件;ALB 也可作为入口。
  • 存储:S3 存对象,DynamoDB 存键值与文档,二者都按用量计费、自动扩展。
  • 消息与事件:SQS 做队列缓冲,SNS 做发布订阅,EventBridge 做事件总线与规则路由。

这些服务不是孤立堆叠,而是通过事件契约连接。下面这张图展示了本节最值得记住的一条典型数据流:客户端请求经 API Gateway 进入 Lambda,Lambda 读写 DynamoDB,并把异步任务投递到 SQS,由另一个 Lambda 消费;同时 S3 事件与 EventBridge 规则也能触发函数,Step Functions 负责把多个 Lambda 串成有状态工作流。

AWS 无服务器服务全景与事件驱动数据流 客户端 浏览器 / 移动端 API Gateway HTTP → 事件转换 Lambda 业务函数 同步处理 DynamoDB 键值 / 文档存储 按请求计费 SQS 队列 异步缓冲 / 削峰 Lambda 消费者函数 S3 存储桶 对象事件触发 EventBridge 事件总线 / 规则路由 Step Functions 多步工作流编排 SNS 主题 发布 / 订阅广播 图例 同步请求链路 异步消息链路 事件触发链路

从图中可以读出无服务器架构的三个关键特征。第一,入口与计算解耦:API Gateway 只负责协议转换、鉴权与限流,业务逻辑在 Lambda 中,二者可独立演进。第二,同步与异步分离:面向用户的读写在同步链路完成,耗时或易失败的任务投入 SQS 异步处理,避免请求超时。第三,事件源多样化:S3 的对象创建、EventBridge 的自定义事件、SNS 的广播都能触发同一批函数,函数成为可复用的处理单元。

无服务器并非没有代价。Lambda 单次执行最长 15 分钟,冷启动会带来几十到几百毫秒的额外延迟;函数无状态,会话与连接必须外置到 DynamoDB 或 ElastiCache;本地调试与分布式追踪比单体应用更复杂;高频调用下按量计费也可能超过预留实例的成本。因此选型时要问三个问题:负载是否突发且不可预测?任务能否拆成短时、无状态的处理单元?团队是否愿意用运维复杂度换取弹性与低空闲成本?

判断一个场景是否适合无服务器,可以先看它的“空闲比例”。如果服务每天只有几小时高峰、其余时间几乎无请求,无服务器的成本优势最明显;如果是持续高负载的常驻服务,容器或预留实例往往更经济。

把上述服务串起来,一个最小可用的无服务器应用通常长这样:API Gateway 暴露 POST /orders,Lambda 校验参数后写入 DynamoDB 的 Orders 表,同时向 SQS 发送一条消息;另一个 Lambda 消费该消息完成库存扣减与通知,失败时由 SQS 的死信队列兜底。若流程涉及多个步骤与人工审批,则用 Step Functions 定义状态机,把每个 Lambda 作为状态节点,天然获得重试、超时与执行历史。这套组合覆盖了接入、计算、存储、消息与编排五类能力,也是后续章节逐一展开的主线。

无服务器应用的可观测性不能只靠日志。建议从一开始就为 Lambda 配置 X-Ray 追踪、为 API Gateway 开启访问日志、为 SQS 设置死信队列与积压告警,否则异步链路中的失败很难定位。

最后需要建立的心智模型是:无服务器架构由事件源、计算单元、状态存储、编排与可观测性五部分构成,服务之间通过事件契约而非直接调用耦合。掌握这条主线后,再学习 Lambda 的并发模型、DynamoDB 的单表设计或 Step Functions 的状态定义,都能落到具体位置上,而不是零散地记忆服务名称。