ENGINEERING PRACTICES / 工程化要点

工程化要点

把篇章 / 核心原理 / 场景导读里的「工程化要点」去重提炼为平台可执行门禁:发布回滚、可观测、容量、数据、缓存、调用治理、AI 评测、安全供应链等十一组共 88 卡。与方法论「怎么想」互补——本篇回答「不上线会出事的红线是什么」。

门禁是器;怎么想见 核心方法论。以器代术是四种错位之一。

阅读口径:本篇是平台门禁速查卡,每张只写一条可阻断的红线及其验收方式。「写进变更模板与脚手架」「与同组门禁互锁」「评审缺证据即阻断」「抽检最近变更」「关联事故卡做反例」这些共性做法统一在此说明,不在卡内逐条复读;门禁的价值在于能否被流水线自动拦下,而不是条款是否写全。与 K 篇配对读:G 给准入条件,K 给绕过之后的止血动作。

13 组 · 88 卡 | 题目总量(C+E+S+A+D)686 | ID 前缀 G | 三层:洞察 / 原理 / 表达 | 预计阅读时间:202 分钟
门禁主线

每张 G 卡都按「可检查、可回滚、可观测」三问自检:没有证据链不上手段;没有回滚路径不上变更;没有卡点指标不扩量。门禁不是口号,而是变更单里可勾选的字段与上线评审里可追问的证据。

  1. 变更面:代码 / 配置 / 数据 / 模型与提示词一律当发布;灰度比例表、卡点指标、一键回滚三维可退;流量染色与回滚后数据修复写进变更单。
  2. 证据面:Traces/Metrics/Logs 三支柱默认交付;排障标准动作与季度演练;告警可行动并绑定 Runbook;变更单号进 Trace baggage。
  3. 容量面:应用池化与编排配额同一模型;拒绝路径用户可感;多租户配额与依赖拓扑联动;大促清单未勾完不上峰值。
  4. 数据与一致面:DDL/修复可回滚、SQL 审核闭环、影子表观察期;缓存失败可降级、一致窗口进契约、热/大 key 专项。
  5. 调用与智能面:同步超时可加总、熔断半开观察窗、Outbox/CDC 对账;AI 制品版本化、黄金集、工具副作用与成本配额同级卡点。
  6. 安全面:威胁建模先行、密钥双写轮换、SBOM/CVE 时限与豁免到期阻断;生产访问审计可抽检。
与方法论对照
  • 思维口径见核心方法论 M04 / M06 / M10 / M11;本篇写成勾选式门禁与变更单字段。
  • 发布回滚对齐 M06.06 / M11.01;证据链对齐 M14.02;超时/对账/缓存/AI 分别对齐 M11.02 / M11.03 / M07.02 / L03.01。
  • 深度问答与场景篇的工程化导读在此收口;安全细节对照服务端安全 Checkpoint;事故翻车叙事见生产踩坑(K)。
  • 导图页补强十一组互锁与每卡红线/反模式/清单;三层正文与验收话术以本页为准。
怎么用本篇
  • 按下周变更类型选组:发版 G01、排障 G02、大促 G03、改表 G04、缓存 G05、同步/双写 G06、AI G07、安全 G08。
  • 每卡三层:核心洞察(红线与反模式)→ 原理映射(为何 / 与 M 卡同构)→ 工程表达(变更单字段、验收、话术)。
  • 评审追问:证据从哪来?回滚入口与 RTO?卡点指标是什么?失败时用户可感是什么?组内卡通常互锁(如 G01 灰度依赖 G02 指标)。

阅读建议:先扫十一组标题建立索引,再按变更类型深挖三张卡;组内三卡通常互锁(例如 G01 灰度依赖 G02 指标,G05 降级依赖 G03 回源配额)。写变更单时把「工程表达」层的清单直接贴进模板。导图页用于快速回忆红线与反模式,细节以本页三层正文为准。

G01 发布回滚与变更门禁

本组管变更怎么上、怎么退:发布三要素(灰度·卡点·回滚)、配置/框架升级当发布、变更窗口与错误预算冻结、金丝雀自动回滚阈值、变更单强制字段、流量染色一致性,以及回滚后数据修复门禁。没有演练过的回滚路径等于没有回滚;与 M06.06 / M11.01 互为思维与门禁。

G01.01
发布三要素:灰度·卡点·回滚
核心洞察

高风险变更默认按「分批放量 + 指标卡点 + 一键回滚」执行;没有演练过的回滚路径等于没有回滚。发布不是把包推上去,而是把爆炸半径可控地扩大,并在任一卡点失败时退回已知好版本。

三要素缺一,变更单即不合格:灰度比例表(含观察窗口)、卡点指标与阈值(业务成功率优先)、回滚命令/开关(含配置与流量维)。「进程起来了」不是卡点。

反模式:全量一把梭;只回滚镜像留下有毒配置;卡点只看 CPU/存活探针;错误预算已耗尽仍继续发版;回滚从未在预发演练。

灰度档位之间要有明确停留与否决权:观察窗口未结束不得人工「觉得没事就扩」;否决权默认交给卡点指标与错误预算,而不是现场最高职级。

回滚演练必须覆盖「配置+镜像+流量」三联:只演练 kubectl rollout undo 而配置中心仍是有毒版本,演练合格也是假合格。

原理映射

对应 SRE 错误预算与金丝雀:流量或实例分批(如 1%→5%→25%→100%),卡点看错误率、延迟 P99、关键业务成功率与依赖饱和,而不是容器 Ready。

回滚是三维能力——代码/镜像、配置、流量路由——任一维不可退,整体不可退。与方法论 M06.06 回滚优先、M11.01 变更可回滚同构:回滚是默认能力,不是失败丢脸。

爆炸半径由批大小 × 暴露时长决定;观察窗口要覆盖依赖传播与缓存刷新,过短会「绿着绿着炸」。失败时优先退回,再离线分析,避免在灰度上现场改代码。

金丝雀的统计学意义:批太小看不出差异,批太大爆炸半径失控。比例表要同时写清「最小可观测流量」与「最大可接受损失」,并与业务峰值日历对齐。

卡点指标分层:L1 用户可感(成功率/RT)、L2 依赖饱和(池拒绝/下游错误)、L3 资源(CPU/内存)——L3 只能辅助,不能单独放行。

工程表达

变更单模板固定附:灰度比例与每档停留时间、卡点指标/阈值/看板链接、回滚入口与 RTO、最近一次回滚演练记录。卡点未过不得扩量;错误预算耗尽冻结非紧急发布。

  • 表达顺序:先退路与观察窗口,再功能清单。
  • 追问「出了问题怎么办」:当场指出回滚入口、影响面、预计恢复时间。
  • 验收:预发至少完成一次真实回滚演练(含配置回退)。

关联:配置变更见 G01.02;依赖升级见 G01.03;证据链见 G02;治理参数回滚见 G06.02。

变更单「回滚」栏必填:入口链接、执行人、预计 RTO、演练日期、已知限制(例如不可逆 DDL 则写补偿而非回滚)。评审口头说得出但写不出的,视为未准备。

发布值班话术:「当前档位 / 已观察时长 / 卡点红绿 / 下一步扩或退」。禁止用功能演示代替卡点汇报。

G01.02
配置变更当发布
核心洞察

热更新与配置推送必须按发布管控:审批、灰度、快速关停与本地快照兜底。配置中心一次全量推送,杀伤力往往大于发版——「只改个开关」若影响面是全集群,就必须与发版同级门禁。

有毒配置(错误限流、错误开关、错误路由)可以在秒级制造全域事故;因此关停路径的 SLA 应严于发版回滚。

反模式:生产控制台随手改;无快照全量推;客户端无本地兜底导致配置中心抖动拖垮核心链路;动态开关不进变更单。

配置变更的爆炸半径经常大于代码:一次错误的限流阈值或开关默认值可以在秒级打满或打空全集群,而发版至少还有构建与镜像传播延迟。

本地快照不是可选项:配置中心故障或网络分区时,客户端必须能用上次成功快照继续服务,并暴露「使用降级快照」信号。

原理映射

配置中心是关键依赖:客户端要有本地缓存/快照、推送失败降级、订阅隔离;长连接抖动不得阻塞业务线程。

与 M12.06「代理边界与配置契约」一致:配置项的语义、默认值、生效范围、类型校验写进契约,禁止口头约定与隐式魔法值。

灰度配置与灰度流量可独立:先小范围实例吃新配置,再扩面;回滚优先回到上一版本快照,而不是「再推一版修好」。

配置项分级:P0(鉴权/限流/路由/数据源)必须灰度+双人;P1(非关键开关)可快速通道但仍进变更单;禁止无级别的「都是开关」。

推送模型要区分:长轮询/推送失败时的退避、订阅风暴隔离、单 key 与命名空间级回滚。回滚粒度越粗,误伤越大,越要灰度。

工程表达

评审配置项时同步评审:生效范围、灰度策略、回滚/关停开关、是否需要双写观察期、失败时客户端行为。

  • 禁止生产控制台无单变更;动态开关也要变更单号。
  • 上线核对:推送成功率、订阅滞后、关停演练耗时。
  • 高危项(限流、鉴权、路由)默认双人复核。

关联:发布三要素 G01.01;治理参数 G06.02;密钥轮换 G08.02(密钥也是配置的一类)。

上线后 15 分钟核对:推送成功率、订阅滞后分位、客户端快照版本分布、关停开关可用性探测。

控制台权限:生产写权限默认关闭,临时开启有工单与自动回收;审计日志可还原「谁在何时改了何值」。

G01.03
框架与依赖升级门禁
核心洞察

大版本升级(Boot / Spring / JDK / 中间件客户端)用契约测试 + 金丝雀;弃用 API、默认行为变化、序列化/校验差异必须进回归清单。「编译过了」不等于行为兼容。

默认值、自动配置顺序、校验与异常映射常在运行时才爆;Native Image / AOT 还要覆盖反射与资源白名单。

反模式:业务私锁雪花版依赖;CVE 快车道跳过最小回归;只升库不看 Release Note 的 Breaking Changes;无回滚镜像的「一次性升级」。

升级的隐藏成本在「默认行为」:Jackson 命名策略、Bean 校验顺序、HTTP 客户端连接池默认、JDK 字符串与 GC 行为,都可能在流量下才显现。

私锁版本的真正风险是安全补丁跟不上平台 BOM;时间盒退出写进 ADR,到期未退出视为技术债超期。

原理映射

基线 BOM 由平台抬升,业务少私锁版本;Breaking change 用兼容层或双跑,时间盒退出。安全补丁与功能升级分流:CVE 可走快车道,但仍需最小回归与可回滚镜像。

契约测试覆盖 HTTP/消息/DB 行为;关键路径压测验证资源与线程模型变化(虚拟线程、连接池默认值)。

与 M05 Java 生态思维、G08.03 供应链可追溯互补:升级既是行为风险也是供应链风险。

契约测试要覆盖:错误码与异常映射、序列化兼容(含未知字段)、消息 schema、DB 访问层行为。只测 happy path 的升级门禁是穿孔门禁。

Native/AOT:反射、资源、动态代理白名单进回归;缺失时的失败应在预发暴露,而不是生产 ClassNotFound。

工程表达

升级门禁清单:契约测试绿、关键路径压测、金丝雀错误预算、回滚镜像就绪、弃用 API 清单、默认行为 diff。

  • 评审话术:「这次升级打破了哪些默认假设?」答不上来就补测试。
  • 私锁版本须说明退出计划与时间盒。
  • 发布后观察窗口覆盖序列化/校验相关错误码。

关联:G01.01 金丝雀;G08.03 SBOM/CVE;篇章 Spring/Boot 升级场景。

升级变更单附:Release Note Breaking 摘要、弃用 API 清单、契约测试报告、金丝雀计划、回滚镜像 digest。

快车道 CVE:最小回归集(启动+核心路径+安全相关用例)仍不可少;快车道不是无车道。

G01.04
变更窗口与错误预算冻结
核心洞察

错误预算耗尽或变更窗口外,非紧急变更默认冻结;紧急变更走加急通道但仍要灰度与回滚演练记录。

原理映射

SRE 错误预算把可靠性变成可消耗资源;耗尽即信号:优先稳定性而非功能。变更日历与业务高峰对齐。

工程表达

门禁:错误预算红线、变更窗口表、加急审批人、冻结解除条件。评审问「现在能不能发」先看预算板。

G01.05
金丝雀自动回滚阈值
核心洞察

金丝雀阶段必须绑定可自动回滚的客观信号(错误率、延迟、业务成功数);人工「感觉还行」不能替代阈值。

原理映射

灰度是实验:实验没有停止条件就不是实验。信号要业务可感,避免只看 CPU。与错误预算、变更窗口互锁。

工程表达

