--- url: /sre/devops/advanced/change-management.md description: 把变更审批绑定到制品、兼容性和恢复证据,提供可填写的发布记录。 --- ## 审批的对象是一次确定的变更 审批不是确认“这个项目可以上线”,而是允许特定版本在特定环境、约束和时间范围内执行。前几课已有镜像门禁、签名验证和流量回退,本课将这些证据组织成发布记录。 不引用没有可核实口径的“70% / 90% 故障来自变更”。团队可以从自身事故记录统计变更关联性,并说明时间窗口、样本量和归因方式。 ## 按风险选择流程 | 类型 | 示例 | 处理方式 | | --- | --- | --- | | 标准变更 | 已验证的低风险静态页面发布 | 预授权条件满足时自动执行并留痕 | | 常规变更 | 应用升级、schema 扩展 | 就绪检查后由指定责任人审批 | | 紧急变更 | 恢复业务所需的热修复 | 明确应急授权与恢复目标,事后补充记录 | 审批强度、记录保留期与事后补办期限按团队制度及适用要求确定,不在课程中虚构统一行业年限。快速通道也应记录谁授权、执行了哪个版本、影响与结果。 ## 一份具体的变更单 以下为 `delivery-demo` 的填写示例。digest、时间和责任人字段必须替换为真实记录,不把示例当作批准凭据。 | 字段 | 示例填写方式 | | --- | --- | | 目标 | prod,将页面 v1 更新到 v2,并新增数据库 description 列 | | 制品 | 复制 CI 的完整镜像 digest;附 CI run、验签和扫描报告 | | 配置 | 配置仓库 PR 与合并 commit;配置项变化清单 | | 数据 | `V2__add_description.sql` 的发布包摘要;staging 迁移记录 | | 兼容性 | 旧查询仍可执行;新增列允许空值;本次不删旧列 | | 窗口与责任 | 实际执行窗口、执行人、审批人、业务验收人 | | 放行条件 | 无待处理门禁失败;容量满足滚动更新;备份可恢复 | | 观察 | 首页面向正确版本;数据库列存在;错误率与延迟在约定阈值内 | | 回退 | 恢复上一镜像与入口;保留兼容的新列;不自动删除数据 | | 结束 | 实际版本、观察结果、失败与处置、记录归档位置 | ## 将人工判断和机器检查分开 机器适合核验 digest、签名、检查状态、字段存在性和发布窗口。兼容性判断、不可逆数据操作及故障影响需要有证据的人审。AI 可以辅助发现遗漏,但不能替代凭据校验和执行授权。 发布就绪检查: * \[ ] 镜像、迁移文件和配置已固定,审批后没有替换。 * \[ ] 旧版与新版对当前 schema 的兼容性已在 staging 验证。 * \[ ] 应用恢复、数据前向修复与备份恢复分别有步骤及耗时记录。 * \[ ] 放量阈值、观察窗口、最小流量和指标缺失处理明确。 * \[ ] 新副本容量、依赖可达性、相关人员通知已确认。 任何制品或配置发生变化都重新评估,不复用旧审批。数据库逆向 SQL 不是通用要求:删除数据、外部副作用等可能无法可靠逆转,应明确恢复方法与业务可接受损失。 ## 审批流程也需要验收 用一个缺少回退版本的实验申请验证它不能放行;用一份审核通过后更换 digest 的申请验证原批准失效;模拟监控无数据,确认流程暂停而非默认成功。 下一课讨论 AI 的辅助审核价值,最后由[结课项目](cloud-native-cicd.md)把机器检查串成实际发布步骤。