金丝雀与线性部署
在 AWS 上自动化部署
Dunieski Otano
Amazon Web Services Solutions Architect
一次坏发布,殃及所有用户
支付逻辑变更立刻部署到 100% 流量
线上负载下暴露缺陷;所有结账失败
若用 10% 金丝雀,5 分钟内即可发现
跳过金丝雀的代价:真实损失
什么是金丝雀部署
先将
小部分流量
导向新版本
在
固定等待时间
内监控指标
如健康,
一次切换
剩余流量
常见:
10% 持续 5 分钟
,然后 100%
什么是线性部署
按
等量递增
逐步切流
每步之间等待观察
例如:
每 1 分钟 +10%
,共 10 分钟
比金丝雀更平滑,但整体更久
金丝雀 vs 线性,对比一览
金丝雀:
一小段,然后全量
线性:
多次小步推进
金丝雀发现更快;线性更平稳递增
触发
回滚
时,两者都会暂停
Lambda 的 CodeDeploy 配置
CodeDeployDefault.LambdaCanary10Percent5Minutes
:10% 持续 5 分钟,然后 100%
CodeDeployDefault.LambdaLinear10PercentEvery1Minute
:每分钟 +10%
CodeDeployDefault.LambdaAllAtOnce
:立即全量流量
ECS 提供前缀为 ECS 的对应配置
用 CloudWatch 警报自动回滚
将
CloudWatch 警报
关联到部署组
常见警报:
errors、duration、5xx
若警报进入
ALARM
状态,部署停止
CodeDeploy 将
回滚
到上个版本
选择合适的配置
日常低风险修补 →
AllAtOnce
高风险生产变更 →
Canary
需要平滑稳步爬升 →
Linear
始终配
警报
以便自动回滚
让我们一起练习吧!
在 AWS 上自动化部署
Preparing Video For Download...