门禁:金丝雀比例表、自动回滚阈值、人工覆盖审批人、回滚演练记录。评审问「触发什么立刻回」。

自动回滚的验收要注入一次真实的业务成功率下跌并看是否触发:若只验「演练做过」而不验「阈值到时真的回」,演练记录与回滚能力是两回事。人工覆盖必须留痕,且与自动回滚共用同一套信号口径。

G01.06
变更单强制字段门禁
核心洞察

变更单缺回滚点、观察指标、负责人不得合入发布流水线。

原理映射

变更是契约:字段不全等于不可审计。与灰度/回滚互锁。

工程表达

门禁:模板校验、缺字段阻断、抽检变更单完整率。

  • 抽检变更单完整率时要按「能否据此完成一次回滚」判合格,而不是只查字段非空;缺回滚点的单子即使填了负责人也不可执行。平台侧应让缺字段直接阻断流水线,事后抽检只用来发现绕过。
G01.07
流量染色与灰度一致性
核心洞察

灰度流量必须端到端染色(网关→服务→MQ→任务),否则观察窗失真。

原理映射

染色丢失=对照组污染。异步边界是断裂高发区。

工程表达

门禁:染色传递验收用例;MQ/线程池包装器清单。

  • 染色验收要在 MQ 消费端与线程池任务里各放一条断言,验证标签跨异步边界仍在;只在入口与出口比对会被中间透传掩盖。对照组一旦被污染,金丝雀与全量的指标差异就失去统计意义。
G01.08
回滚后数据修复门禁
核心洞察

代码回滚不等于数据回滚;有副作用变更必须附数据修复/补偿方案。

原理映射

状态机与外部账单不会随镜像回退。

工程表达

门禁:修复脚本评审、演练记录、冻结写路径开关。

  • 有副作用变更的验收必须包含一次「代码回滚 + 数据补偿」联合演练:状态机与外部账单不会随镜像回退,只验镜像能退等于没验。补偿脚本还要可回放、可中断,否则修复本身成为新的资损入口。

G02 可观测与排障证据链

本组管出事时证据从哪来、第一步做什么:三支柱默认交付、排障标准动作、告警可行动、采样与成本门禁、变更单号进 Trace baggage、SLO/错误预算看板、日志脱敏采样,以及季度排障演练制度。没有证据链的变更等于赌博;对齐 M06.07 / M14.02 / M11。

G02.01
三支柱默认交付
核心洞察

日志规范、指标、追踪随脚手架默认接入,禁止上线后补丁式接入。没有证据链的系统,排障只能靠猜,变更只能靠赌——可观测性是发布门禁的前置条件,不是增值选项。

三支柱缺一不可:只有日志没有指标会淹没在噪声里;只有指标没有追踪难定位跨服务;只有追踪没有业务日志缺上下文。

反模式:上线后再「补个 Trace」;TraceId 在 MQ/线程池/定时任务断裂;指标无业务语义只堆 JVM;采样率拍脑袋导致关键故障无跨度。

脚手架默认接入的标准要写成平台契约:日志字段字典、指标命名规范、Trace 采样默认值。业务仓库「各自发挥」会导致排障时无法跨服务拼接。

异步边界是 Trace 断裂高发区:线程池包装、MQ 生产者/消费者、定时任务、Reactive 调度都要有明确的上下文传递方案。

原理映射

Logs / Metrics / Traces 互补:指标发现异常,追踪定位路径,日志给上下文。统一 TraceId 传播(HTTP、RPC、MQ、线程池、定时任务、异步回调)。

黄金指标按服务类型选型(RED/USE);采样策略在成本与排障完整度之间显式权衡并写入 ADR。与 M06.07 可观测三支柱、M14.02 证据优于经验同构。

结构化日志字段约定(traceId、tenant、变更单号、关键业务键)比「多打点」更重要;无规范的日志等于不可检索的噪声。

成本权衡显式化:全量追踪在高 QPS 下不可承受时,用头部采样+错误必采+慢请求必采;策略写入 ADR 并按季度复盘漏采事故。

业务指标优先于技术指标放行:有「下单成功数」才谈「JVM 堆」;技术指标用于定位,业务指标用于卡点。

工程表达

新服务 checklist:结构化日志字段、核心业务指标、入口/出口 span、仪表盘与告警模板、采样策略说明。

  • 上线评审问「证据从哪来」,而不是「出了事再加」。
  • 验收:抽一条真实请求,从入口 Trace 钻到依赖与日志。
  • 变更单号写入日志与 Trace baggage,便于回放。

关联:G02.02 排障动作;G02.03 告警可行动;发布卡点指标依赖本卡。

新服务 DoD:仪表盘从模板克隆、告警从模板绑定、示例 Trace 链接贴进 README。缺少任一项不得进生产命名空间。

抽检制度:每月随机抽服务验证「入口到依赖」钻取,失败记平台缺陷或业务债。

G02.02
排障标准动作
核心洞察

故障现场先止血再取证:保留现场(日志段、指标窗口、堆栈/转储、变更单),再离线分析。现场长时间 debug 拉长 MTTR,是最大的反模式。

止血优先级通常写在 Runbook:回滚 > 降级 > 限流 > 扩容 > 重启 > 切流——按业务选,但必须事先写清,禁止临时发明顺序。

反模式:一上来重启丢掉现场;多人并行改配置无指挥;把「感觉像是缓存」当归因;交接班只交感觉不交证据包。

指挥链比工具链更重要:谁有权执行回滚/降级、谁负责对外同步、谁禁止并行变更,必须在故障前写清。工具再全,多人无指挥仍会互踩。

现场保留清单按故障类型预制:OOM 要堆转储策略、死锁要线程栈、流量异常要入口与依赖对比图——不要故障时才想「还要什么证据」。

原理映射

标准动作链:分区归因(变更?流量?依赖?资源?)→ 采证 → 假设 → 验证 → 固化 Runbook。与线上问题主题 M14.02、M11 证据优于经验对齐。

归因必须能指向证据时间线:变更窗口、流量拐点、依赖错误率、资源饱和曲线。假设要可证伪,验证失败就换假设,禁止死磕第一直觉。

止血与根因修复解耦:先恢复用户可感,再开问题单做根因与改进;两者混为一谈会反复「修一半上线一半」。

分区归因四象限强制过一遍:变更、流量、依赖、资源。跳过任一象限的「秒级结论」事后复盘往往不成立。

假设管理:同时最多保留 2~3 个高优先级假设,每个假设写「如何证伪」;证伪后归档,防止讨论原地打转。

工程表达

排障话术固定四句:现象与范围、已采证据、当前假设、下一步与回滚条件。交接班移交证据包(看板截图、Trace 链接、变更单、已执行动作)。

  • 复盘输出:时间线、根因、改进项负责人与截止日期。
  • Runbook 每次事故后回写,禁止只存在聊天记录。
  • 重大故障禁止未经指挥的并行变更。

关联:G02.01 证据来源;G02.03 告警驱动首轮;G01 回滚是常见止血手段。

交接班模板:时间线、已执行动作、未验证假设、证据包链接、当前风险。聊天记录不算交接。

复盘区分「触发因素」与「根因」:只改触发不改根因,同类故障会复发;改进项进 backlog 有截止日期与验证方式。

G02.03
告警可行动
核心洞察

告警必须可行动:有明确责任人、有 Runbook、有抑制与聚合,禁止「只响铃不指向动作」。噪声告警会训练团队忽略真正的火情。

一条告警若从未被处理,就应从系统中删除或降级;告警是稀缺注意力的配额,不是指标的镜子。

反模式:原因猜测型告警(「可能是 GC」)刷屏;无抑制导致同一根因打爆手机;夜间与白天同一阈值;错误预算燃尽只多发邮件不冻结发布。

告警噪声是文化腐蚀剂:团队学会「先静音」之后,真正的火情也会被静音。治理噪声与增加告警同样是可靠性工作。

可行动 = 责任人 + 首要动作 + 升级路径 + Runbook;缺一则降级为看板或工单,不进寻呼。

原理映射

告警设计:症状(用户可感)优先于原因猜测;阈值与窗口防抖;夜间与工作时间分级。错误预算燃尽应触发发布冻结与升级,而非更多噪声。

关联告警聚合,同一根因合并为一条工单;分页告警与依赖告警要有因果标签,避免「全红」时无人知道先动哪条。

与 M06.07 / M11 对齐:可观测交付的终点是「可行动」,不是「有图」。

症状优先:用户下单失败率优于「某主机 CPU」。原因类告警可作辅助面板,避免寻呼风暴。

抑制与聚合:同一根因窗口内合并;维护窗口抑制;依赖故障时下游告警降级为信息级,避免全员空转。

工程表达

每条告警附:影响面、首要动作、升级路径、相关看板、Runbook 链接。季度清理无主告警与从未处理的告警。

  • 验收:新人按 Runbook 能独立完成首轮处置。
  • 新增告警必须同步新增或更新 Runbook。
  • 发布冻结条件写入错误预算策略,值班可见。

关联:G02.01 指标来源;G02.02 首轮动作;G01 错误预算冻结发布。

告警目录季度评审:处理次数、平均确认时长、误报率;零处理告警删除或降级。

新人验收:抽三条告警,按 Runbook 完成首轮处置演练并计时,超时则改 Runbook 而不是怪新人。

G02.04
采样与成本门禁
核心洞察

追踪采样策略必须书面化:头部采样 + 错误必采 + 慢请求必采;禁止拍脑袋全开或全关。

原理映射

全量追踪在高 QPS 下不可承受;漏采会导致事故不可复盘。成本与排障完整度的权衡写入 ADR。

工程表达

门禁:采样 ADR 链接、错误必采开关、成本看板、季度漏采复盘。上线核对示例 Trace 可钻取。

G02.05
变更单号进 Trace baggage
核心洞察

每次生产变更必须把变更单号写入日志与 Trace baggage;否则排障无法把「现象」绑回「哪次变更」。

原理映射

证据链要能回答:这个错误对应哪次发布/配置推送。无关联等于事后猜。

工程表达

门禁:脚手架默认注入变更单号;抽检一条请求能从 Trace 钻到变更单。缺字段阻断发布。

抽一条生产请求验证能否从 Trace 里的变更单号反查发布单,反向也要能从发布单拉出该次变更的全部请求;单向注入在跨服务调用后极易丢字段。缺字段应阻断发布,而不是靠日志检索补。

G02.06
SLO 与错误预算看板
核心洞察

每个关键服务必须有对外 SLO 与错误预算看板,发布前先看预算。

原理映射

没有预算的稳定性讨论是空谈。

工程表达

门禁:看板链接进变更单;预算红线自动冻结非紧急变更。

  • 错误预算门禁的可证伪点是「预算耗尽时流水线是否真的冻结」;看板存在不等于有否决权。预算窗口也要写清按自然月还是滚动窗口,否则大促前累积的消耗会被一次重置抹平。
G02.07
日志脱敏与采样门禁
核心洞察

结构化日志默认脱敏;全量 Debug 采样禁止进生产常开。

原理映射

日志既是证据也是泄露面与成本面。

工程表达

门禁:字段字典、脱敏规则单测、采样策略 ADR。

  • 脱敏规则要有字段级单测与抽样回放:新增字段能否被自动拦截,比规则文档是否齐全更能说明门禁有效性。全量 Debug 采样须带自动失效时长,否则临时开关会长期常驻并绕过脱敏路径。
G02.08
排障演练季度制度
核心洞察

季度至少一次真实排障演练(含取证与复盘),否则 Runbook 是假的。

原理映射

演练发现断链比故障时发现便宜。

工程表达

门禁:演练记录、缺口进平台债、未演练服务限制发布级别。

  • 演练验收看「是否发现过断链并进平台债」,而不是看演练是否顺利完成;全程无缺口的演练多半是照 Runbook 走形式。未演练服务应限制发布级别,让制度对发布行为产生实际约束。

G03 容量与资源预算

本组管系统真实能扛多少:应用与编排同一容量模型、池化与拒绝可观测、大促前演练清单、拒绝路径用户可感、多租户配额与嘈杂邻居、依赖拓扑容量联动、线程池与连接池联合预算、弹性伸缩冷却防抖。清单未勾完不上峰值;对齐 M08.10 / M12.04。

G03.01
应用与编排同一容量模型
核心洞察

应用线程池/连接池/队列深度与 K8s CPU/内存/HPA 必须同一容量模型,禁止「应用按 QPS 估、编排按感觉设」。两边不一致时,先打满的一侧决定真实容量。

常见失效:池子先拒而 CPU 还空;或 limit 先 OOMKill 而业务还在加并发。容量文档若不能同时解释应用与编排,就是两套幻觉。

反模式:HPA 只盯 CPU;JVM 堆 + 直接内存 + 线程栈超过 limit;压测结论不映射到编排参数变更单。

