lambda:函数计算
api gateway:API 网关
aws waf:web 应用防火墙
cloudfront:cdn
s3:对象存储
cloudwatch:监控、日志
codepipeline:CI CD
# 应用场景
SSR
API(restful、graphql)
前端的错误性能监控日志系统:sqs、kafka、elk
图片压缩、格式转换,可以参考这篇博客:Image Optimization using Amazon CloudFront and AWS Lambda (opens new window) 使用自定义源调整图像大小的示例代码 Lambda@Edge,使用 AWS CDK 进行部署:lambda-edge-resizing-images-custom-origin (opens new window)
AI gitlab codereview
- webhook -> api gateway -> proxy lambda(将同步改成异步,通过 aws sdk 去调用后面真正的 nestjs lambda) -> nestjs lambda -> aws bedrock(aws 提供的 ai 服务)
# 优点
开发者无需关心服务器运维,比如 nodejs 版本、操作系统环境、arm/x86 架构等问题,只需关心代码逻辑
按量计费:调用次数 x 计算时间 x 内存大小,前一百万次免费
高性能、高并发(自动扩容)、高可用(多可用区域部署)、高安全(权限控制、role、vpc、安全组)
快速迭代
生态健全:日志监控开箱即用、版本控制、CI CD、数据库、静态资源存储、框架支持(express、koa、nestjs、nextjs)
边缘部署(也是面试回答性能优化的一个点)
# 缺点
冷启动:第一次调用时,需要加载运行环境,会有一定的延迟。控制得好 nodejs 800ms 以内
限制:最大执行时间 15 分钟(做不了 websocket 服务,因为 websocket 需要一直连接着),内存 128MB-10GB
强关联云厂商
# 如何创建 AWS 云上资源
sam(底层就是 cloudformation,做了一层封装)
cloudformation:配置类型
cdk:可以用多种编程语言 ts、python、java、c# 等编写
terraform 跨云
sst(刚接触 serverless 想要快速落地推荐这个)
- v3:terraform
- v2:aws cdk
# 如何部署
aws cli 配置
- 配置 AccessKeyId SecretAccessKey (opens new window)
- npx sst init
- npx sst deploy --stage production
# 云服务厂商
aws:lambda、step function(所有语言都支持,自定义容器 docker),lambda@edge(只支持 python、js)
cloudflare worker(只支持 js)
google cloud function
阿里云:FC、SAE(自定义容器)、EdgeRoutine(边缘部署)
腾讯云
华为云
# 如何解决 15 分钟限制
分批处理 step function
异步调用
# 解决 nodejs 高并发问题的标准答案
使用 serverless
# 学习资源
超级沟通者
非暴力沟通
理想国、君主论
← Serverless 知识 微前端知识 →