需求评审 → 技术方案 → 开发 → 自测 → 提测 → 测试 → 灰度 → 全量 → 监控
↑___________________________________________________________↓
(线上问题反馈,循环迭代)
| 阶段 |
做什么 |
谁参与 |
| 需求评审 |
产品经理讲需求,技术评估可行性 |
PM、开发、测试 |
| 技术方案/评审 |
确定架构、接口、数据库设计 |
开发、架构师 |
| 开发 |
写代码、单元测试 |
开发 |
| 自测 |
开发自己跑通主流程 |
开发 |
| 提测 |
代码合并到测试分支,交给测试 |
开发→测试 |
| 测试(SIT/UAT) |
功能测试、性能测试、回归测试 |
测试/部分用户 |
| 灰度发布 |
小范围真实环境验证 |
运维/开发 + 真实用户 |
| 全量发布 |
所有用户可用 |
运维 |
| 线上监控 |
观察错误率、性能指标、业务数据 |
运维/开发/PM |
与灰度相关的其他术语
| 术语 |
含义 |
与灰度的区别 |
| A/B测试 |
同时跑两个版本,对比数据决定哪个更好 |
灰度侧重风险控制,A/B侧重数据决策;常结合使用 |
| 蓝绿部署 |
准备两套完全一样的环境,瞬间切换流量 |
灰度是渐进切流,蓝绿是瞬间全切 |
| 金丝雀发布(Canary) |
和灰度基本同义,源自"煤矿金丝雀"预警典故 |
国外常用说法 |
| 滚动发布(Rolling) |
逐个替换服务器实例 |
偏运维层面,灰度偏产品/用户层面 |
| 功能开关(Feature Toggle) |
代码里埋开关,随时开启/关闭某个功能 |
灰度是发布策略,开关是技术手段,常配合使用 |
2 测试方面
- 功能测试
- 回归测试
- 兼容测试