无服务器计算从根本上改变了应用程序架构,它推动开发人员转向事件驱动的、精细的服务和托管云资源。应用程序不再围绕长时间运行的服务器或容器设计,而是被分解为离散的功能(例如 AWS Lambda),这些功能响应事件(如 HTTP 请求、数据库更改或文件上传)而执行。这迫使人们专注于无状态的、单用途的组件,这些组件可以独立扩展。例如,一个图像处理应用程序可以使用单独的函数来调整图像大小、更新元数据和发送通知——每个函数都由上传到云存储触发。这种模块化简化了扩展,但需要仔细协调工作流程。
无服务器架构还减少了对基础设施的直接控制,这会影响开发人员处理性能和状态的方式。由于函数是临时的并且会自动扩展,因此应用程序必须使用数据库(例如,DynamoDB)、对象存储(例如,S3)或缓存服务(例如,Redis)来外部化状态。例如,用户身份验证流程可能涉及 Lambda 函数验证凭据、将会话数据存储在托管数据库中,并依赖 API Gateway 来管理 HTTP 连接。“冷启动”(初始化空闲函数时的延迟)成为一个关键的设计考虑因素,通常通过优化函数运行时或使用预配置并发来解决。与云原生服务(如 Step Functions 用于工作流程)的紧密集成对于协调函数而无需构建自定义逻辑至关重要。
在无服务器设计中,运营实践发生了重大变化。调试分布式、事件触发的函数需要集中式日志记录(例如,CloudWatch Logs)和分布式跟踪工具(例如,AWS X-Ray)。成本模型从为预留服务器容量付费转变为按调用次数付费,这激励了具有最短执行时间和内存使用的高效代码。例如,高流量 API 可以通过将计算密集型任务(例如,PDF 生成)拆分为具有更短执行时间的单独函数来节省成本。然而,管理数十个函数的权限、版本控制和依赖项会引入复杂性,通常需要像 AWS SAM 或 Terraform 这样的基础设施即代码工具来保持一致性。