1、发布前
代码包版本确认:确认发包的分支,代码是否正确
依赖梳理:定制好各应用的发布以及变更的先后顺序
服务端灰度方案确认:
- 开关控制业务流来控制代码逻辑,常结合机器唯独灰度方案配合使用。比如先发一台机器,然后把新代码逻辑开关开了,然后去验收新代码逻辑的功能
- 按业务白名单进行新功能验收,比如根据 UID 来灰度
- 按机器唯独进行灰度,比如只把代码发到集群的一台机器进行灰度;或者只把配置下发到具体的部署机器
- 按部署池进行灰度,比如让某个部署池的所有机器都部署新代码进行验收
- 按上下游调用方的IP、域名来灰度,比如通过路由策略配置,只有来自某台机器或者某个应用的流量能访问到新代码
- 按流量比例来灰度,比如新代码发布到第一台机器后可以让该机器的流量权重从1%逐步切到100%;再比如重构后的新服务新接口,需要先把小部分流量达到新服务去慢慢观察
变更顺序及确认:
- DB变更,消息频道、队列申请、配置变更、环境
- 消息频道申请及下发
- 配置中心配置
- 环境变量下发
- 搜索引擎搜索配置及查询模板
回滚方案确定:版本域涉及各应用任意一个出现异常回滚后,其它应用的应对措施
监控配置确认:确定新的监控规则是否已配置(风险预测、异常监控)
验收方案的制定:
- 验收人员确定:产品经理、测试、开发
- 验收顺序确定:确定变更,刷数,配置,代码的先后顺序
- 验收环境确定:测试环境、预发布环境、生产环境
- 验收场景及预测结果设计:接口验收、业务链路验收
- 验收方式确定:自动化、人工
- 验收数据 & 脚本准备
风险预案的准备:
多维度监控:
- 日志监控
- 业务错误 & 告警日志
- 框架异常日志:熔断,服务异常日志
- 机器负载监控:
- CPU
- 网络
- 内存
- IO
- GC
- 响应时间:发布应用本身的响应时间、上游响应时间、下游响应时间
- 链路监控:上下游链路的业务异常
- 流量监控:发布应用本身流量、应用本身设计的各组件
- 消息
- 数据:DB、缓存、搜索引擎
及时验收
- 新功能验收:能预发布验的一定要预发布验收
- 旧功能回归:引流对比成功率
风险应对原则:最快回复业务并降低影响
- 确定变更和配置是否全部下发完成
- 跟进验收结果
- 持续关注生产告警
