Module 03 · Serverless Overview
Serverless Reference Architecture and Use Cases无服务器参考架构与用例
Serverless Web 应用参考架构
Web 应用程序参考架构 是一个通用的、事件驱动的后端,它利用一系列 AWS 服务实现其业务逻辑和基础设施。
To Do App 架构组件
该架构以一个简单的 To Do 应用程序为例,该应用程序允许注册用户进行创建(Create)、读取(Read)、更新(Update)和删除(Delete)待办事项。
该 Web 应用程序主要由以下 3 个组件构成 :
| 组件 | 作用 | 使用的 AWS 服务 |
|---|---|---|
| 前端应用(Front-end) | 包含所有静态内容,如 HTML、CSS、JavaScript 和图像。当用户连接到网站时,资源被下载并在浏览器中运行。 | AWS Amplify Console (用于托管静态内容) |
| 后端应用(Back-end) | 实现实际的业务逻辑。 | AWS Lambda (托管业务逻辑) |
| 数据存储 | 存储待办事项数据。 | Amazon DynamoDB(NoSQL 数据库) |
| 用户注册与认证 | 允许用户注册并进行身份验证,以确保用户只能访问自己的待办事项。 | Amazon Cognito User Pools(用户管理) |
| API 访问 | 前端通过 REST API 调用与后端通信。 | Amazon API Gateway(REST API 访问 Lambda) |
架构工作流
- 用户通过浏览器访问托管在 AWS Amplify Console 上的前端。
- 前端需要与后端通信时,会向 API Gateway 发出 REST API 调用。
- API Gateway 将请求路由到相应的 Lambda 函数。
- Lambda 函数执行业务逻辑,并与 DynamoDB 交互来存储或检索数据。
- Cognito User Pools 负责确保用户经过注册和认证,且只能访问自己的数据。
Serverless 的其他用例
Serverless 架构广泛应用于多种场景,尤其擅长处理事件驱动和后处理任务。
1. 事件流 (Event Streaming)
- 定义: 这些应用程序可以在无需预先设置基础设施的情况下编写和部署。
- 触发: 可由发布者/订阅者主题或事件日志触发。
- 优势: 提供弹性、可伸缩的事件管道,无需维护复杂的集群。
- 应用场景:
- 为分析系统提供数据。
- 更新二级数据存储和缓存。
- 为监控系统提供数据流。
2. 后处理 (Post-processing)
- 定义: 在主要操作完成后执行的额外处理。
- 示例:
- 图像和视频处理: 动态调整图像大小或更改视频转码以适应不同的目标设备。
- AI/机器学习: 用于图像识别或人工智能目的,例如检测护照照片上是否有阴影。
3. 多语言应用 (Multi-language)
- 优势: Serverless 应用程序可以是多语言的,这可以防止团队陷入语言锁定(language lock-in)——即团队被迫无限期地使用与其遗留软件相同的语言。
- 资源分配优化: 它使得语言的选择可以真正根据项目需求来决定,而不是取决于现有资源的可用性。
总结
- Web 应用参考架构是一个事件驱动的后端,使用了 AWS Lambda, Amazon API Gateway, Amazon DynamoDB, Amazon Cognito 和 Amazon Amplify Console。
- 该 Web 应用程序由 前端、后端和用户注册/认证这 3 个主要组件组成。
- Serverless Web 应用程序的用例包括事件流、后处理和多语言应用。