部署策略:版本、别名与流量切换
使用 AWS Lambda 构建无服务器应用
Claudio Canales
Senior DevOps Engineer
版本是不变快照
- 把版本当作发布制品。
- 每个版本包含代码与配置。
- 一旦发布就不再变化。
- 随时回到已知稳定状态。
别名是稳定指针
- 稳定的指针。
- 调用别名而非版本。
- 更新指向而不改调用方。
Dev 与 Prod 别名
- 适合环境隔离。
- 频繁移动
dev。
- 通过移动别名升到
prod。
用加权别名切换流量
- 安全地在生产中测试。
- 大部分流量仍在当前版本。
- 少量流量给候选版本。
金丝雀步骤 1:90/10
- 90% 留在当前版本。
- 10% 在真实负载下测候选。
- 关注错误与延迟。
金丝雀步骤 2:50/50
- 若 10% 表现良好,继续加权。
- 50% 当前,50% 候选。
- 50/50 能快速暴露问题。
- 持续监控很关键。
金丝雀步骤 3:100% 新
- 将全部流量路由到新版本。
- 旧版本仍保留。
- 回滚很简单。
蓝/绿心智模型
- 蓝 = 当前稳定版本。
- 绿 = 新的候选版本。
- 通过移动别名切换。
- 加权路由让切换渐进。
回滚 = 把别名移回去
- 无需重新部署。
- 将别名移回最后的稳定版本。
- 秒级恢复,而非小时。
- 不可变版本配合稳定别名。
切换期间的监控
- 错误与超时。
- 时长与尾延迟。
- 若限流,关注节流命中。
- 及时暂停或回滚。
常见陷阱:把 $LATEST 当生产
- 依赖 $LATEST 会失去可预期性。
- 版本与别名清楚指明在运行什么。
- 回滚更安全。
安全部署清单
- 发布一个版本。
- 用别名逐步切流。
- 监控结果。
- 各步都准备好回滚。
要点回顾
- 版本带来可预期性。
- 别名带来稳定性。
- 加权路由提升安全性。
- 回滚 = 移动别名。
让我们来练习!
使用 AWS Lambda 构建无服务器应用
Preparing Video For Download...