1.4 架构决策记录

记录架构决策的最有效方式之一是通过架构决策记录(ADR;https://adr.github.io)。ADR源自Michael Nygard的一篇博客(https://oreil.ly/yDcU2),后来被Thoughtworks Technology Radar(https://oreil.ly/0nwHw)评定为“采纳”。一份ADR由一个简短的文本文件构成(通常只有一两页长),描述一个具体的架构决策。虽然ADR可以使用纯文本编写,但人们通常会使用文本文档格式,例如AsciiDoc(http://asciidoc.org)或Markdown(https://www.markdownguide.org)。ADR也可以使用wiki页面模板来编写。在Fundamentals of Software Architecture(O'Reilly)一书中,我们用整整一章来介绍ADR。

我们将使用ADR来记录本书中的各种架构决策。对于每一个架构决策,我们将使用如下的ADR格式:

ADR:包含架构决策的简短名词短语

上下文(context)

在该部分,我们会加一两句话来描述它所要解决的问题,并罗列可选的解决方案。

决策(decision)

我们将在这里详述架构决策,并解释为什么这样做。

后果(consequence)

该部分会列举采用这个架构决策后产生的影响,并讨论为此考虑的权衡。

对架构师来说,记录决策是重要的,但保证决策被正确地执行则更加重要。幸运的是,现代工程实践使得我们可以通过架构适应度函数(architecture fitness function)来自动化很多常见的治理问题。