Appearance
Java 服务发布清单:上线前、中、后到底该检查什么
越是做过几次线上发布,越会发现一个现实问题:
- 很多故障并不是技术不会,而是上线前少看了一眼
先说结论
一套实用的发布清单,不是为了让流程更繁琐,而是为了避免下面这些低级但代价很高的问题:
- 发错环境
- 配错变量
- 数据库没准备好
- 发布后没人看监控
- 出问题时没有回滚路径
一、上线前先确认什么
1. 代码层
- 目标分支是否正确
- 本次变更范围是否明确
- 单元测试和基础构建是否通过
2. 配置层
- 环境变量是否已同步
- 配置中心内容是否正确
- 开关项默认值是否确认
3. 数据层
- 数据库脚本是否已经验证
- 是否涉及大表变更
- 新旧版本是否兼容
4. 发布层
- 镜像或制品版本号是否明确
- 发布目标机器是否正确
- 回滚版本是否可用
二、发布过程中重点看什么
1. 构建日志
2. 部署日志
3. 发布顺序
尤其是多服务场景,要确认配置变更、数据库变更和应用版本的先后关系。
三、发布后要立刻看什么
1. 健康检查
2. 核心监控
重点看:
- 错误率
- RT
- QPS
- JVM 内存
- CPU
3. 业务冒烟
四、什么情况要立刻暂停继续发布
- 健康检查不通过
- 错误率明显上升
- 核心接口不可用
- 数据库连接数激增
五、回滚前要先判断什么
- 问题是不是配置导致
- 当前数据库结构是否还兼容旧版本
- 是否能通过开关快速止损
六、这份清单怎么真正用起来
更推荐:
- 把清单写进发布文档
- 或直接写进仓库
- 每次发布按项勾选
一句话总结
很多线上事故并不是因为不会用工具,而是发布动作缺少最基本的检查闭环。