容量模型要能回答三个数:目标流量、瓶颈资源、拒绝时用户可感。答不出「拒绝时用户看到什么」,说明模型只覆盖了「理想路径」。

JVM 与容器的内存账要算全:堆、元空间、直接内存、线程栈、侧车、页缓存假设;漏算一项就会在高峰以 OOMKilled 形式出现。

原理映射

容量 = 最小瓶颈资源。利特尔定律与排队论约束在途请求;容器 limit 与 JVM 堆、直接内存、线程栈、侧车要三联(多联)对齐。

HPA 指标要与业务饱和信号一致(队列深度、拒绝率、RT),CPU 不等于业务容量。与 M08.10 容量定律、M12.04 分区归因与容量一体同构。

扩容方向要写清:水平加副本 vs 调池化;加副本解决不了单分片热点与下游单点。

水平扩展有效的前提是无单分片热点、无全局锁、下游也按同模型扩。只扩应用不扩 DB/缓存,是把瓶颈挪位。

HPA 与池化参数联合设计:副本增加会放大总连接数,可能先打穿下游;扩容单含下游容量确认。

工程表达

容量文档写清:目标 QPS/RT、瓶颈资源、池化参数、HPA 阈值、拒绝行为、OOM/拒绝时的用户可感。

  • 评审现场核对:应用最大并发 × 单请求资源 ≈ 编排可提供资源。
  • 压测结论必须能映射到具体编排/池化变更单。
  • 大促前用 G03.03 清单复核同一模型。

关联:G03.02 拒绝可观测;G04.03 扩展前先单机;G06.01 超时预算受容量约束。

容量文档与编排清单同 PR 评审;压测报告必须映射到具体 YAML/池参数 diff。

评审口算:maxConcurrency × costPerReq 是否落在 request/limit 与下游配额内;口算不过关不进入压测预约。

G03.02
池化与拒绝可观测
核心洞察

线程池、连接池、信号量的拒绝策略必须可观测:拒绝次数、队列等待、活跃数进指标与告警。静默拒绝等于悄悄丢业务——拒绝是保护机制,必须让调用方与值班同时看见。

队列从「缓冲」变成「延迟放大器」时,要下调队列、上调拒绝可见性;无限队列是事故预告。

反模式:拒绝只打本地日志;Caller 无感知继续重试打穿;虚拟线程不限制下游并发把 DB 打爆。

可见的拒绝是友好的失败;不可见的排队是慢性中毒。队列长度与等待时间进 SLI,而不仅是「线程池还有余量」的错觉。

虚拟线程场景下,「线程用之不竭」的错觉最危险:必须用信号量把并发钉在下游可承受的数字上。

原理映射

Caller 需感知背压(快速失败/降级),Callee 需暴露饱和信号。与 M08.07 背压是契约、M08.06 背压主题同构。

虚拟线程降低线程成本,不降低下游容量;仍须用信号量/池化限制对 DB、RPC、外部 API 的并发。

拒绝策略(Abort/CallerRuns/Discard)各有代价:Discard 最危险(静默丢),CallerRuns 可能反压到入口线程,须显式选择并监控。

背压传播方向:Callee 饱和 → 暴露指标/快速失败 → Caller 降级或限流 → 入口保护。任一环断裂就会在边界堆积。

拒绝策略选择写入 ADR:为何不用 Discard;CallerRuns 是否会反压到 Netty/Tomcat 线程;Abort 后的用户文案与补偿。

工程表达

池化评审三项:核心/最大/队列、拒绝策略、指标名与告警。压测必打到拒绝路径,确认降级文案与补偿。

  • 看板固定:拒绝 QPS、排队 P99、活跃线程/连接、下游错误率。
  • 变更池参数按发布门禁,可回滚。
  • 拒绝率进入错误预算与大促卡点。

关联:G03.01 同一容量模型;G06.01 超时与重试;G02.03 饱和告警。

压测报告专章「拒绝路径」:触发方式、指标曲线、用户可感、是否可恢复。缺失该章视为压测未完成。

生产看板把拒绝率与业务成功率并排;拒绝率上升而成功率暂稳,往往是下一波雪崩的前兆。

G03.03
大促前演练清单
核心洞察

大促前必须做:全链路压测、限流阈值校验、降级开关演练、回滚演练、依赖容量确认。清单未勾完不上流量峰值——演练目标是暴露协同问题,而不是证明「没事」。

口头「应该扛得住」不算数;依赖方容量函证要书面化,含峰值 QPS、拒绝策略与联系人。

反模式:只压入口不压依赖;演练不走真实降级开关;大促窗口仍开放非预案发布;压测流量形状与真实热点不符。

演练要像打仗:真实开关、真实回滚、真实依赖函证、真实值班链路。桌面推演只能发现文档问题,发现不了「开关没接上」。

峰值流量形状必须含热点与毛刺;只用均匀压测通过的系统,会在秒杀/开售瞬间倒塌。

原理映射

演练重点:缓存击穿、热点账户、消息堆积、慢 SQL、线程池打满、依赖超时雪崩。错误预算与大促窗口绑定,发布冻结有明文。

与 G01 发布门禁、G03.01 容量模型、G05 热点治理共用同一份参数来源:压测发现的参数变更仍走发布与回滚,禁止「演练现场改死参数」。

混沌与故障注入(可选)验证:单依赖超时、缓存全挂、从库延迟——失败模式应符合预期降级,而非雪崩。

发布冻结窗口与错误预算绑定:冻结不是形式,而是变更审批流真的关掉非预案通道。

依赖函证内容:峰值 QPS、超时与拒绝策略、降级约定、值班联系人、升级路径。邮件「OK」无数据视为未函证。

工程表达

清单模板按「流量入口 / 核心交易 / 依赖 / 数据 / 回滚」五栏;演练结论进复盘,参数变更走发布门禁。

  • 大促当天只允许预案内动作,禁止临时发明。
  • 值班表、升级路径、公共决策频道提前就绪。
  • 峰值后做容量复盘:预测 vs 实际、拒绝与降级触发次数。

关联:G01 回滚演练;G05.03 热点清单;G06.02 治理参数;G02 证据与告警。

清单销项会议:每项有证据链接(压测报告、演练录像/日志、函证书)。无证据不算勾完。

大促当日决策树提前打印在值班频道置顶:触发条件 → 允许动作 → 禁止动作 → 升级条件。

G03.04
拒绝路径用户可感
核心洞察

池满/限流拒绝必须返回可识别错误码与用户可感文案,并有指标;静默超时不算拒绝策略。

原理映射

拒绝是保护手段;不可观测的拒绝等于故障。客户端应能区分可重试与不可重试。

工程表达

门禁:拒绝码表、用户文案、拒绝 QPS 指标、告警绑定 Runbook。压测必测拒绝路径。

G03.05
多租户配额与嘈杂邻居
核心洞察

共享集群必须有租户级配额(QPS/连接/存储);无隔离的「平均可用」会在大客户峰值时拖垮全体。

原理映射

嘈杂邻居是容量问题的常态形态;配额是契约,不是优化项。

工程表达

门禁:租户配额表、超限拒绝可观测、大促前核对 TopN 租户预算。

配额验收要注入一个大客户超限流量,看其他租户的延迟与拒绝率是否保持平稳;只测「超限被拒绝」会漏掉拒绝前的资源争抢。租户维度的用量必须可观测,否则嘈杂邻居发生时无法归因到具体来源。

G03.06
依赖拓扑容量联动
核心洞察

容量评审必须含关键依赖拓扑与各自瓶颈,不只看本服务 CPU。

原理映射

假可用常出在下游单点。

工程表达

门禁:依赖图、下游配额、故障域标注。

  • 容量评审材料必须给出每个关键依赖的瓶颈值与扩容耗时:只报本服务 CPU 的评审无法发现「假可用」。判据是抽一条下游单点做故障注入,验证容量结论是否随之失效。
G03.07
线程池与连接池联合预算
核心洞察

应用线程/虚拟线程并发与 DB/Redis/HTTP 连接池必须联合设上限。

原理映射

只扩线程不扩连接=打穿下游。

工程表达

门禁:联合预算表、拒绝可观测、压测验收。

  • 联合预算表要把线程并发、连接池、下游最大连接数三者一起列,单边扩容的评审直接退回。压测时若先出现获取连接超时而非 CPU 饱和,说明预算表没被真正执行,只是文档里的一项。
G03.08
弹性伸缩冷却与防抖
核心洞察

HPA/自适应扩缩必须设冷却与防抖,避免抖动放大事故。

原理映射

抖动是容量控制系统的常见失效模式。

工程表达

门禁:冷却参数、扩缩事件审计、大促前演练。

  • 冷却与防抖的验收要看指标短时抖动下实例数是否收敛,而不是看扩容能否成功;抖动放大只在连续扩缩事件里显现。冷却窗口应大于实例冷启动耗时,否则新实例未就绪又触发下一轮。

法侧原则见 M06.02 迟滞阈值与稳定窗口。

G04 数据变更与 SQL 治理

本组管数据面怎么改才不炸:DDL/数据修复可回滚、SQL 审核与慢 SQL 闭环、扩展前先单机、影子表与双写观察期、只读副本延迟门禁、数据修复双人审批、在线 DDL 工具白名单、备份恢复演练。数据变更往往比发版更危险;对齐 M11.01 / M08.05。

G04.01
DDL/数据修复可回滚
核心洞察

DDL 与数据修复必须可回滚或可正向补偿:影子表、双写、分批、回填校验。不可逆删改默认禁止在高峰直打生产——数据变更与代码变更同等危险,经常更危险。

「先删后说」「高峰加索引」「无备份全表 UPDATE」是经典事故模板;回滚方案写不清,变更单退回。

反模式:锁表 DDL 无窗口评估;修复脚本无抽样校验直接全量;复制延迟不管继续打主库。

数据修复的最高风险是「不可逆 + 难校验」:删改类必须先有可抽样的正确性定义,再谈执行速度。

复制延迟是隐藏锁:主库看起来成功,从库或下游 CDC 尚未跟上,业务读到旧数据会被误判为修复失败或成功。

原理映射

在线 DDL 看锁与复制延迟;大表变更用 gh-ost/pt-osc 或云厂商在线变更。数据修复先备份/抽样校验,再全量;正向补偿优先于逆向幻想。

与 M11.01 变更可回滚一致;与 G06.03 双写/Outbox 在「数据面变更」上互补——结构变更与事件契约要一起评估。

校验查询与影响行数预估是门禁字段:估错一个数量级就应熔断执行。

在线 DDL 工具选型写进变更单:锁类型、是否拷贝表、磁盘与时间预估、失败回退。自研脚本等同高风险,需同等评审。

正向补偿优先:与其幻想完美回滚 SQL,不如设计可重放的修复任务与校验任务。

工程表达

变更单附:执行窗口、回滚 SQL/切流方案、校验查询、影响行数预估、复制延迟阈值、熔断条件。

  • 执行中盯锁等待与复制延迟;超阈熔断。
  • 禁止「先删后说」;删改类须双人复核。
  • 完成后用校验查询闭环,结果贴回变更单。

关联:G04.02 SQL 审核;G01 发布窗口;G06.03 结构变更对 CDC 的影响。

执行熔断条件量化:锁等待阈值、复制延迟阈值、影响行数偏差、错误率。触发即停,复盘后再续跑。

完成后校验结果与备份位点写入变更单;无闭环的数据变更视为事故隐患。

G04.02
SQL 审核与慢 SQL 闭环
核心洞察

SQL 必须过审核(索引、回表、临时表、大偏移);慢 SQL 要有发现→归因→修复→回归的闭环,而不是只调大超时。超时调大是推迟爆炸,不是治理。

从库「看起来快」不能代替主路径 explain;读写分离下的慢查询仍可能打穿主库或连接池。

反模式:N+1 用缓存掩盖;深分页 OFFSET 巨大;隐式转换导致索引失效;慢日志无人认领。

慢 SQL 治理看闭环率,不看发现数:发现一堆却无人修,等于没有治理。工单 SLA 与发布门禁挂钩更有效。

「加索引」也是数据变更:写入放大、磁盘、变更窗口都要评估;禁止把索引当免费午餐。

原理映射

审核关注:选择性、覆盖索引、分页策略、N+1、隐式转换、深分页、临时表与文件排序。慢日志与业务 apdex 联动;修复后用相同流量形状回归。

与高性能存储/SQL 篇章、M09 消除等待同构:慢 SQL 是等待的主要来源之一。

索引不是免费的:写入放大与空间成本要写入取舍;「再加一个索引」也要走变更与回滚(删索引)预案。

explain 结论要对照真实基数与绑定变量;开发环境的 explain 只能作参考。用生产只读或采样统计验证。

深分页与导出类 SQL 单独门禁:必须 keyset/seek 或异步导出,禁止巨大 OFFSET 上生产。

工程表达

