serverless
一种云计算执行模型,允许开发者构建和运行应用程序而无需服务器,减少维护成本。Serverless包含来两种服务模型:
- FaaS (Function as a Service) :如 AWS Lambda、Azure Functions、Google Cloud Functions
- BaaS (Backend as a Service) :如 Firebase、AWS Amplify、Azure App Service
AWS Amplify
AWS Amplify 是一个专为前端开发者设计的完整解决方案,它简化了构建全栈应用程序的过程。Amplify 提供了一套工具和服务,包括:
- CLI 工具:通过命令行快速配置和部署后端资源
- UI 组件库:提供现成的认证、数据展示等组件
- 前端框架集成:与 React、Vue、Angular 等框架无缝集成
- 一站式托管:提供 CI/CD 和静态网站托管
- 开发工具:本地开发环境和模拟器
Amplify 特别适合前端开发者,因为它抽象了复杂的后端配置,让你可以专注于前端开发。
API Gateway
API Gateway 是一个完全托管的服务,用于创建、发布、维护、监控和保护 API。它作为应用程序与后端服务之间的"门户",主要功能包括:
- RESTful API 和 WebSocket API 支持
- 请求/响应转换:可以修改请求和响应的格式
- 流量管理:限流和节流控制
- 授权与认证:集成 AWS Cognito 或自定义授权方
- API 版本控制
- CORS 支持:解决跨域资源共享问题
- 与 Lambda 无缝集成:轻松创建无服务器 API
API Gateway 是构建 Serverless 应用的核心组件,为前端应用提供了统一的 API 入口。
Lambda 基础
Lambda 是 AWS 的函数即服务 (FaaS) 产品,允许你运行代码而无需预置或管理服务器。主要特点:
- 事件驱动:可以响应各种 AWS 服务的事件
- 多语言支持:支持 Node.js、Python、Java、Go 等多种语言
- 自动扩展:根据请求量自动扩展
- 按需付费:只为代码实际运行的时间付费
- 无状态:每次执行都是独立的
- 超时限制:最长执行时间为 15 分钟
- 内存配置:可以配置 128MB 到 10GB 的内存
Lambda 是 Serverless 架构的核心,适合处理短暂的、事件驱动的任务。
S3 (Simple Storage Service)
S3 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。主要特点:
- 无限存储:几乎无限的存储容量
- 静态网站托管:可以直接托管静态网站
- 版本控制:保留文件的多个版本
- 生命周期管理:自动转移或删除对象
- 安全控制:细粒度的访问控制
- 事件通知:当对象被创建或修改时触发事件
- CDN 集成:与 CloudFront 无缝集成
对于前端开发者,S3 常用于存储静态资源、用户上传的文件和前端构建产物。
CloudFormation
CloudFormation 是 AWS 的基础设施即代码 (IaC) 服务,允许你使用模板文件定义和部署 AWS 资源。主要特点:
- 声明式模板:使用 JSON 或 YAML 格式
- 资源管理:创建、更新和删除资源
- 依赖关系处理:自动处理资源之间的依赖
- 变更集:预览更改的影响
- 堆栈管理:将相关资源作为单个单元管理
- 跨区域部署:支持在多个区域部署相同的架构
CloudFormation 帮助你以自动化、可重复的方式管理基础设施。
AWS SAM (Serverless Application Model)
SAM 是 CloudFormation 的扩展,专门简化了 Serverless 应用程序的开发和部署。主要特点:
- 简化语法:比 CloudFormation 更简洁的语法
- 本地测试:支持本地测试 Lambda 函数和 API
- CLI 工具:提供命令行工具简化部署
- 与 AWS CLI 集成
- 内置最佳实践:遵循 AWS 无服务器最佳实践
- 转换为 CloudFormation:在部署时自动转换为 CloudFormation 模板
SAM 是开发 Serverless 应用的推荐工具,特别适合需要精细控制资源配置的场景。
AWS Cognito
Cognito 是 AWS 的用户身份与访问管理服务,提供身份验证、授权和用户管理功能。主要特点:
- 用户池:用户目录,管理注册和登录
- 身份池:提供临时 AWS 凭证,允许访问其他 AWS 服务
- 社交身份提供商集成:支持 Google、Facebook、Amazon 等登录
- 多因素认证:增强安全性
- 自定义 UI:可定制的登录和注册界面
- JWT 令牌:标准的 JSON Web Token
- 与 API Gateway 集成:保护 API 访问
Cognito 为前端应用提供了完整的认证解决方案,无需构建自己的认证系统。
CloudFront
CloudFront 是 AWS 的内容分发网络 (CDN),通过全球边缘位置网络加速内容分发。主要特点:
- 全球分布:在全球多个位置缓存内容
- 低延迟:将内容分发到离用户最近的位置
- 高传输速度:优化的网络路径
- 安全性:提供 HTTPS 和各种安全功能
- 边缘计算:支持在边缘位置运行 Lambda@Edge
- 实时日志:详细的访问日志
- 与 S3 和 API Gateway 集成
CloudFront 可以显著提升全球用户访问你的应用的体验,减少加载时间和提高可靠性。
这些服务共同构成了 AWS Serverless 架构的核心组件,可以帮助你构建高可用、可扩展且成本效益高的应用程序。