架构变更请求:C4模型的Pull Request - Archyl Blog

架构在不断演进。现在它可以像代码一样以严谨的方式演进。我们推出了架构变更请求——一种用于提议、审查和合并C4模型变更的Pull Request工作流。

架构变更请求:C4模型的Pull Request

上个月,我顾问的一个团队中有一位工程师重命名了架构图上的核心服务。没有讨论,没有审查。变更立即生效,三个团队在接下来的站会上花了好长时间困惑——到底是实际服务被重命名了还是只是图表上的变动。实际上并没有改名。只是有人觉得标签不够清楚就"修复"了。

那次事件让我们一直在思考的事情变得清晰了。代码有Pull Request。基础设施有plan/apply。数据库模式有迁移。但架构图呢?任何有编辑权限的人可以随时更改任何内容,团队其他成员……迟早会发现。

今天我们改变了这一点。架构变更请求将Pull Request工作流带入你的C4模型。

工作原理

这个概念故意设计得很熟悉。如果你曾在GitHub上创建过Pull Request,你就已经知道这是怎么回事了。

首先创建一个变更请求。给它一个标题,描述你在提议什么以及为什么。然后添加你的变更——创建新系统、更新现有容器、删除未使用的组件、修改关系。每个变更都是一个独立的操作:对特定C4元素的创建、更新或删除。

变更请求以草稿状态开始。你可以持续添加和完善变更,直到准备就绪。当提案完成后,你开启它以供审查。

你的队友在项目的变更请求列表中看到已开启的请求。他们可以审查每个提议的变更,查看确切的创建、修改或删除内容。他们留下审查意见:批准、请求修改或评论。一旦达到所需的批准数量,请求就可以被合并——将所有变更作为一个原子操作应用到实时C4模型中。

可视化预览

我们不想要一个看起来像JSON块的差异视图。架构是可视化的,审查架构变更也应该是可视化的。

每个变更请求都包含图表的实时预览。预览渲染当前C4模型,并叠加所有提议的变更。新元素以绿色高亮显示。修改的元素有琥珀色环。删除的元素显示红色指示器。你可以在C4层级中导航——系统、容器、组件、代码——在每个深度查看提案的完整影响。

这是你用于实时图表的同一个交互式React Flow画布,具有相同的钻取、缩放和平移功能。唯一的区别是数据:它是合并后架构将会呈现的计算投影。

审查流程

审查遵循简单明了的模型。审查者可以:

  • 批准 — "看起来不错,准备好就合并。"
  • 请求修改 — "我有顾虑,合并前让我们讨论一下。"
  • 评论 — "没有异议,但这里是一些背景信息。"

每次审查都包含自由文本正文用于详细反馈。变更请求根据项目要求的阈值跟踪批准数量。默认情况下需要一次批准,但你可以按项目配置——小团队可以设为零批准实现轻量级跟踪,大型组织可以设为两次或三次以满足正式签核需求。

仅请求模式

对于想要更进一步的团队,我们在项目设置中添加了仅请求模式。启用后,对C4模型的直接编辑将被锁定。修改架构的唯一方式是通过变更请求。

这并不意味着图表变成只读的。你仍然可以导航、探索、将ADR和文档链接到元素、添加评论。只是你无法在不经过变更请求工作流的情况下移动、重命名、创建或删除元素。

我们为架构治理很重要的组织构建了这个功能——受监管行业、大型工程团队、管理共享基础设施的平台团队。架构成为受控制的产物,每个变更都可追溯和审查。

活动跟踪

每个变更请求的生命周期事件都会显示在项目的活动标签页中。当请求被开启、关闭、重新开启或合并时,会记录一条历史条目,包含作者、时间戳和请求标题。这为你提供了架构演进的时间线——不仅是今天的样子,还有塑造它的一系列提案和决策。

结合ADR和文档链接,你获得了完整的叙事:什么改变了(变更请求)、为什么改变(ADR)、以及它如何融入更广泛的上下文(文档)。

构建变更

变更构建器让你逐个元素地构建提案。对于每个变更,你需要指定:

  • 操作:创建、更新或删除
  • 元素类型:系统、容器、组件、代码元素、关系或覆盖层
  • 元素数据:元素的完整规范——名称、描述、技术、类型以及你直接创建时会设置的所有字段

对于更新,系统会捕获当前状态和提议状态,以便审查者看到确切的变更内容。对于删除,现有元素数据会保留在请求中以供参考。

你可以自由混合操作。一个变更请求可能创建两个新容器、更新一个关系、删除一个过时的组件。合并时,所有变更一起应用。

这对团队意味着什么

架构变更请求不是为了增加官僚主义。它们是为了让架构演进变得有意识。

在代码库中,Pull Request不仅仅是一个关卡——它是一个沟通工具。它说"这是我的提案,这是原因,你怎么看?"它为知识分享、提早发现错误、建立共同理解创造了自然的时机。

架构值得同样的对待。当有人提议添加新服务时,这是一个值得在它出现在图表上之前进行的对话。当有人想重组组件层次结构时,团队应该在它成为新现实之前看到全貌。

变更请求就是那个对话,变得结构化和可追溯。

开始使用

架构变更请求现已在所有团队计划中可用。导航到任何项目,你会在侧边栏中找到"请求"部分。创建你的第一个请求,添加一些变更,然后开启它以供审查。

如果你想强制执行工作流,请在项目设置中启用仅请求模式。配置所需的批准数量以匹配你团队的治理需求。

你的架构是团队的决策。现在你的工具让这一点变得明确。


想了解更多关于协作架构的内容?阅读C4图的实时协作,或了解架构决策记录如何通过记录每次架构演进背后的"为什么"来补充变更请求。