上线门禁:新增 SQL 有 explain 结论;慢 SQL 工单有负责人与截止日期;回归报告附修复前后 RT/扫描行数对比。

  • 表达时能讲清「为什么走这条索引」。
  • 禁止以调大超时/调大连接池作为唯一手段。
  • 大促前导出 Top 慢 SQL 清单并销项。

关联:G04.01 DDL;G04.03 单机优化;G03 容量被慢 SQL 偷走。

Top 慢 SQL 周报:责任人、趋势、是否进下次发布。连续两周无进展升级。

修复回归用相同流量形状:仅用单条 SQL 基准不够,要看连接池与 RT 分位。

G04.03
扩展前先单机
核心洞察

分库分表、读写分离前先压榨单机:索引、SQL、缓存、批量、异步。过早拆分把复杂度前置,却不一定换来容量——拆分是架构税,要用证据证明值得交。

拿不出单机优化前后对比与瓶颈证据,不批准拆分。批准后的第一期目标是「可回滚的路由与对账」,不是「一次拆完美」。

反模式:为了微服务而拆库;未解决热点就按用户 ID 哈希;无对账上双写;读写分离当银弹忽视复制延迟语义。

拆分决策的证据链:单机优化前后容量曲线、瓶颈火焰图/等待分析、成本对比(研发复杂度 vs 机器)。缺一视为冲动拆分。

「可回滚的路由」是第一期交付物:流量与数据都能退回旧拓扑,否则拆分是单行道。

原理映射

与 M08.05「扩展前先单机」同构:先证明瓶颈在容量而非实现。拆分后的事务、对账、路由、热点、跨库查询成本要写进 ADR。

读写分离首先改变的是一致性语义,其次才是容量;产品契约(G05.02)必须先改。

分片键选择错误会制造新单点(热点分片);扩展方案必须含热点与扩容再平衡预案。

一致性语义变化先于拓扑变化:读写分离/分片会改变事务与可见性,产品契约与对账必须先就绪。

分片键与热点分析同单:选错分片键会把单机热点变成单分片热点,扩展税白交。

工程表达

扩展评审先出示:单机优化前后对比、瓶颈证据、一致性模型变更、对账与回滚路由方案、时间盒与退出条件。

  • 第一期交付:可回滚路由 + 对账任务 + 观察看板。
  • 禁止无对账的双写上线。
  • ADR 必填,回顾日写进日历。

关联:G04.01/02 单机手段;G06.03 Outbox;G05 缓存与一致窗口;M08.05。

ADR 模板强制字段:瓶颈证据、拒绝的替代方案、一致性影响、对账、回滚、时间盒、回看日。

第一期上线标准:路由开关 + 对账差异看板 + 回滚演练记录,三者齐全才允许扩大写入比例。

G04.04
影子表与双写观察期
核心洞察

大表重构默认影子表/双写观察期,观察指标达标才切读;禁止高峰直接 rename 大表。

原理映射

数据变更爆炸半径大且常不可逆;观察期用来证明正确性与性能。切读与切写可分步。

工程表达

门禁:双写校验报告、观察期时长、切读开关、回切方案。对照 G04.01 可回滚原则。

G04.05
只读副本延迟门禁
核心洞察

读写分离上线前必须定义可接受的副本延迟与读己之写策略;延迟超阈应切主读或降级,而不是默默脏读。

原理映射

最终一致不等于无限延迟。业务契约要写清延迟窗口与补偿。

工程表达

门禁:副本延迟指标与告警、读路径降级开关、验收用「写后读」用例。

「写后读」用例要在副本延迟超阈时验证是否切主读或降级,能返回旧值而不报错才是最危险的形态。业务契约需写明可接受的延迟窗口与补偿动作,缺窗口定义的「最终一致」等于无限延迟。

G04.06
数据修复双人审批
核心洞察

生产数据修复必须双人审批+可回放脚本,禁止控制台手改当常态。

原理映射

手改不可审计、不可回滚。

工程表达

门禁:工单、脚本仓库、执行窗口与回滚包。

  • 数据修复脚本要能在演练库重放并校验影响行数,双人审批须覆盖执行窗口而非只在提交时签字。判据是控制台直连账号是否仍具备写权限——只要旁路存在,工单制度就形同虚设。
G04.07
在线 DDL 工具白名单
核心洞察

大表变更只允许白名单工具/策略(gh-ost/pt-osc 等),禁止裸 ALTER。

原理映射

锁表是可预期事故。

工程表达

门禁:工具白名单、副本延迟观察、取消预案。

  • 白名单工具之外还要验副本延迟观察点与取消预案:在线 DDL 的真风险不是锁表本身,而是无法中途停止。抽一次大表变更做分批中断演练,能停在批次边界才算有取消能力。
G04.08
备份恢复演练门禁
核心洞察

备份存在≠可恢复;恢复 RTO/RPO 必须演练出数。

原理映射

未演练的备份是安慰剂。

工程表达

门禁:季度恢复演练、耗时记录、失败即阻断高危变更。

  • 恢复演练要产出实测 RTO 与 RPO 并与业务目标比对,「恢复成功」四字不构成证据;还要校验恢复后的行数与关键单据。未达目标即冻结高危变更,否则演练退化为例行勾选。

G05 缓存一致与热点治理

本组管缓存加速如何不牺牲正确性与可用性:失败可降级、一致性窗口写进契约、热 key/大 key 专项、降级演练、热点预热护栏、击穿穿透演练清单、多级缓存失效广播、容量与淘汰评审。对齐 M07.02 / M08.08。

G05.01
缓存失败可降级
核心洞察

缓存穿透/击穿/雪崩与缓存集群故障时,必须有降级:回源限流、默认值、只读旧数据、熔断依赖,禁止无限回源打穿 DB。缓存挂了系统仍应「降级可用」,而不是「更不可用」。

缓存是加速器不是真相源;把缓存当 DB 用,故障模式会从「变慢」变成「写丢/读错」。

反模式:无互斥重建导致击穿;空值不缓存导致穿透;多级缓存失效顺序未定义层层放大;故障时关闭限流「先顶住」。

降级不是「返回空」这么简单:要定义用户可感(旧数据/默认值/只读/排队),并与产品共同签字。错误的降级比故障更伤信任。

互斥重建与单飞(singleflight)是击穿标配;没有互斥的 cache aside 在过期风暴下等于自攻 DB。

原理映射

失败模式要在设计期声明:一致性窗口、过期策略、互斥重建、布隆/空值缓存、回源配额。与 M07.02 缓存非源同构。

多级缓存定义失效顺序与最大回源 QPS;本地缓存要有上限与抖动过期,避免Herd。

与 G03 容量模型联动:回源配额必须小于 DB 可承受;演练「缓存全挂」是唯一验收。

回源配额是硬闸:按 key 与全局双限;超过则降级,不得「临时取消限流保业务」——那是把事故换成更大事故。

多级缓存的失效顺序写成状态机:本地 → 分布式 → DB;并行失效策略要防止惊群。

工程表达

故障演练必做「缓存全挂」:观察 DB QPS 与用户可感错误率,确认限流与降级开关有效。

  • Runbook:何时开降级、何时允许回源、何时止损回滚。
  • 穿透/击穿/雪崩各有专项用例进回归。
  • 降级开关按 G01.02 配置门禁管理。

关联:G05.02 窗口契约;G05.03 热点;G03.03 大促演练。

「缓存全挂」演练报告必含:DB QPS 峰值、错误率、降级开关生效时间、回滚决策点。

Runbook 与开关名、看板面板一一对应;禁止「开降级」却找不到开关。

G05.02
一致性窗口写进契约
核心洞察

缓存与 DB 的一致性不是「最终会一致」一句话,而要写成契约:窗口时长、读路径(主/从/缓存)、用户可感语义。窗口内允许什么、不允许什么,产品与研发必须同一张纸。

金融与库存等场景往往要求绕过缓存读主或同步失效;「缓存优化」若未改契约,就是静默降低正确性。

反模式:口头最终一致;延迟双删无窗口说明;读写分离延迟当缓存一致;变更缓存策略不走发布。

契约一页纸最小字段:窗口时长、读路径优先级、窗口内允许的用户可感、超时后的行为、关键写是否绕过缓存。

缓存策略变更=产品行为变更:即使「只改 TTL」,也可能让用户更频繁看到旧值或击穿更重。

原理映射

Cache-Aside / Write-Through / 延迟双删各有代价:写失败、删失败、并发读写窗口不同。先定一致模型,再选组件(M07.02 / M07.01)。

读路径要可观测:用户这次读的是主、从还是缓存;排障先问路径,再问「为什么不一致」。

契约变更等于产品行为变更,须灰度与回滚;与 G01 发布三要素同级。

延迟双删/订阅失效各有失败模式:删失败、消息丢失、并发读写。失败后的最大脏读窗口必须 ≤ 契约窗口,否则契约作废。

排障时「路径」是第一问:主库直读、从库、缓存、本地缓存——路径不清则讨论无意义。

工程表达

接口文档与 SLA 写明一致性窗口与读路径;用例验收含窗口内/窗外的期望行为。

  • 排障话术:先确认读路径与变更窗口。
  • 变更缓存策略视为发布,走灰度与回滚。
  • 对账/校验任务覆盖关键字段漂移。

关联:G05.01 失败降级;G04.03 读写分离语义;G06.03 事件驱动一致。

接口文档与错误码旁标注一致性语义;验收用例覆盖窗口内/外。

策略灰度:按租户或流量百分比切换 TTL/读写策略,观察投诉与对账差异再全量。

G05.03
热 key / 大 key 专项
核心洞察

热 key 与大 key 必须专项治理:拆分、本地缓存、复制、压缩、拆 value。热点会把集群变成单点——大促前不知道热点在哪,等于不知道单点在哪。

大 key 拖慢迁移、阻塞复制、放大网络;热 key 打满单分片 CPU。两者都要用证据发现,而不是上线后猜。

反模式:全站一个「热门商品」键;巨型 Hash/List 不拆;只加机器不打散;热点清单无主人。

热点清单是活文档:开售 SKU、活动入口、配置中心热 key、登录态大 key,都要在大促前冻结版本并指定负责人。

大 key 的危害常在运维动作:迁移、扩容、备份时阻塞;日常 QPS 不高不代表可以忽视。

原理映射

发现靠:代理层热点统计、大 key 扫描、慢查询、分片 CPU。治理按「打散」:哈希标签、分片、多副本只读、本地缓存短 TTL。与高并发热点 M08.08 对齐。

打散会改变一致与失效成本,须同步更新 G05.02 契约与回源配额。

容量模型(G03)要把「单分片峰值」写进去,否则水平扩展无效。

打散手段分级:本地缓存 → 只读副本 → 拆 key → 业务改模型。越靠后成本越高,越要 ADR。

热点与限流联动:打散不及的,用用户级/商品级限流保护,避免打穿。

工程表达

大促前出热点清单与预案;上线后持续扫描,超阈进工单。验收:热点 key 的单分片 CPU/QPS 不再独占集群。

  • 清单含:key 模式、QPS、分片、负责人、预案(拆分/本地缓存/限流)。
  • 大 key 治理含拆分与压缩目标体积。
  • 演练热点打满时的降级路径。

关联:G05.01 击穿;G03.03 大促;M08.08 热点方法论。

扫描任务日更:超阈自动建单;大促前 T-7/T-3/T-1 三次销项。

验收看分片 CPU 与热 key QPS 占比,而不是「我们已经拆了」的口头。

G05.04
缓存降级演练
核心洞察

缓存失败降级路径必须演练:降级后 DB 配额、用户可感、自动恢复条件写进 Runbook。

原理映射

未演练的降级在事故中不可用。降级不是关缓存,而是受控的配额与体验。

工程表达

门禁:最近演练记录、DB 配额、降级开关、恢复条件。关联 G05.01。

G05.05
热点 key 预热与护栏
核心洞察

已知热点(大促 SKU、登录配置)必须有预热清单与单 key 护栏;靠「过期后自然重建」等于赌击穿。

原理映射

热点是容量与一致性的交叉点;预热失败要有显式降级。

工程表达

门禁:热点清单、预热脚本可回放、单 key QPS/带宽告警、击穿开关演练。

预热验收要让预热脚本人为失败一次,看单 key 护栏能否挡住回源洪峰;只验预热成功会漏掉降级路径。热点清单应由历史峰值反推而非人工猜,大促前的清单有效期要随流量结构更新。

G05.06
击穿/穿透演练清单
核心洞察

缓存击穿穿透雪崩必须有演练与开关,而不是文档里的理论。

原理映射

过期瞬间与恶意 key 是常态风险。

工程表达

门禁:演练记录、单飞锁/空值缓存/逻辑过期验收。

  • 演练须分别注入过期瞬间与恶意不存在的 key,逐项验单飞锁、空值缓存、逻辑过期是否生效;只在文档里列三种缓存问题、无演练记录,故障时必然找不到开关。判据是注入后回源 QPS 是否被压住。
