单一事实来源:组织级别系统——定义一次,处处使用

以下是每个达到一定规模的组织都会出现的模式。团队 A 记录他们的架构。他们添加了一个认证服务的方框——名称、描述、技术栈。团队 B 在他们的项目中做了同样的事情。团队 C 也是如此。三个项目,三个对同一系统的独立定义,每个都略有不同。一个叫"Auth Service",另一个叫"Authentication Platform",第三个叫"Identity Provider"。同一个系统。三个名称。三段强调不同内容的描述。它们之间毫无联系。

六个月后,认证团队重命名了服务并更新了技术栈。这个变更传播到了三个图表中的零个。每个项目的版本悄然地与实际系统以及彼此产生了偏差。

这就是一致性问题。它不是来自疏忽。它来自将每个项目视为孤岛的架构工具。如果表示一个系统的唯一方式是在项目内部创建它,那么接触该系统的每个项目都会得到自己的副本。副本会漂移。这就是副本的本性。

我们构建了组织级别系统来解决这个问题。

属于组织而非项目的系统

Archyl 现在支持两种 C4 系统作用域。项目作用域系统的工作方式与以前完全相同——它们属于单个项目,显示在该项目的图表上。组织作用域系统属于你的组织。它们独立于任何项目存在,任何项目都可以链接到它们。

这个区分很重要,因为它反映了真实架构的工作方式。有些系统是项目内部的——仅存在于该有界上下文中的微服务、仅服务于单个应用程序的数据库。这些属于项目。但许多系统跨越项目边界——共享基础设施、平台服务、第三方集成、多个团队依赖的核心业务能力。这些属于组织。

当你创建一个组织级别系统时,你在声明:这个系统是共享的现实。它的名称、描述、技术和标签只定义一次。每个引用它的项目都看到相同的定义。

工作原理

创建组织系统

组织系统从平台的专门区域创建。你以与在项目中相同的方式定义系统——名称、描述、类型(软件系统、外部系统或人员)、技术和标签。区别在于它不绑定到任何项目。它存在于组织级别,对每个团队可见。

将系统链接到项目

当你在项目图表上工作并想引用一个组织系统时,你链接它。一个模态框显示所有可用的组织系统并支持搜索。切换你需要的——它们会立即出现在你的图表上。

链接的系统在图表上的行为与原生系统相同。你可以将它们定位在对该项目布局有意义的任何位置。你可以创建与它们之间的关系。你可以深入它们的容器和组件。唯一的区别是系统的核心身份——名称、描述、技术——来自组织定义,而非项目。

每个项目为链接的系统存储自己的位置,因此同一个系统可以在不同的图表上处于不同的位置。布局是按项目的。定义是共享的。

取消链接

如果一个项目不再依赖某个共享系统,取消链接即可。系统从该项目的图表中消失,但继续存在于组织级别以及引用它的每个其他项目中。不会丢失数据。不会影响其他团队。

为什么这很重要

无需协调的一致性

保持架构文档一致的传统方法是流程。你编写命名规范。你召开评审会议。你要求人们检查其他团队如何命名同一个系统。流程在不起作用之前一直起作用——通常是在某人赶时间的时刻,而这是大多数时刻。

组织级别系统使一致性成为结构性的。只有一个定义。项目引用它。当有人更新系统的描述或技术栈时,链接到它的每个项目都会自动反映变化。不需要 Slack 消息。不需要"请更新你的图表"。架构保持一致,因为架构模型强制执行了这一点。

准确的跨项目依赖

当多个项目链接到同一个组织系统时,平台了解这些连接。这不是视觉惯例——而是数据关系。影响雷达可以通过组织系统跨项目边界追踪依赖。如果你分析更改共享平台服务的影响,你会看到每个依赖它的项目,因为它们都链接到同一个系统,而不是维护独立的副本。

入职和发现

加入项目的新团队成员看到的系统名称、描述和技术标签与其他每个项目使用的相同。不会有"这是哪个认证服务?"的困惑。组织系统携带着自己的身份,而这个身份在任何地方都是相同的。

减少重复

除了一致性的好处,组织系统简单地减少了工作量。不用每个项目独立记录相同的基础设施——消息代理、API 网关、身份提供商、监控栈——你只需定义一次。项目在几秒钟内链接它们。花在用略有不同的标签重新创建相同方框上的时间降为零。

数据模型中的变化

底层,C4 系统实体现在支持两个互斥的作用域。系统属于项目或组织——不能同时属于两者,也不能两者都不属于。这在数据库级别通过约束强制执行。

一个单独的链接表跟踪哪些项目引用了哪些组织系统,以及图表上的项目级位置。这意味着同一个系统可以出现在十个不同的项目图表上,每个位置不同,每个都有自己的与项目本地元素的关系集。

当你加载项目的 C4 模型时,平台获取项目自身的系统和链接到它的任何组织系统。它们在图表上无缝合并。区别在 UI 中可见——组织系统带有一个微妙的指示器显示它们是共享的——但在功能上,它们以与项目系统相同的方式参与架构模型。

更大的愿景

这个功能是更广泛方向的一部分:让 Archyl 以组织实际工作的方式运作。架构不是一组独立的项目。它是共享系统、平台能力和横切关注点的网络。工具应该反映这一点。

组织级别系统是走向一个模型的第一步,在这个模型中,共享基础设施只记录一次,随处引用。结合全局架构视图的跨项目可视化和影响雷达的跨项目依赖分析,你现在拥有一个将架构理解为连接整体的平台——而不是一组断开的图表。

开始使用

组织级别系统现已可用。前往组织区域,创建你的共享系统,然后从图表视图将它们链接到任何项目中。如果你已经在多个项目中记录了同一个系统,这是你整合的机会——定义一次,到处链接,让副本退休。

你的架构有一个单一事实来源。你的文档也应该如此。


关于跨项目架构的更多信息,请参阅全局架构和实时协作。要了解共享系统的变更如何传播,试试影响雷达。对于共享系统的受治理变更,探索架构变更请求