每月停机时间少于四分钟:AWS如何部署代码

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

亚马逊网络服务(AWS)承诺99.9%的正常运行时间,若未达标将提供服务信用。AWS通过自动化回滚、渐进式发布和慢速发布等策略,确保快速响应和系统稳定。Graphite团队借鉴这些原则,提升部署效率和安全性。

🔎

延伸解读

自动化回滚:从人工救火到系统自愈

AWS的部署管道能在告警触发后自动回滚,无需等待工程师介入。这依赖于对服务指标(如错误率、延迟、CPU)及上下游依赖的持续监控。一旦指标异常,管道立即停止发布并回滚,同时通知值班人员。这种自动化不仅缩短了故障时间,还减少了人为操作失误的风险。对于团队而言,实现类似机制需要先建立高信噪比的健康指标,并定义清晰的回滚触发条件。

渐进式发布:用隔离单元控制爆炸半径

AWS采用从单箱到可用区再到区域的渐进式发布策略。单箱阶段仅部署到单个虚拟机或容器,用于验证兼容性和基本健康;随后按波次逐步扩大范围,每波之间设置等待期(烘焙)。这种设计确保即使新版本有问题,影响也仅限于一小部分容量,避免全系统故障。同时,多版本共存也考验着服务的向后兼容性。团队可借鉴此思路,在发布初期限制影响范围,逐步建立信心。

慢速发布与烘焙:用时间换取稳定性

AWS在每波发布之间设置烘焙期,等待足够多的用户流量来暴露潜在回归。烘焙期要求达到特定请求量(如至少100次API调用),以确保新代码被充分执行。典型管道在单箱阶段后等待至少1小时,首个区域波次后等待至少12小时,后续波次等待2-4小时。整体部署可能耗时4-5个工作日。这种策略以时间换稳定,适合对可用性要求极高的服务,但可能不适合追求快速迭代的团队。

部署阻断与多管道:安全与速度的平衡

AWS的管道可在活跃事件或特定时间窗口(如非核心工作时间)阻止部署,避免在系统不稳定时引入新变更。此外,代码、功能标志和配置变更各有独立管道,既能自动检测和回滚问题,又能避免相互阻塞。团队可根据自身情况定制阻断策略:有的选择人员充足时发布以便快速响应,有的选择低流量时段发布。这种灵活性有助于在安全与速度之间找到平衡。

❓

Q&A

AWS的正常运行时间承诺是什么?

AWS承诺99.9%的正常运行时间,若未达标将提供服务信用。

AWS如何确保快速响应和系统稳定?

AWS通过自动化回滚、渐进式发布和慢速发布等策略确保快速响应和系统稳定。

什么是自动化回滚,它的作用是什么?

自动化回滚是AWS部署管道的核心功能,能够在出现问题时自动撤回更改,确保快速恢复。

渐进式发布策略是如何降低风险的?

渐进式发布策略通过逐步扩大部署范围,降低系统整体风险,确保服务稳定性。

慢速发布策略的目的是什么?

慢速发布策略在每个发布阶段之间设置等待时间,以捕捉用户流量中出现的回归问题。

Graphite团队如何借鉴AWS的部署原则?

Graphite团队借鉴AWS的自动化回滚原则,提高了部署效率和安全性。

🏷️

标签

➡️

继续阅读