跳到主要内容

发布与回滚策略

场景

新版本发布后崩溃率飙升,需要快速灰度和回滚,降低用户影响面。

方案

1. 灰度发布

阶段比例目标
内测0.1%公司员工 + 测试组
小流量1%验证核心功能和崩溃率
灰度10% → 50%逐步放量,观察指标
全量100%各项指标达标后放量

Google Play 支持分阶段发布(Staged Rollout),国内渠道可通过自建灰度系统:

// 客户端灰度判断
fun isInGrayRelease(userId: String, percentage: Int): Boolean {
val bucket = abs(userId.hashCode()) % 100
return bucket < percentage
}

2. 回滚手段

手段时效适用场景
Google Play 暂停发布分钟级发现严重问题,停止新用户获得更新
热修复 Patch小时级修复代码 Bug(国内场景)
Feature Flag 关闭秒级问题出在新功能,远程关闭开关
强制更新到新版天级发修复版本,强制升级

3. 发布检查清单

发版前:
- [ ] 崩溃率 < 0.1%(内部灰度阶段)
- [ ] 核心链路自动化测试通过
- [ ] 启动耗时无劣化
- [ ] 关键 Feature Flag 默认关闭

发版后:
- [ ] 实时监控崩溃率、ANR 率
- [ ] 关注用户反馈渠道
- [ ] 灰度期间每日 Review 数据
- [ ] 异常时 30 分钟内触发回滚
止血优先

线上出问题的第一原则是先止血再查因。先通过 Feature Flag 关闭问题功能或暂停灰度,确保不影响更多用户,再定位根因和修复。


面试答题要点

  1. 灰度发布按比例逐步放量
  2. Feature Flag 是最快的回滚手段(秒级)
  3. 建立发布检查清单,防止低级问题上线
  4. 止血→定位→修复→复盘的应急流程

相关链接