改版上线那天,最怕的是全站切换到新版本后发现一个致命问题。灰度发布的核心思路很简单:先让一小部分人用新版本,确认没问题再逐步扩大。
几种实现方式
按技术条件选择:
- 按 IP 或地区切:先放某个地区的流量,最简单
- 按比例切:随机 10%、30%、50% 逐步放大,最常用
- 按用户特征切:新访客用新版,老访客暂时用旧版
- 按栏目切:先上一个栏目,其余保留旧版
- 内部先行:先只让公司 IP 访问新版,相当于内测
中小企业站最实用的是后两种:按栏目切和内部先行,不需要复杂的负载均衡配置。
切分的技术前提
要能灰度,需要满足:
- 新旧版本能同时运行:要么两套目录,要么用反向代理分发
- 会话和数据要兼容:用户在两个版本间跳来跳去不能出错
- 能快速调整比例:改个配置就能切换,不用重新部署
- 能一键全切或全退
如果技术条件不允许做精细灰度,至少做到内部先行加低峰切换,也比直接全量上要好。
按栏目切的具体做法
这是最容易落地的方式:
- 第一期:首页和新产品页上线,其余保留旧版
- 观察三到七天:看数据、收集反馈
- 第二期:案例、方案、关于我们上线
- 第三期:资讯、帮助中心等收尾
注意新旧共存时的体验统一:配色、导航、页脚要保持一致,别让用户感觉进了两个网站。
灰度期间看什么
每天检查这些指标:
- 错误率:500 错误、JS 报错,有任何异常立即排查
- 表单提交量:突然为零说明功能坏了
- 页面加载时间:新版是否明显变慢
- 跳出率与停留时长:和旧版对比
- 用户反馈:客服收到的咨询有没有异常
其中表单提交量是最灵敏的报警器。页面再好看,表单坏了没人知道,只能靠这个数字。
什么时候该回退
设定明确的红线,触及就退:
- 核心功能不可用:表单、搜索、后台任一失效
- 错误率超过 1%
- 转化率下降超过 30% 且持续两天
- 出现数据丢失或安全问题:这种情况立即回退,不用观察
灰度要多久
参考节奏:
- 内部验证:一到两天
- 小流量观察:三到五天
- 扩大到一半:两到三天
- 全量:确认无问题后切换
总共一到两周比较合适。太短发现不了问题,太长则要同时维护两套,成本上升。
别忘了清理
全量切换后,旧版本的访问入口要关掉,旧目录保留一份备份即可。同时把灰度期间的临时配置清理干净,避免以后有人误改。
灰度的意义不是消灭风险,而是把大风险拆成几次小风险,每一次都有机会喊停。
—— 一位做过多次系统切换的运维负责人