G05.07
多级缓存失效广播
核心洞察

本地+分布式多级缓存必须有失效广播与版本策略。

原理映射

节点间旧值会造成诡异脏读。

工程表达

门禁:广播通道、版本字段、失效失败重试。

  • 失效广播验收要人为丢弃一次消息,看各节点是否仍收敛到同一版本;节点间旧值造成的脏读很难复现,常被误判为偶发。重试与版本字段缺一不可,只靠广播到达不保证一致。
G05.08
缓存容量与淘汰评审
核心洞察

缓存容量、淘汰策略、大 key 限制必须进容量评审。

原理映射

内存打满比打满 CPU 更突然。

工程表达

门禁:maxmemory 策略、大 key 扫描、淘汰命中监控。

  • 淘汰策略评审要给出内存打满时的行为预期:是先拒绝写入还是先淘汰热点,两者对命中率的影响完全不同。大 key 扫描结果与淘汰命中率监控同时缺失时,内存打满会比 CPU 打满更突然。

G06 调用预算与服务治理

本组管同步链路与双写契约:超时预算入契约与强制入库、治理参数可回滚、双写走 Outbox/CDC、重试预算显式化、熔断半开观察窗、幂等键规范、对账任务 SLA。超时可加总、双走并对账;对齐 M11.02 / M11.03 / M07.01。

G06.01
同步链路预算入契约
核心洞察

同步调用链的超时必须可加总:各跳超时之和小于用户超时,并留重试与排队余量。无预算的超时 = 随机故障。超时是分布式系统的第一公民,不是调优参数。

重试无幂等会放大写;熔断阈值要基于错误类型而非笼统 5xx;取消(cancellation)要能向下传递,避免下游空转。

反模式:每跳都 3s 叠出 30s;入口超时短于下游;无限重试;超时后仍继续写。

预算表是抗雪崩的宪法:没有加总通过的同步链路,不得以「先上线再调」为借口进入生产。

取消传递缺失时,下游会在上游已超时后继续烧资源——这是隐式容量泄漏。

原理映射

超时、重试、幂等、熔断一起设计。与 M11.02 超时预算、M08.09 负载分型与取消同构。

预算表是契约:每跳 RT P99、超时、重试次数、幂等键、失败语义。评审时现场加总,加总不过关不得上同步链路。

某一跳变慢时,整链失败模式应「快速失败/降级」,而非层层排队雪崩——用压测验证,而非口头保证。

重试预算单独列:次数 × 超时要计入总预算;抖动(jitter)与幂等是重试的前置条件。

熔断与超时分工:超时管单次,熔断管持续错误;慢调用熔断阈值与错误熔断阈值分开配。

工程表达

链路预算表进架构文档与接口契约;压测验证单跳变慢时的整链行为。

  • 写路径重试必须幂等键或去重表。
  • 取消向下传递进验收用例。
  • 预算变更按发布门禁,观察错误率与尾延迟。

关联:G06.02 治理参数;G03.02 背压;G06.03 能异步则勿同步硬扛。

评审现场用表格加总;加总超过用户超时则砍跳、改异步或降级,而不是「每跳再减 50ms」的假动作。

故障注入:单跳延迟到接近超时,观察整链是否快速失败且无重试风暴。

G06.02
治理参数可回滚
核心洞察

限流/熔断/降级参数变更按发布管控,必须可回滚。错误的限流阈值可以制造「自攻」——把正常流量挡在门外。治理参数与业务开关一样危险。

集群限流与单机限流语义要分清,避免「每实例都以为自己是全集群」导致实际阈值放大 N 倍。

反模式:高峰临时拍脑袋调大;无观察指标的参数变更;熔断后无半开与恢复条件;降级开关无主。

治理参数的误杀与漏杀都消耗信任:误杀制造自攻,漏杀制造雪崩。所以变更要有观察指标双看:通过率与依赖健康。

单机限流 × 副本数 ≠ 集群限流;语义写错会在扩容时自动「放松」或「收紧」。

原理映射

治理参数进配置门禁(G01.02);变更前后对比错误率、通过率、拒绝率、依赖健康。与错误预算联动:误杀过高同样消耗预算。

限流算法(令牌桶/漏桶/滑动窗口)与维度(用户/IP/接口/租户)要写清;维度选错会误伤或放行。

熔断要区分慢调用与错误调用;半开探测流量要受限,避免恢复时二次打穿。

半开探测要限流:恢复期用小流量探测,成功再抬门;一次放全是二次事故。

参数变更与错误预算联动:误杀率超阈同样触发回滚,不只看 5xx。

工程表达

参数变更单含:旧值、新值、观察指标、回滚条件、生效范围(单机/集群)。禁止高峰无单临时调参。

  • 演练:错误参数一键退回时间计入 RTO。
  • 大促参数变更提前演练并冻结临时修改。
  • 看板并排展示:通过率 vs 拒绝率 vs 依赖错误率。

关联:G01.02 配置发布;G03.03 大促;G06.01 超时与熔断。

变更单并排旧值/新值/预期曲线;观察窗口结束前禁止连续调参。

大促参数包提前合并为「预案包」版本化,当日只允许切换包,不允许细调单个魔法数。

G06.03
双写用 Outbox/CDC
核心洞察

消息与 DB 双写禁止「先发消息再写库」无补偿;用 Outbox / CDC / 事务消息保证至少一次投递后的可对账。双写是分布式一致的经典陷阱,必须有模式而不是有感觉。

至少一次投递必须配幂等消费;没有对账的「最终一致」是信仰,不是工程。

反模式:本地事务外发消息;消费者无幂等;CDC 乱序无版本;表结构变更打断解析无兼容策略。

Outbox 的价值是「与业务同事务的意图记录」;没有轮询/中继把 outbox 发出去,表只是墓地。

对账不是可选报表:没有差异检测与修复工具,最终一致只是口号。

原理映射

最终一致三件套:幂等消费、可重试、对账(M11.03 / M07.01)。Outbox 与业务同事务;CDC 注意顺序、表结构变更兼容;乱序用版本或聚合键。

消息只唤醒,状态以库为准;对账任务可检测漏跑/错账并可审计。与 G04.01 数据变更、G05.02 一致窗口互补。

失败补偿路径要设计完整:重试耗尽进死信、人工修复工具、回放开关。

幂等键设计:业务幂等(订单号)优于技术幂等(消息 ID);两者可并存,但语义要写清。

CDC 与 schema 演进:兼容策略(向前/向后)进变更单;破坏性变更先停消费或双格式。

工程表达

双写方案评审必问:失败怎么补偿、重复怎么消化、对账谁跑、差异怎么修。说不清则退回同步或单写。

  • 对账任务进值班看板,差异超阈告警可行动。
  • 结构变更与 CDC 解析兼容性同单评审。
  • 压测含重复投递与乱序用例。

关联:M11.03 对账兜底;G04.03 扩展双写;G07 AI 工具写操作同样要幂等分级。

上线门禁:重复投递测试、乱序测试、对账任务启用、死信告警可行动。

差异修复工具最小可用:按主键重放、人工标记、审计日志;禁止只靠「再消费一遍」蒙混。

G06.04
重试预算显式化
核心洞察

超时×重试×扇出必须可算并写入契约;默认禁止无限重试与无抖动退避。

原理映射

重试放大是级联故障主因之一。预算超限应失败或降级,而不是继续打。

工程表达

门禁:放大倍数计算表、最大重试、抖动、幂等要求。关联 G06.01 / K06。

G06.05
熔断半开观察窗
核心洞察

熔断打开后半开必须有观察窗与成功阈值;无窗口的「立即全开」会二次打穿。

原理映射

熔断是保护下游也是保护自身;半开是受控实验。

工程表达

门禁:半开比例、成功阈值、失败再开、参数可回滚;变更单写清观察窗。

半开验收要注入「下游刚恢复但成功率不足」的场景,验证是否再次打开而非直接全量;无观察窗的立即全开会造成二次打穿。成功阈值、失败再开与参数回滚点都要能在演练里被触发一次。

G06.06
超时预算表强制入库
核心洞察

同步链路超时必须可加总并入库为契约表,禁止拍脑袋。

原理映射

超时倒挂是雪崩温床。

工程表达

门禁:预算表评审、网关/服务/下游对齐检查。

  • 预算表要可被代码读取而非只写在文档里:抽一条同步链路,逐段核对实际生效的超时值,并验上游剩余时限是否大于下游总时限。超时倒挂的根因常是各层独立配置、无人做加总校验。
G06.07
幂等键规范门禁
核心洞察

写接口幂等键格式、存储与过期策略必须平台规范。

原理映射

无幂等的重试是重复扣款。

工程表达

门禁:规范文档、拦截器默认、抽检关键写路径。

  • 拦截器默认注入的幂等键须由业务自然键生成并落唯一索引;重启后重放同一写请求,若产生第二条流水即判不合规。抽检关键写路径比抽检全量接口更能暴露「规范有、实现没接」的落差。
G06.08
对账任务 SLA 门禁
核心洞察

异步最终一致链路必须有对账任务与 SLA(窗口、告警、补偿)。

原理映射

无对账的 Outbox 仍是赌运气。

工程表达

门禁:对账看板、超窗告警、红线冻结开关。

  • 对账门禁要验任务失败时是否告警并冻结相关发布,而不只是看对账看板存在。判据是人为停掉对账任务后差异表是否仍被允许无限累积;无 SLA 的 Outbox 只是把不一致延后。

G07 AI 制品与评测门禁

本组管 AI 变更的发布纪律:制品全版本化、无黄金集不上线、工具副作用分级表、Prompt 回归绑定发布、评测集漂移检测、Token/算力成本配额、模型降级开关演练。AI 变更面大于普通服务;对齐 L03.01。

G07.01
制品全版本化
核心洞察

Prompt、模型 ID、检索配置、工具实现、编排图全部版本化,可对齐回放与一键回退;版本号进日志与审计。AI 变更面远大于普通服务,版本化是唯一可回放手段。

温度、切片、重排、工具副作用、路由策略任一变化都视为发布;「再调一下 Prompt」与改代码同级。

反模式:线上手改 Prompt 无版本;模型静默切换;无法从一条回答追溯制品组合;回滚靠「凭记忆再改回去」。

制品组合是 AI 系统的「可执行二进制」:缺版本号的 Prompt 等于未构建产物却上了生产。

路由与实验桶必须版本化,否则回放时无法解释「为何同一问题两种答案」。

原理映射

与 L03.01 AI 变更必回归同构:制品不可追溯则回归无意义。多模型路由、AB 实验桶、检索索引版本一并纳入制品清单。

回放要求:同一输入 + 同一制品组合 → 可对齐的输出(允许采样噪声时记录 seed/温度策略)。

与 G01 发布三要素结合:AI 放量同样要有灰度、卡点(质量/安全/成本)、回滚到上一制品集。

回放管道:输入、制品组合、采样策略、工具响应存根——四者缺一则「对齐回放」不成立。

审计字段进每条回答日志:modelId、promptHash、indexVer、toolVer、routeVer。

工程表达

发布清单含:模型版本、提示词哈希、索引版本、工具契约版本、路由策略版本。回滚能指到具体制品组合。

  • 审计:任一线上回答能追溯到制品组合。
  • 禁止生产控制台无单改 Prompt。
  • 制品仓权限与变更审计同代码仓标准。

关联:G07.02 黄金集;G07.03 工具分级;G01 灰度回滚。

回滚演练:切换到上一制品组合并验证黄金集与线上抽样,不只是「改回旧 Prompt 文本」。

权限:生产制品写入走 PR/变更单;控制台热修默认关闭。

G07.02
无黄金集不上线
核心洞察

任何改动必须过固定黄金集/测试集回归;无测试集不上线。离线指标 + 小流量线上数据双确认后再全量。个例体验不是评测,是采样偏差。

黄金集要冻结版本,防止「改题迎合模型」;集合覆盖正确性、拒答、安全、工具调用、延迟与成本。

反模式:只看 demo 好不好;无安全用例;线上全量后再补评测;用变化的测试集宣称提升。

黄金集冻结是防作弊机制:集合可演进,但演进有版本与评审,不能为了让报告好看而改题。

双确认针对分布漂移:线下好、线上差常见于检索语料与真实查询不一致。

原理映射

评测是门禁不是演示:通过率阈值、回归报告、失败用例归因(模型/检索/工具/提示词)要可拆。与 L03.01、M01.06 定性定量同构:先定量门槛,再谈主观体验。

线下指标与线上抽样可能背离;双确认是为了防分布漂移。成本与延迟纳入同一报告,避免「更聪明但不可用」。

集合维护有流程:新增用例要评审,删除用例要说明,版本号随制品走。

