Skip to content
返回架构决策

ADR 评审流程

一个轻量门控,让 ADR 得到真正的技术审视,而非橡皮图章。

为什么

没人评审的 ADR 只是一个人 checked into git 的意见。ADR 的价值来自对决策的集体压力测试:我们考虑过失败模式吗?这和现有 ADR 冲突吗?后果对值班团队能接受吗?定义好的评审流程能抓住局部最优但全局不一致的决策。没有它,你会得到 40 条各自看着没问题、但互相矛盾(比如一致性模型)的 ADR。

何时使用

每条 Proposed ADR 在变成 Accepted 之前。预算每次 30 分钟,每周 1-2 次评审。仅对琐碎、完全可逆的决策可跳过。

如何做

1. 作者设 Status=Proposed 并请求 2 名指定评审人:
   - 一名直属团队外的高级工程师(横切视角)
   - 一名值班/运维代表(后果落在他们头上)

2. 评审人在 PR 评论里检查:
   - 备选方案和否决理由是否真实?
   - 是否和任何现有 Accepted ADR 冲突?(grep docs/adr)
   - 负面后果是否被承认且可接受?

3. 作者处理评论;评审人留明确的 "LGTM" 评论
4. 2 个批准后作者把 Status 改为 Accepted;合并 PR
5. 在每周架构同步会上记一行决策(带 ADR 链接)

示例

ADR-0013(Proposed):"服务间消息采用 Kafka"
评审人:@diana(平台)、@carlos(值班)

@diana:"Context 没提 ADR-0009 我们选了 RabbitMQ。
  为什么换?另外:谁运维 Kafka 集群?"
@carlos:"负面后果漏了告警负载——Kafka 再均衡会让消费者卡 30 秒,
  那是值班事故。"

作者更新 Context(链接 ADR-0009、解释吞吐变化),
加后果"- 再均衡期间值班可能遇到 30 秒消费者卡顿"。
两人 LGTM → Accepted。

常见问题

  • ⚠每次都指派同样两名评审人——他们变成瓶颈且失去新鲜视角;每季度轮换横切评审人。
  • ⚠只评审 Decision 句而不评审 Consequences——后果是运维痛点所在,跳过它必致未来事故。

最佳实践

  • ✓在 CI 里持续跑"ADR 冲突"检查,grep 矛盾决策(如两条 ADR 选了不同主存储)。
  • ✓评审限时 30 分钟;如果需要更多,说明决策太大,应拆成多条 ADR。
  • ✓把 Accepted 的 ADR 发到内部 wiki,让非工程师(产品、安全)能看到架构理由。

相关资源