跳到正文

目录

LikeC4:用代码绘制永远最新的架构图

核心判断

LikeC4 解决的是一个所有技术团队都会遇到的痛点:架构图永远是过时的。 你在 Confluence 里找到的那张系统架构图,大概率是三个月前某个人用 Draw.io 画的,之后系统已经变了五次。

LikeC4 的核心判断是:架构图不应该是一个手工维护的产物,而应该是从代码中生成的、永远与实际同步的实时视图。它用一种专门的 DSL(Domain Specific Language)来描述架构,然后自动生成可视化图表。

它是什么

LikeC4 是一个架构建模语言加工具链,灵感来自 C4 ModelStructurizr DSL,但在两者基础上增加了灵活性:

  • 自定义表示法:你可以定义自己的元素类型和样式,不限于 C4 的 Person/System/Container/Component 四层
  • 任意嵌套层级:不限于 C4 的四级层次结构,可以按需嵌套
  • 代码驱动:架构描述以纯文本形式存储,可以纳入 Git 版本控制

这意味着 LikeC4 不是 C4 Model 的严格实现,而是一个"C4 风格但更灵活"的架构建模工具。

工作方式

写 LikeC4 源码

LikeC4 用自己的 DSL 描述架构。你可以定义元素、关系、视图:

model {
  user = person '用户'
  frontend = container '前端应用' {
    style {
      shape component
    }
  }
  backend = container '后端 API'
  database = container '数据库' {
    technology 'PostgreSQL'
  }
  
  user -> frontend '使用'
  frontend -> backend 'API 调用'
  backend -> database '读写'
}

实时预览

运行 CLI 工具启动本地预览服务器:

npx likec4 start

这会启动一个本地 Web 服务器,渲染出架构图。每次你修改 DSL 源码,图表实时更新——不需要导出、不需要截图、不需要手动同步。

VS Code 集成

LikeC4 提供了官方 VS Code 扩展,支持语法高亮、自动补全和实时预览。对于 JetBrains 用户也有 Open VSX 版本。

与其他架构图工具的对比

工具方式版本控制实时同步自定义度
Draw.io / Lucidchart手动拖拽困难不支持高(但无约束)
PlantUML代码生成图支持需重新生成
Structurizr DSL代码生成图支持需重新生成低(严格 C4)
LikeC4代码生成图 + 实时预览支持支持高(可自定义表示法)

LikeC4 的差异化在于三个维度同时满足:代码可版本控制 + 实时预览不重新生成 + 高自定义度不被 C4 框架限制

适用场景

微服务架构治理

当你的系统从 3 个服务增长到 30 个服务时,用 LikeC4 描述每个服务的边界、依赖和数据流。新成员加入团队时,npx likec4 start 就能看到完整的系统地图。

技术决策记录

架构变更可以通过 LikeC4 DSL 的 Git diff 来追踪——谁在什么时候改了什么依赖关系,一目了然。这比翻 Confluence 历史版本可靠得多。

架构评审

在架构评审会议中,LikeC4 的实时预览让讨论更高效——“如果我们在这里加一个缓存层?“直接改 DSL,所有人立刻看到效果。

快速上手

模板项目

最快的方式是使用官方模板:

# 克隆模板
gh repo create my-architecture --template likec4/template

# 或直接在 StackBlitz 中试用
# https://stackblitz.com/~/github.com/likec4/template

教程

LikeC4 官方提供了交互式 Tutorial,可以在浏览器中跟随引导完成第一个架构模型。

NPM 安装

npm install likec4

适用边界

适合

  • 中大型系统的架构文档化和持续维护
  • 微服务/分布式系统的依赖关系可视化
  • 需要将架构图纳入版本控制的团队
  • 频繁进行架构变更并需要实时讨论的场景

不适合

  • 只需要画一次性图表的简单项目(Draw.io 更快)
  • 需要自由绘制非标准图形的场景(LikeC4 的 表示法 有结构约束)
  • 团队对 DSL 学习成本敏感的场景

阅读路径

参与讨论

使用 GitHub 登录。欢迎补充事实、异议与实践。