评测维度拆分报告:正确性/安全拒答/工具成功率/P95 延迟/单均成本。合成一个「总分」会掩盖安全回归。

失败归因标签强制:模型、检索、提示词、工具、数据、评测本身。无归因则禁止「再训一下」。

工程表达

门禁:黄金集通过率阈值、回归报告链接、灰度观察看板(质量/安全/成本)。未达标不得扩量。

  • 表达:先报评测数字,再报主观体验。
  • 失败用例按归因分派修复,禁止只调温度蒙混。
  • 集合版本与 G07.01 制品版本对齐归档。

关联:G07.01 版本化;G07.03 工具安全用例;G01 卡点扩量。

扩量卡点:黄金集阈值 + 线上抽样窗口 + 安全用例零容忍项。安全项失败不得用「平均分还行」放行。

集合变更单:新增/删除用例理由、版本号、是否影响历史基线对比。

G07.03
工具副作用分级
核心洞察

Agent 工具按副作用分级:只读 / 可重试写 / 不可逆写;不可逆写必须人工确认或强幂等键。工具是带权限的远程代码,不是聊天点缀。

提示词注入与越狱防护必须与工具暴露面一起评审;最小权限默认,能只读绝不给写。

反模式:一把工具万能账号;不可逆写无确认;工具超时无上限;无审计日志;用自然语言「保证别乱写」代替权限。

工具分级表是安全边界:级别决定默认是否自动执行、是否要确认、是否要幂等键、审计级别。

「尽量帮用户完成」与失败安全冲突时,失败安全优先——不确定就拒绝,并给出人工路径。

原理映射

工具契约含:权限、超时、幂等、审计、输入校验、输出大小限制。与 G06.01 超时预算、G06.03 幂等写、G08.01 威胁建模同构。

副作用分级决定默认策略:只读可自动;可重试写要幂等键;不可逆写要人工或双人、或强确认码。

越权与注入测试进黄金集(G07.02);失败安全:不确定时拒绝执行,而不是「尽量帮用户办到」。

输入校验与输出限额防 prompt 注入与数据外泄;工具返回不得直接当高权限指令执行。

不可逆写的补偿设计与普通写路径同等重要:冲正、工单、人工审核队列。

工程表达

上线前列出工具清单与级别;不可逆写默认关闭或双人复核。表达时能讲清「最坏能写坏什么、怎么回滚/补偿」。

  • 演练:恶意/越权调用是否被挡。
  • 工具权限变更走发布门禁与审计。
  • 生产审计能还原:谁、何时、何工具、何参数、何结果。

关联:G07.01/02;G08 安全;G06 写路径幂等。

上线包含:工具清单、级别、权限集、超时、幂等、审计样例、越权测试报告。

演练注入:诱导模型调用高危工具;期望被策略拦截并留审计。

G07.04
工具副作用分级表
核心洞察

Agent 工具按只读/写/资金或不可逆分级;高级别默认二次确认或人工闸。

原理映射

工具调用的爆炸半径可大于模型本身。分级是门禁,不是文档装饰。

工程表达

门禁:工具分级表、确认策略、审计日志、一键禁用。关联 G07。

G07.05
Prompt 回归绑定发布
核心洞察

Prompt/工具/索引变更必须跑同一黄金集回归并贴结果链接;无回归的「文案小改」按生产事故定级。

原理映射

LLM 行为变更不可靠肉眼;回归是唯一客观门禁。

工程表达

门禁:黄金集 diff 报告、阈值阈值、失败阻断;与 G07.02 互锁。

回归报告要贴黄金集 diff 与阈值,且发布单与报告一一绑定;「文案小改」能否绕过流水线直接热更,是这套门禁最容易被击穿的地方。无回归的 Prompt 变更应按生产事故定级,而非按配置调整放行。

G07.06
评测集漂移检测
核心洞察

黄金集必须监测分布漂移与刷分;分数 alone 不能放行。

原理映射

过拟合评测=线上静默塌方。

工程表达

门禁:集外抽样、影子对比、漂移告警。

  • 漂移检测的可证伪点是集外抽样与影子对比是否随集内分数同向;分数上升而集外指标不动,说明过拟合评测正在让门禁持续放行。评测集写权限须与模型发布权分离,否则刷分无从约束。
G07.07
Token/算力成本配额
核心洞察

模型调用成本必须进配额与门禁,超限降级而非账单惊吓。

原理映射

AI 成本是容量问题。

工程表达

门禁:配额表、超限策略、FinOps 看板。

  • 配额验收要注入成本突增,看是否触发降级而非只出账单;按自然月核账意味着发现时损失已发生。单位任务成本应作为实时指标并绑模型别名,超限动作要落在切小模型或限流上。
G07.08
模型降级开关演练
核心洞察

模型超时/质量降级开关必须演练到用户可感路径。

原理映射

开关不演=故障时找不到。

工程表达

门禁:演练记录、文案/兜底、回滚点。

  • 降级开关演练要打到用户可感路径:文案、兜底内容与回滚点都验过才算通过。只验配置项存在,故障时仍会出现「开关开了但没生效」;验收判据是开关触发后前端能否给出可理解的提示。
G07.09
AI 辅助研发的工程治理红线
核心洞察

编码助手、AI 代码评审、AI 单测生成进入流水线后,唯一不变的红线是:AI 产物与人工产物走同一道门禁。降低标准的那一天,就是把幻觉与供应链风险写进主干的起点。

治理要量化到可追问:采纳率、返工次数、评审命中率、单测覆盖率增量——没有度量,AI 提效就只是主观感受与采购理由。生产默认:AI 工具链的准入、上下文边界、产物审计写进研发规范,而不是靠个人习惯临时决定。

原理映射

与 M06 的「可验证才可信任」同构:AI 输出不可信不是缺陷,是必须被验证的输入。因此门禁不能放松,只能前移——预提交提示、PR 检查、CI 静态分析与测试必须能拦住 AI 引入的缺陷。

与 G07.01/G07.04 互锁:AI 生成的代码同样要过制品版本化与副作用分级;外部模型即第三方处理者,送出去的上下文就是数据出境面,密钥、生产数据、客户隐私一律不进上下文窗口。

失败模式:AI 幻觉 API 编译不过(可拦);AI 生成的依赖引入未审计包(供应链);AI 评审刷屏导致告警疲劳(人不再看);上下文误送敏感代码(不可逆)。前两者靠门禁,后两者靠边界与限流。

工程表达

门禁:准入清单、上下文边界、产物标记与审计、量化指标。

  • 准入:AI 工具须过数据合规与依赖审计;代码助手不得直连生产库与外网模型发送完整文件。
  • 边界:上下文最小化(仅相关片段)、脱敏规则前置、密钥与隐私字段硬阻断。
  • 产物:AI 生成片段在提交信息与 PR 中可追溯,评审对「AI 生成未验证」一票否决。
  • 量化:采纳率、AI 代码缺陷密度、PR 周期、单测覆盖率增量;按季度回看,收益不达标即下线工具。
  • 验收:抽检最近变更是否带齐工具标记、脱敏证据与回归结论;关联 K 组事故卡做反例教学。

G08 安全运营与供应链

本组管安全与供应链底线:威胁建模先行、密钥证书可轮换与双写窗口、最小权限审查、依赖镜像可追溯、豁免单到期自动阻断、CVE 分级响应时限、生产访问审计抽检。对齐 M10 与安全 Checkpoint。

G08.01
威胁建模先行
核心洞察

安全需求在设计期做威胁建模(STRIDE 等),而不是上线后补扫描。假设组件会被攻破,问「破了是否仍可控」。安全是约束,不是功能清单。

高风险项未关闭或未显式接受残余风险,不得上线。扫描只能发现已知类问题,替代不了边界与信任假设的审查。

反模式:上线后「补个 WAF」;威胁模型一页纸缺失;残余风险口头接受无签字;新依赖不重做建模。

威胁模型一页纸的读者是评审委员与未来的自己:写不清资产与信任边界,等于未建模。

残余风险接受必须具名与到期日;无限期「接受」等于放弃管理。

原理映射

与 M10 纵深防御同构:最小权限、失败安全、零信任。数据流图上标信任边界与敏感数据;认证授权、输入校验、密钥、供应链分条缓解。

STRIDE(或同类方法)按资产枚举威胁与缓解;缓解要可验证(测试/门禁/监控),不可验证的缓解等于不存在。

与 G07.03 工具暴露面、G08.02/03 密钥与供应链形成安全门禁闭环。

缓解可验证:测试用例、门禁规则、监控告警、权限配置。不可验证的「我们会注意」删除。

新依赖、新工具暴露面、新数据出境都触发增量建模,而不是一年一次。

工程表达

方案评审附威胁模型一页纸:资产、威胁、缓解、残余风险、验收方式。高风险项未关闭不得上线。

  • 复盘安全事件时回指威胁模型缺口并更新模板。
  • 重大架构变更强制重做建模。
  • 与安全手册 Checkpoint 页对照检查。

关联:nav-server-security-checkpoint;G08.02/03;M10。

高风险项关闭证据贴进变更单;未关闭则阻塞发布或降级功能开关。

安全事件复盘输出:模型缺口、新增威胁、模板更新——三件都要有。

G08.02
密钥证书可轮换
核心洞察

密钥与证书必须可轮换:双密钥并存窗口、自动续期、吊销流程。写死在镜像里的密钥是定时炸弹——不能轮换的密钥,等于不能响应泄漏。

共享账号长期静态口令、证书过期无告警、吊销名单拦不住流量,都是可预期的生产事故。

反模式:密钥进仓库;证书人工年审遗漏;轮换无双密钥窗口导致全球中断;吊销演练从未做过。

轮换能力是事件响应的一部分:泄漏当天才发现不能轮换,事件必然拖成灾难。

证书过期是可预防事故;过期告警不可行动等于没有告警。

原理映射

密钥分级:应用密钥、数据密钥、根密钥;HSM/KMS 托管。证书过期监控与告警可行动(G02.03);吊销名单要真能拦住流量。

双密钥并存窗口保证轮换不中断;自动续期失败要升级为事件。与 G01.02 配置门禁一致:密钥下发也是配置变更。

最小权限与短生命周期:能短则短,能作用域收窄则收窄。

双密钥窗口、自动续期、吊销生效链路要分别演练;只演续期不演吊销,泄漏时仍会失败。

密钥分级决定保护强度与访问路径;根密钥触达必须极少且审计。

工程表达

轮换演练每年至少一次;变更单含吊销与回滚。禁止共享账号长期静态口令。验收:泄漏演练中能在约定 RTO 内完成轮换。

  • 证书到期告警绑定 Runbook 与责任人。
  • 密钥不进镜像/仓库;注入方式可审计。
  • 吊销演练结果贴回安全门禁。

关联:G08.01 威胁建模;G08.03 供应链;G01.02 配置。

年演内容:轮换、吊销、续期失败升级、RTO 实测。结果进入安全门禁证据库。

静态口令与长期 token 清零计划有截止日期;共享账号拆人。

G08.03
依赖与镜像可追溯
核心洞察

依赖与镜像必须可追溯:SCA 扫描、SBOM、签名/哈希校验、基础镜像基线。供应链失败按生产事故定级。「不知道跑了什么」比「有个 CVE」更危险。

构建可复现、制品签名、部署校验;第三方调用校验证书并设超时。高危 CVE 有豁免流程与截止日,禁止无限期挂着。

反模式:latest 标签上生产;无私有基线乱拉公网镜像;SBOM 不归档;豁免无到期日。

可追溯的目标是:任意生产实例能回答「镜像 digest、构建号、依赖树、扫描时间、签名者」。

latest 与不可变标签的对立:生产只允许不可变引用;可变标签是供应链洞。

原理映射

与安全手册供应链章节对齐;与 G01.03 升级门禁互补——升级是行为风险,溯源是供应链风险。

SLSA Build 轨道(官方 slsa.dev):L1 要求构建 provenance 存在;L2 要求托管构建平台生成并签名 provenance;L3 要求硬化构建平台(构建互不影响、签名密钥对用户步骤不可见)。SBOM/签名回答「产物内容」,SLSA 回答「构建过程是否可验证」;关键服务门禁可要求 Build L2+。

部署时校验签名/哈希,防止制品库被篡改后静默上线。基础镜像基线由平台维护,业务少自造。

SCA 结果要分级处置:阻断 / 限时豁免 / 接受并监控;与错误预算类似,豁免是有代价的配额。

部署校验签名失败必须阻断,而不是告警后继续。阻断策略与豁免流程成对出现。

CVE 豁免是有息债务:截止日、补偿控制、负责人;到期自动转阻断。

工程表达

门禁:高危 CVE 阻断、SBOM 归档、镜像来源白名单、签名校验通过。表达时能指到「这个包从哪来、谁签的名、何时扫的」。

  • 抽查:任一生产镜像能还原构建与依赖树。
  • 豁免单含截止日与负责人,过期自动变阻断。
  • 第三方 SDK 升级走 G01.03。

