体育类业务系统有个鲜明的峰谷特征:赛事报名截止前两小时、周末订场高峰、赛季结算日,流量是平日的几倍到十几倍。这些时段绝对不能动系统,但很多团队的升级恰恰被迫安排在深夜或假期,因为业务方只在这些时候才松口。窗口选择错了,再谨慎的升级方案也白搭。
下面按窗口判定、灰度发布、回归验证、回滚预案四块给出可执行的做法,适合写进运维手册当流程用。
一、升级窗口怎么选
先画一张业务峰谷日历,把报名截止、结算日、赛事日、订场高峰逐个标出来,升级窗口必须满足三个条件:不在峰日前后 48 小时内、不在周末白天、不在版本上线后 7 天的观察期内。经验上,工作日上午 10 点到下午 3 点对多数体育平台是相对低谷,但要先看自家后台数据确认。窗口定下来后写进变更日历,提前一周锁定,业务方没有书面反对即默认通过,避免每次升级临时扯皮。
二、灰度发布:三步走
- 先内后外:内部测试环境验证后,切 5% 生产流量到新版本,观察 2 小时核心指标(错误率、95 分位响应、关键接口成功率);
- 再放量:指标无劣化,依次放到 20%、50%、100%,每档观察不少于 1 小时;
- 可回滚:任何一档指标劣化超过阈值即回滚,回滚操作必须有演练记录,不能只停留在文档上。
灰度比例和观察时长可以按业务调整,但三步的顺序不能乱,直接全量切版本等于拿生产环境当测试环境。
三、回归验证:最小用例集
每次升级前必须跑一遍核心链路回归,用例集不必求全,求的是每次稳定覆盖:用户登录、赛事报名与支付、订单查询与取消、数据上报与看板读取,共 15 至 25 条,自动化覆盖为主、人工抽测为辅。接口兼容性单独列一项,新版本是否改了既有接口的字段与语义,这一条最容易在联调时漏掉,导致下游系统上线后才爆。回归结果留档,作为升级评审的必备材料。
四、回滚预案:一键、可验证
回滚不是口头承诺,要满足四个条件:数据库变更脚本有配套的回滚脚本并提前演练;配置项有版本快照,能一键还原;回滚操作目标时间不超过 15 分钟,超时自动触发备用方案;回滚后有验证清单,确认核心链路恢复才算闭环。我们在煜飞平台里把回滚做成变更单的强制前置项,没有演练记录的变更单提交不了,这条硬约束挡掉过不少冲动上线。
五、给系统与运维团队的三条建议
- 把业务峰谷日历与升级窗口写进变更管理制度,窗口外的变更一律走紧急评审,留痕备查;
- 核心链路回归用例集每季度评审一次,新增业务链路必须同步补用例,避免回归清单越用越空;
- 回滚演练每半年一次,演练结果纳入团队考核,没有演练过的回滚等于没有回滚。