1. ADR(Architecture Decision Record)的核心结构中标题、状态、上下文、决策、后果五部分如何编写?为什么 ADR 是不可变(immutable)的?
ADR(架构决策记录)作为记录已做出架构决策的文档,其标题、状态、上下文、决策、后果五部分应如何编写?为什么 ADR 一旦发布就不可修改(immutable)?
- 理解 ADR 五要素各自的内容与写作原则
- 理解"不可变"与"状态流转"的关系,真正可变的只有状态字段
- 理解 ADR 与普通笔记/文档的本质区别
ADR 的五部分作用如下:标题应该是一句话说明决策(动词式,如"使用 PostgreSQL 作为主存储"),方便在索引中快速识别;状态表示该决策当前所处的生命周期阶段(如 Accepted、Deprecated);上下文描述触发决策的背景、约束、问题与可选方案,是决策的"为什么";决策记录最终选定的方案及理由,并说明为什么其他方案被否决;后果记录该决策带来的正面影响与负面影响,包括后续要承担的技术债。ADR 不可变的根本原因是它是一份"历史审计记录":决策做出时的背景、备选方案和权衡是当时的事实,事后修改会破坏决策的可追溯性,让后人无法还原当时的决策语境。因此,对决策的任何改变不作为"修改原 ADR"处理,而是新建一条 ADR(记录新决策)并把旧 ADR 的状态标记为 Superseded 或 Deprecated,通过链接指向新 ADR。
ADR 的价值在于"记录历史"而非"记录当前状态"。如果允许原地修改,ADR 就退化为普通文档,无法回答"当时为什么这么选、当时有哪些备选"这类问题。把决策演化建模为"新增记录 + 状态迁移"是事件溯源思想的体现,符合架构决策的审计与复盘需求。