关联:G01.03;G08.01/02;安全 Checkpoint。

抽查脚本化:随机生产镜像 → 还原 SBOM → 核对签名 → 核对扫描报告。

第三方 SDK 与基础镜像升级日历公开;与 G01.03 升级门禁合并执行。

G08.04
豁免单到期自动阻断
核心洞察

CVE/基线豁免必须有截止日与负责人;过期自动变阻断,禁止永久豁免。

原理映射

豁免是风险接受,不是风险消失。无到期日的豁免会堆积成供应链黑洞。

工程表达

门禁:豁免单模板、到期扫描、负责人、阻断策略。关联 G08.03。

G08.05
密钥轮换双写窗口
核心洞察

密钥/证书轮换必须双密钥窗口:新旧并行校验→切主→吊销旧钥;单钥硬切等于计划内中断。

原理映射

轮换是变更,不是运维小动作;窗口长度与回滚点要写进 Runbook。

工程表达

门禁:双钥窗口时长、吊销检查清单、演练记录;告警绑轮换 Runbook。

双密钥窗口的验收点在新旧密钥同时通过校验、且吊销旧钥前能确认无在途请求仍用旧钥;单钥硬切是计划内中断。窗口长度应按最长请求时长与缓存有效期定,而非拍一个固定小时数。

G08.06
密钥最小权限审查
核心洞察

密钥与令牌权限必须最小集,定期审查过权。

原理映射

过权密钥泄漏爆炸半径更大。

工程表达

门禁:权限矩阵、季度审查、吊销演练。

  • 权限矩阵要与实际授权逐项比对并留季度审查记录:判据是是否存在超出调用方所需的权限且无回收计划。过权密钥泄漏的爆炸半径由权限而非密钥强度决定,故吊销演练比轮换频率更关键。
G08.07
CVE 分级响应时限
核心洞察

依赖 CVE 必须按严重级别绑定修复时限与豁免到期。

原理映射

无时限的漏洞单等于永久带病。

工程表达

门禁:SLA 表、自动催办、到期阻断。

  • 修复时限要按严重级别自动计算并接入发布阻断;判据是豁免到期后是否真的拦截了发布。无时限、无到期自动升级的漏洞单会长期停在「已接受风险」,把临时例外变成永久状态。
G08.08
生产访问审计抽检
核心洞察

生产人工访问必须审计并可抽检,禁止共享超级账号常态化。

原理映射

无审计的生产访问不可追责。

工程表达

门禁:堡垒机、会话录制、抽检报告。

  • 审计要能抽检到具体自然人及其操作回放:判据是会话录制能否与工单一一对应。共享超级账号常态化时,所有审计字段都指向同一个主体,追责与最小权限回收同时失效。

G09 数据生命周期与治理工程化清单

覆盖数据集版本/漂移门禁、数据血缘与可复现、受监管合规三项工程化清单;对应 L02.13/F14 与 C12.44/46。清单以"缺一项即阻断"为口径,评审口头说得出但写不出视为未准备。

G09.01
数据集版本与漂移门禁清单
核心洞察

数据版本缺失是不可复现与静默劣化的根因;清单把"数据集即代码"落成可勾选的发布前闸门。

原理映射

对应 L02.13 全生命周期框架与 C12.44:版本三元组(数据×Embedding×模型)可追溯,漂移是 training-serving skew 的静默来源。

工程表达

清单:①入库即版本指纹 ②Embedding/模型版本绑定 ③三集(训练/评测/生产)隔离 ④漂移监控(PSI/KL)门禁 ⑤评测集 CI 锁快照。验收:任一项缺失则阻断发布。

信号与责任人:数据集内容哈希、采集规则版本、分区行数、字段空值率与意图分布漂移(PSI)五项入看板;分布告警归数据 owner,质量断言失败归管道 on-call,两者不得同一个「数据告警」笼统派单。

回放与预防:每个 dataset_ver 保留不可变快照与生成作业 run_id,事故时按版本回放重建;预防机制是「漂移超阈自动冻结下游训练 / 评测」并写入发布单,季度抽检冻结是否真的拦住过变更。

G09.02
数据血缘与可复现清单
核心洞察

可复现是监管与科学的共同底线;清单保证一次实验能被精确重跑、被外部核验。

原理映射

对应 C12.44 三集隔离与 A29.02:特征定义单一来源、run 绑定全要素、point-in-time correctness 防泄漏。

工程表达

清单:①特征库线上线下一致 ②实验 run 绑定数据+代码+模型 ③评测集独立不可变 ④防特征穿越与时间点切片 ⑤盲集定期重测。验收:新人按 run 能复现原指标。

信号与责任人:血缘链 source → transform → dataset_ver → index_ver → eval_run 任一环缺失即告警,责任人为该段作业的 owner;缺环不等于「数据没了」,而是「无法证明数据怎么来的」,合规上同样不可用。

回放与预防:按 run_id 反查全部上游版本,能在一分钟内重建当时的评测输入;预防机制是写入路径强制带来源标注与 transform 版本,未登记的写入被 ETL 前置 Advisor 拒绝(C12.44)。

G09.03
受监管合规工程化清单
核心洞察

合规是可验证的工程属性而非文档;清单把审计/脱敏/回放落成强制闸门。

原理映射

对应 L02.14 合规清单与 C12.46:留痕不可改覆盖全路径(含拒绝),PII 在存储边界脱敏,决策可回放。

工程表达

清单:①append-only 审计(含拒绝路径)②PII 存储边界脱敏 ③consent 校验闸门 ④决策依据可回放 ⑤监管报送自动化。验收:抽查最近一次变更是否带齐字段。

信号与责任人:审计事件覆盖成功 / 拒绝 / 降级 / 人工放行四条路径,哈希链断裂或出现「有响应无审计」即 P0 告警,责任人为合规 owner;只记成功调用视为留痕不完整。

回放与预防:按 run_id 重放当时的输入、检索片段、规则命中与版本,回放结果须与留痕一致;预防机制是 PII 在入库边界令牌化、consent_scope 校验前置、以及监管报送从审计视图自动生成(C12.46)。

G10 边缘/多模态/退役/人在环 工程化清单

覆盖端侧边缘部署、多模态评测与引用、模型退役与人在环四项清单;对应 L03.14/S13/S19/S20 与 C12.45。把"边缘/多模态/退役/人在环"从口号落成可验收条目。

G10.01
端侧与边缘部署清单
核心洞察

端侧四约束(算力/内存/能耗/离线)优先于效果;下发即一次灰度发布。

原理映射

对应 C12.45 与 A30:量化是 Pareto 权衡需评测兜底,端云版本一致是正确性的前提。

工程表达

清单:①量化前后评测对比 ②真机低内存验证 ③模型下发版本+签名+灰度 ④离线降级兜底 ⑤端云版本一致性校验。验收:断网时端侧不崩、回退上一代。

信号与责任人:设备分组下的加载成功率、量化方案版本、内存峰值、离线队列深度与回落次数;加载失败后静默回落旧版本是最危险的「无告警成功」,责任人为端侧发布 owner。

回放与预防:下发单绑定 model_ver / 设备分组 / 灰度比例,可按批次一键回滚;预防机制是设备能力校验前置、量化后按任务类型跑 FP16 基线对比、以及下发后 24 小时强制回执核对(C12.45)。

G10.02
多模态评测与引用清单
核心洞察

多模态失效常是模态间不一致;文本指标不能评多模态。

原理映射

对应 A32.01:模态对齐是能力前提,跨模态评测需细粒度指标,视觉引用必须可追溯。

工程表达

清单:①多模态专项评测集 ②模态缺失降级 ③跨模态一致性校验 ④图/视频出处引用可追溯 ⑤服务期对齐校验。验收:缺模态不崩、引用可点开溯源。

信号与责任人:ASR/OCR 置信度分布、物体存在性/计数/空间关系细粒度指标、引用可点开率、模态缺失降级占比;任一指标越界归评测 owner,不得用「整体准确率正常」结案。

回放与预防:每条回答保留原始片段 ID 与时间戳/帧号,审阅者可点开核对;预防机制是低置信度强制澄清、引用缺失即阻断输出、以及跨模态一致性自动校验进 CI(A33.05)。

G10.03
模型退役与人在环清单
核心洞察

退役不是删除模型,而是关闭调用入口+保留回滚;人在环是高风险决策的仲裁兜底。

原理映射

对应 L03.19/S20:资产退役需标准作业,human-in-the-loop 作为最后否决权与兜底。

工程表达

清单:①退役标准作业(入口关闭+权重归档+回滚保留)②灰度切流验证 ③高风险动作强制人工确认 ④人在环审计留痕 ⑤降级路径可触发。验收:退役后无幽灵调用、人工可一键否决。

信号与责任人:退役清单五项(入口关闭、权重归档、别名解绑、回滚保留、账单停止)逐项打勾,任一项未完成即视为「幽灵服务」;审批等待时长与超时拒绝率归平台 owner。

回放与预防:退役动作全部进审计并可回放「谁在何时关闭了哪个别名」;预防机制是别名映射设 TTL 与到期复核、高风险动作强制人在环、超时默认拒绝而非放行(A33.09)。

G11 组织治理与架构决策清单

覆盖 MTTR / 事故复盘、技术债与架构评审门禁、跨团队推动与团队赋能三项组织治理清单;把岗位要求里的技术领导力落成可验收条目,与 L02.15、G02、G07 组衔接。

G11.01
MTTR 与事故复盘 SOP:从信号到根因到预防机制
核心洞察

MTTR 不是「修得快」,而是「发现、定位、止损、恢复、验证」五段各自可测量。多数团队只优化定位段,结果告警延迟与验证缺失仍占去大半时长。复盘的价值也不在写报告,而在产出能阻断同类事故再次发生的机制。

原理映射

对应 M05.05(技术债)与 G02 组(排障证据链):把事故当作系统缺陷的输出,而非个人失误;SOP 的每一步都要有可观测信号与责任人,且与发布、容量、演练三条既有链路打通。

工程表达

SOP 清单:①发现(MTTD:告警覆盖核心 SLO,缺失即列为 P0 缺陷);②定位(保留故障窗口的 trace / 日志 / 变更单 / 配置版本,先做变更关联);③止损(优先降级、限流、回滚,禁止在故障中排查式改代码);④恢复(按 runbook 验证业务指标而非仅看进程存活);⑤复盘(72 小时内出时间线、根因、 contributing factors、预防项)。

预防项必须可验收:每条动作写成「检测 / 阻断 / 演练」三类之一并带 owner 与截止日,例如「发布单强制关联 change_id」「单元切流演练每季度一次」「慢查询基线进 CI」。禁止以「加强意识」「后续关注」结案。

度量四项:MTTD、MTTF 定位段、MTTR 总时长、同类事故 90 天复发率;复盘报告里必须给出这四项的本期值与趋势,否则无法判断改进是否生效。

验收:任取一次历史事故,能在 10 分钟内从告警反查到当时全部版本与变更单;每条预防项都能在门禁或演练记录里找到对应证据。

向下回指:G02.02 / G02.08 / K02.01 / M05.05 / C10.33 / C10.32。本卡定度量口径与结案标准;日志与 Trace 的字段注入、告警可达性、演练制度由所引卡各自负责,验收时须能对一次历史事故逐项指出证据落在哪条流水线记录里。

G11.02
技术债治理与架构评审门禁:让「为什么这样设计」可查
核心洞察

技术债最贵的形态不是坏代码,而是决策留痕缺失:没人记得当初为什么选这个边界、为什么允许这个例外,于是每次改动都只能靠猜,重构变成高风险动作。架构评审的目标是把取舍固化成可查询的决策记录(ADR)与可执行的约束。

原理映射

对应 L02.15(决策表达)与 G07 组(AI 制品门禁):评审不是一次性会议,而是「提案 → 取舍记录 → 约束落进平台默认配置 → 定期复审」的闭环;能被平台自动校验的约束不要靠人记。

工程表达

ADR 最小字段:decision_id / context / options / tradeoff / decision / owner / review_date / superseded_by。涉及一致性边界、数据所有权、模型别名、隔离级别、成本预算的变更必须建 ADR,并在 PR 描述里引用 decision_id。

门禁化清单:①分层依赖与禁用 API 由静态检查阻断;②跨服务同步调用链跳数超阈值告警;③新增外部依赖需许可证与漏洞扫描;④AI 生成代码标注来源并过同等审查;⑤例外需登记有效期与回收责任人(平台自动到期回收)。

技术债台账按「影响面 × 复发频率 × 修复成本」排序,每季度挑 Top N 进迭代,禁止无限累积;对已偿还项记录前后指标(变更失败率、P95、评审耗时),避免「重构完说不清收益」。

