YYMuse
4. 上线期 · WorkKit

灰度发布与回滚预案

PM 架构

设计连续的灰度发布流程和可执行的回滚预案

触发场景

构建期完成,评测集通过准入线。上线不是开关动作,而是从内部测试到小范围用户到全量发布的连续灰度过程。

输入清单

  • 回归评测通过报告
  • 合规终审清单
  • 系统架构文档(含降级策略)
  • 监控仪表盘已就绪
提示词 基础版 / 进阶版
你是一位 AI 产品发布工程师。请帮我设计灰度发布方案。

产品信息:
- 功能:{{FEATURE}}
- 目标用户量:{{USER_COUNT}}
- 可接受的故障时间:{{MTTR}}

请设计:
1. **灰度阶段**:
   - Stage 1:内部测试(建议 5-10% 流量,持续 3-5 个工作日)
   - Stage 2:小范围用户(建议 10-30% 流量,持续 5-10 个工作日)
   - Stage 3:扩大范围(建议 50% 流量,持续 5 个工作日)
   - Stage 4:全量发布
2. **回滚触发条件**:
   - 准确率低于阈值
   - 延迟超过阈值
   - 用户投诉超过阈值
   - 安全事件
3. **回滚流程**:
   - 自动回滚 vs 手动回滚
   - 回滚到哪个版本
   - 回滚后的用户通知
4. **观察指标**:每个灰度阶段需要监控的关键指标

产出记录

将 AI 返回的结果填入下方模板,形成可追踪的项目文档。

灰度发布与回滚预案记录

功能名称 目标用户量

灰度阶段计划

阶段 流量比例 持续时间 通过条件 状态
内部测试 ___% ___ 天 ___ 待执行
小范围用户 ___% ___ 天 ___ 待执行
扩大范围 ___% ___ 天 ___ 待执行
全量发布 100% 待执行

回滚触发条件

指标 回滚阈值 检测方式
准确率 < ___% 自动
延迟 P95 > ___ms 自动
用户投诉 > ___ 次/小时 半自动
安全事件 任意 手动

回滚流程

  • 回滚方式:自动 / 手动
  • 回滚目标版本:___
  • 回滚执行人:___
  • 回滚后用户通知:___

制定人 / 日期:___ / ___

灰度发布流程

将 AI 返回的 Mermaid 流程图粘贴在下方。

___
查看填写示例
示例场景

【示例】灰度发布与回滚预案——智能客服意图识别

功能名称:AI 意图识别路由 目标用户量:日均 5000 来电用户

灰度阶段计划

阶段 流量比例 持续时间 通过条件 状态
内部测试 5% 5 天 准确率 ≥ 85%,零 P0 故障 待执行
小范围用户 5% 7 天 准确率 ≥ 85%,用户投诉 ≤ 5 条 待执行
扩大范围 20% 5 天 准确率 ≥ 83%,转人工率 ≤ 25% 待执行
全量发布 100% 连续 3 天无异常 待执行

回滚触发条件

指标 回滚阈值 检测方式
准确率 < 80% 自动(每日采样评测)
延迟 P95 > 2s 自动(APM)
用户投诉 > 10 次/小时 半自动(客服主管上报)
安全事件 任意 手动

回滚流程

  • 回滚方式:自动(准确率/延迟)+ 手动(安全事件)
  • 回滚目标版本:v1.0.0(全人工模式)
  • 回滚执行人:值班运维
  • 回滚后用户通知:通话提示"系统升级中,转人工服务"

制定人 / 日期:张明 / 2026-05-06

灰度发布流程图

flowchart TD A([开始:智能客服意图识别上线]) --> B[内部测试 5% 流量] B --> C{准确率 ≥ 85%?\n零 P0 故障?} C -- 是 --> D[小范围用户 5% 流量] C -- 否 --> R1[⏪ 自动回滚至 v1.0.0] R1 --> END1([结束:回滚完成]) D --> E{准确率 ≥ 85%?\n投诉 ≤ 5 条?} E -- 是 --> F[扩大范围 20% 流量] E -- 否 --> R2[⏪ 自动回滚至 v1.0.0] R2 --> END2([结束:回滚完成]) F --> G{准确率 ≥ 83%?\n转人工率 ≤ 25%?} G -- 是 --> H[✅ 全量发布 100%] G -- 否 --> R3[⏪ 手动回滚至 v1.0.0] R3 --> END3([结束:回滚完成]) H --> END4([结束:发布成功])

自检 Checklist

  • 是否定义了至少三个灰度阶段?
  • 回滚触发条件是否可量化、可自动检测?
  • 回滚流程是否可在 5 分钟内执行?
  • 是否有用户通知预案?

衍生动作

  • 方案完成:进入合规终审清单
  • 回滚依赖人工:考虑添加自动化回滚脚本

作者 手记

灰度发布的关键是"明确每个阶段的通过条件"。很多团队的灰度就是"放一部分流量看看",但"看看"不等于"有标准地看"。建议把每个阶段的通过条件写得像评测集一样具体。

← 返回 上线期