服务端上线 CheckList 模板
上线 CheckList 是「检查清单」,而不是 To Do List。CheckList 必须尽可能保证能成功顺利运行,因此需要:
原则
- 上线 CheckList 必须至少在线下环境按照清单执行一遍,需要确保 CheckList 在线上 99.9% 能够执行成功。
- 与大多数文档类似,CheckList 也遵循总分总原则,文档尽量清晰易懂,对于内容特别多的部分可以通过附件来添加。
- 每一项操作,必须责任到具体的操作人,当操作人执行完成后,CheckList 负责人必须进行 Check 是否成功执行,只有成功执行了,方可进行下一步。
- CheckList 需要开发人员至少在开发的中后期阶段,进行预想上线后的操作步骤,并进行注意事项记录。
- 由于当开始应用发布后,可能会因为一些前置操作没做导致服务不可用,因此,需要提前准备好,哪些操作可以进行前置操作。
- 应用发布完成后,必须对所开发的功能进行验证(不存在说线上不可验证的功能,可以用一些冗余代码来进行尽可能的验证)。
- CheckList 的所有项要遵循从上到下的时间线依次操作,即依次按照编写的文档操作,不可跳过步骤。
- CheckList 需要给出系统可能的风险点,倒逼开发者进行稳定性思考。
- 每次的发布一定要认真想好是否可以回滚,如果不能回滚,出问题了,该如何操作。
这里给出一个服务端上线 CheckList 的样例模板,大家可以根据需要适当增加、修改以及删除。
# Demo V1.0 上线 CheckList
项目&版本 | 团队成员 | CheckList 主导人 | 发布时间 | 预计发布时长 | 影响范围 | 创建时间 |
---|---|---|---|---|---|---|
Demo v1.0 | 李四 、小明 | 李四 | 2023-01-29 10:00 | 10min | 发布期间会有部分用户超时不可用 | 2023-01-29 |
# 1. 上线功能点及涉及服务
# 1.1 新功能点及改动点
本次版本发布有新功能以及旧版功能的优化,具体有: 小明
- 增加用户画像模块;
- 修改用户权限配置的bug;
- 删除评价中冗余代码;
# 1.2 涉及服务
本次版本发布涉及较多服务,具体有: 李四
- Demo A端服务
admin-demo
- Demo 前端服务
demo-ui
- Demo 对外服务
demo-service
- Demo 监控服务
demo-apm
注意:服务的发布顺序依次从上到下,不可跳步。
# 1.3 注意事项
# 2. 上线前预操作 发布前半天
# 2.1 配置相关
1) Apollo 配置 @张三
增加如下配置:
demo.search.switch=false
demo.search.test=good
删除如下配置:
demo.search.t=55
check:在测试环境配置完成后,通过 actuator /properties 验证,正式环境配置后,人工校验,当项目发布成功后,需再次通过 actuator /properties 校验。
@李四
2)application.properties 配置 @张三
增加如下配置:
demo.spring.actuator=health
check:在测试环境配置完成后,通过 actuator /properties 验证,正式环境配置后,人工校验,当项目发布成功后,需再次通过 actuator /properties 校验。
@李四
# 2.2 资源申请相关
1)域名申请 @王五
运维域名管理平台,申请域名:http://api.demo.com
check: ping 该域名 http://api.demo.com,域名解析可能需要一到两天,因此,需要提前一到两天申请。
@李四
2) 线上机器申请 @王五
运维机器管理平台,申请 3 台 4 C 16 G 的机器。
check:运维管理平台上查看机器是否存在。
@李四
# 2.3 数据库操作相关
1)MySQL 操作 @小七
详细见:附件一。
check:通过 DBA 平台,查看 MySQL 表 t_test 是否成功建立,表 t_middle 的字段 name 从 char(10) 是否改为 varchar(20)。
@李四
2)ElasticSearch 操作 @小花
详细见:附件二
check:在 Kibana 平台,执行 GET demo/_mapping 查看索引的字段是否成功创建。
@李四
3)Redis 操作 @小花
无
# 3. 正式发布流程
# 3.1 应用程序发布
- 步骤一:发布
admin-demo
@李四
check:查看 admin-demo 的日志是否报错,执行接口/demo/user/1222 接口,是否成功返回 success,否则检查 MySQL 的数据是操作有问题。
@李四
- 步骤二:发布
demo-ui
@李四
check:利用管理员账号 admin/admin 查看是否新增用户权限页面、用户画像模块,并添加一个用例,成功添加后,执行MySQL 语句,Delete table test where a = 122.
@李四
- 步骤三:发布
demo-service
@李四
check: 查看项目日志是否有 warn 以及日志,调用接口 Dubbo demo.test.service.api.search,是否返回 success,否则查看代码是否有问题。
- 步骤四:发布
demo-apm
@李四
check:查看项目日志,登录 APM 后台,查看是否有指标上报。
# 3.2 网关层配置发布
无
# 4. 应用发布后
在应用发布的过程中,我们已经依次保证单个服务以及自上而下的服务的基本流程的正确,但是仍然不能保证所有服务的功能正常,因此需要做进一步的功能验证。
# 4.1 功能验证(重要)
功能验证是应用发布后至关重要的一步,严禁发布后的功能没有验证。
验证过程需要让项目组的人员一起参与,包括:测试、前端、后端、产品,当功能验证都通过后,方可交付给一线业务。
1)本次功能验证
- 新增用户权限页面;
- 编辑用户权限页面;
- 删除用户权限页面
2)重要功能回归
- 用户统计模块的功能点是否正常。
# 4.2 日志监控告警
1)治理日志
2)治理监控指标
3)添加告警
# 5. 风险点
无
# 6. 回滚操作
无需回滚,本次为首次功能上线。
# 7. 其他相关注意事项
无
# 8. 附件
- 附件1:v1.0.0 MySQL
- 附件2:v1.0.0 Elasticsearch