验收:随机抽 5 个近季度架构决策,均能找到 ADR、对应约束在平台配置或 CI 规则中的落点、以及最近一次复审记录。

向下回指:M05.05 / G07.09 / K07.01 / L02.15 / C10.34 / A33.03。本卡定台账排序与回收责任;临时豁免、评测门禁、变更规范由所引卡各自负责,判据是每条已偿还债务都能给出前后指标对比,只有「重构完成」的结论不算数。

G11.03
跨团队推动与团队赋能清单:把个人经验变成组织默认路径
核心洞察

2026 年专家 / 架构师岗位反复要求「制定并推行编码规范、架构原则与技术标准」「跨团队推动落地」。这类能力无法靠一份规范文档体现,要靠推动路径、采用证据与反馈闭环:谁被影响、怎样降低对方的接入成本、用什么数据证明有效。

原理映射

对应 L02.15 与平台工程(C10.34):推动的杠杆是「让正确做法成为默认路径」,而不是增加审批;赋能的产出是可复用资产(模板、门禁、runbook、演练脚本),不是一次分享会。

工程表达

推动清单:①列出干系团队与各自成本(改造量、停机窗口、学习成本);②给出最小可行接入路径与迁移期双轨方案;③提供自助模板与自动校验,减少对方理解负担;④设试点团队先跑通并公开指标;⑤按采用率与例外率反馈修正默认路径;⑥保留受控例外与回收机制。

赋能资产四项:服务模板(内置可观测 / 限流 / 成本标签)、门禁规则库、事故 runbook 与演练脚本、决策记录(ADR)模板。每项带 owner、版本与更新节奏,避免文档上线即腐烂。

度量:新服务首次上线前置时间、平台默认模板覆盖率、门禁例外数与回收时长、跨团队规范一致性抽检通过率;季度评审时若例外持续上升,先改默认路径而非加强考核。

验收:任取一项跨团队规范,能指出它在哪个平台默认配置里生效、哪些团队已接入、例外如何登记与回收、以及最近一次按反馈做的调整。

向下回指:L02.15 / G07.09 / A26.02 / A33.03 / C10.34 / G11.01。本卡定规范如何变成平台默认;决策记录、团队采纳、准入红线由所引卡各自负责,判据是例外数上升时先改默认路径,而不是把达标压力转给考核。

G12 资产台账与生命周期

覆盖服务、依赖、配置、凭证、模型数据、制品与退役七类资产的登记与闭环;把「谁在管、当前是什么状态、什么时候下线」变成可查询的事实,与 G01 变更门禁、G07 制品门禁及 G11 的组织治理衔接。

G12.01
资产台账:什么算资产、谁来负责
核心洞察

没有台账时,「这个服务谁在管」只能靠记忆回答。资产台账的价值不在列全,而在每个条目都有唯一责任人和可被查询的状态;没有责任人的条目比缺失更危险。

原理映射

对应 G11 的组织治理与 M16.08 依赖识别:资产是依赖图的节点,责任人决定故障时的首响路径。台账与监控、发布系统对齐,才能避免纸上有一套、线上跑另一套。

工程表达

台账字段最少包含:名称、类型、责任人、环境、依赖、状态、退役日期。

用发布与监控系统反向核对台账,出现「线上有、台账无」列为待补缺陷。

责任人变更走交接流程,禁止直接改字段而不交接值班与 runbook。

G12.02
依赖清单与 SBOM:供应链可见性
核心洞察

出安全通告时最费时的不是修,而是确认「我们到底用没用、用在哪」。依赖清单把这个问题从全库排查变成一次查询,前提是它随每次构建自动产出而非人工维护。

原理映射

对应 G07 AI 制品门禁与 G12.01 台账:清单必须绑定到具体制品版本,泛泛的「项目依赖表」无法回答某个线上镜像里含不含某个包。

工程表达

每次构建产出 SBOM 并与镜像摘要一起入库,禁止发布无清单的制品。

清单覆盖直接依赖与传递依赖,包含版本与来源,能按包名反查制品。

安全通告触发时按制品维度查询,命中后能定位到部署实例与责任人。

G12.03
配置资产与漂移治理
核心洞察

配置漂移的可怕之处在于它不产生报错,只让同一份代码在不同环境表现不同。靠人工比对配置文件的治理方式,几乎必然在几次紧急变更后失效。

原理映射

对应 G01 变更门禁与 G02 证据链:把配置当成受版本控制的资产,变更可追溯、当前值可实测。声明值与运行值的差异本身就是一条告警。

工程表达

配置统一存放并版本化,禁止登录实例手工改值后不回写。

定期采集运行态配置并与声明值比对,差异进入变更工单而非直接修正。

敏感项只存引用不存明文,轮换时同步更新引用并留下变更记录。

G12.04
密钥与凭证资产:生命周期闭环
核心洞察

密钥最常见的失效不是被破解,而是过期无人知晓、离职后仍可用、或散落在脚本与环境变量里无法清点。治理目标是任何凭证都能回答「谁在用、何时轮换、怎么吊销」。

原理映射

对应 M13 安全与 G12.03 配置治理:凭证要集中托管、按使用方授权、可即时吊销。把轮换做成常态演练,才不会在到期日变成线上事故。

工程表达

凭证集中托管,应用只持有短期票据,禁止把长期密钥写进镜像或仓库。

按使用方登记用途与轮换周期,过期前自动提醒并在到期后阻断。

每半年做一次吊销演练,验证「撤掉一把凭证」不会连带打挂无关服务。

G12.05
模型与数据资产:版本、血缘与留存
核心洞察

模型和数据不像代码那样有清晰的 diff,一次重训或一次回填就可能改变线上行为却留不下可回放的依据。把它们当资产管,核心是版本与血缘可追溯。

原理映射

对应 G07 评测门禁与 K12 模型事故:出问题时要能回答「当时用的是哪版权重、哪批数据、什么预处理」。答不出,就只能靠重新训练碰运气。

工程表达

每次上线绑定权重版本、数据快照标识与特征处理代码版本,三者缺一不放行。

数据回填记录来源、时间窗与执行人,保留回滚到上一快照的能力。

按合规要求设定留存期限,到期归档或删除并留下可审计记录。

G12.06
制品仓库与版本:可复现的最小单元
核心洞察

「本地能跑、线上不可复现」的根源通常是制品没有唯一身份。同一标签被覆盖、构建环境未锁定,都会让版本变成一个不可信的名字。

原理映射

对应 C18 构建制品治理与 G12.02 SBOM:制品应由内容摘要标识,构建输入与工具链版本一并记录。这样回滚才是切回一个确定的二进制,而不是重新构建一次。

工程表达

标签禁止覆盖,发布以不可变摘要为准,回滚按摘要而非按时间猜。

构建记录包含源码提交、依赖锁、工具链版本与构建参数,随制品入库。

仓库按环境设晋级路径,禁止把测试阶段制品直接标记为生产可用。

G12.07
退役与归档:让资产有终点
核心洞察

只增不减的资产清单会慢慢失去可信度:僵尸服务、废弃域名、无人认领的队列混在其中,故障时反而干扰判断。退役是资产管理闭环的最后一环。

原理映射

对应 M16.07 风险登记与 G12.01 台账:退役要有判据和观察期。先停流量、观察依赖是否真的归零、再删资源,比直接删除安全得多,也比长期挂着更安全。

工程表达

退役前先摘流量并设观察期,期间监控调用量,非零即回退并查漏。

归档保留配置、契约与最后一次可运行制品,满足审计与追溯即可,不保留常驻实例。

退役完成后同步台账、监控、文档与值班表,避免留下指向已删资源的链接。

G13 测试工程化与质量门禁

覆盖测试分层、契约回放、故障注入、容量回归、数据治理、偶发失败治理与放行判据七项;把「测试通过」从一句口头结论变成可查询的证据集合,与 G02 证据链、G03 容量预算、G13 之前的评测门禁衔接。

G13.01
测试分层:把验证成本放在最便宜的一层
核心洞察

所有问题都端到端测一遍,反馈慢且定位难;只在单元层测,又抓不到契约与部署差异。分层的作用是让每类缺陷在最便宜、最靠近成因的那一层被拦住。

原理映射

对应 G02 排障证据链与 M16.09 可验证产物:越靠近底层的测试越确定、越便宜,越靠近真实环境越贵但越能发现集成问题。投入应随风险分布,而非平均分配。

工程表达

按缺陷类型反推层次:纯逻辑进单元,边界与契约进集成,跨服务链路留少量端到端。

端到端用例控制在关键主链路,禁止把参数组合穷举搬到这一层。

用逃逸缺陷统计反推分层是否失衡,哪层漏得多就补在哪层。

G13.02
契约测试:让服务各自独立演进
核心洞察

集成环境里才发现的字段不兼容,修复代价最高。契约测试把「双方对格式的假设」提前到各自构建里验证,让消费方与提供方不必同批发布。

原理映射

对应 C18 IDL 契约与 M16.15 责任边界:契约由消费方描述实际需求,提供方校验自己仍满足。这样契约是需求的可执行表达,不是提供方单方面写的说明。

工程表达

由消费方生成契约用例,提供方在流水线中回放,失败即阻断发布。

契约覆盖字段名、类型、可空性、枚举与错误码,不覆盖实现细节。

不兼容变更先加兼容期与双写,契约全绿后再下线旧字段。

G13.03
故障注入与混沌:验证预案而不是验证运气
核心洞察

没被演练过的降级策略,不能算可用。故障注入的目的不是制造混乱,而是用受控手段检验「监控能否发现、预案是否生效、恢复是否可验证」。

原理映射

对应 G02 排障证据链与 K11 边界事故:只在稳态压测里验证过的系统,无法回答依赖超时或网络分区时会怎样。注入要限定爆炸半径并预设终止条件。

工程表达

注入前写明假设、观测指标与一键终止条件,任一指标越界立即停止。

从单实例、单依赖开始,逐步扩大范围,每次复盘预案的实际表现。

把演练中失效的预案转成门禁或自动化动作,不再依赖人工临场判断。

G13.04
压测基线与容量回归
核心洞察

一次压测通过不代表下次发布还成立。容量是随代码与数据漂移的属性,缺少基线与回归,扩容配置往往在流量涨上来之后才被补。

原理映射

对应 G03 容量预算与 C18 内存成本模型:用固定场景、固定数据集、可比对指标建立基线,把「这次比上次慢多少」变成可判定的门禁项。

工程表达

固定压测场景与数据规模,记录吞吐、P99、资源占用的基线值。

每次发布前跑同一场景,指标超阈值即阻断并要求说明原因。

压测环境资源配置与生产保持可比,否则结论只对该环境有效。

G13.05
测试数据治理:可复现、可隔离、可清理
核心洞察

测试数据最容易出现两类问题:用了生产敏感数据带来合规风险,或数据被用例互相污染导致结果随机。两者都会让测试结论失去可信度。

原理映射

对应 G12.05 数据资产与 M13 安全:数据要脱敏、要有生成规则、要有生命周期。用例之间隔离,失败时能按固定种子重放,定位才不靠碰运气。

工程表达

用合成数据或脱敏快照,禁止把生产明文数据直接导入测试库。

每个用例自带数据准备与清理,或按租户隔离,避免执行顺序影响结果。

固定随机种子并保留生成脚本,失败用例可在本地按同样数据重放。

G13.06
Flaky 治理:把偶发失败当缺陷处理
核心洞察

偶发失败一旦被默许为「重跑就好」,流水线就会逐渐失去拦截能力。它要么暴露真实的并发与时序问题,要么暴露测试自身的不确定性,两者都值得修。

原理映射

对应 G02 证据链与 M16.18 复盘:把重跑次数当作质量指标。允许重跑等于允许未知,长此以往真实缺陷也会被顺手重跑掉。

工程表达

给用例标记重跑率,超过阈值自动隔离并建缺陷单,不留在主流水线里反复污染。

优先排查共享状态、隐式时间依赖、异步等待与外部服务未打桩。

修复后连续多次无失败才恢复,恢复记录写明根因而非「已稳定」。

G13.07
质量门禁:放行判据要可查询
核心洞察

「测试通过」如果只是一句口头结论,就无法在事故后回答当时到底验了什么。门禁的价值是把放行条件写成可查询的证据集合。

原理映射

对应 G01 变更门禁与 M16.01 验收判据:每项门禁对应一个具体风险,且结果可追溯。门禁太多会被绕过,太少会漏,按历史逃逸缺陷调整比按清单数量调整更靠谱。

工程表达

放行条件固定为:静态检查、测试分层通过率、契约回放、容量回归、制品清单齐备。

每次发布归档门禁结果链接,事故复盘时能直接查到当时哪项通过、哪项被豁免。

豁免须写明理由、范围与到期时间,到期自动失效,禁止永久豁免。