部署与发布
部署是把制品安装到环境,发布是让用户开始使用新版本。二者分离后,可以先完成技术部署,再通过流量或功能开关逐步发布。
最小生产流程
- 选择已验证的不可变制品和配置版本。
- 执行部署,等待启动和就绪检查通过。
- 执行烟雾测试并观察核心 SLI。
- 逐步扩大流量或开启功能。
- 达到失败阈值时停止推广并回滚。
发布策略
| 策略 | 特点 | 适用场景 |
|---|---|---|
| Recreate | 停旧启新,有中断 | 可停机的简单系统 |
| Rolling | 分批替换实例 | 常规无状态服务 |
| Blue/Green | 两套完整环境切换 | 需要快速整体回退 |
| Canary | 新版本逐步接收流量 | 能按指标自动判断风险 |
前端静态资源应使用带内容哈希的文件名,先上传新资源再切换 HTML,旧资源保留至少一个回滚周期。不要用 CDN 全量清缓存代替版本化。
发布验证
- 健康检查:进程是否存活、是否可以接收流量。
- 烟雾测试:登录、查询、下单等关键路径是否可用。
- 技术指标:错误率、延迟、饱和度和依赖健康度。
- 用户指标:页面加载、关键交互和业务成功率。
回滚条件
发布前定义错误率、延迟、业务指标和观察窗口。超过阈值时自动暂停流量扩大;确认是版本问题后重新部署上一已验证制品。数据库迁移必须兼容新旧版本,避免应用回滚后无法读取数据。
功能开关
功能开关适合将代码部署和业务发布分离,但需要所有者、过期时间、审计和清理机制。它不能替代权限控制。