image
4 个推荐的开源系统设计图表工具

2023年12月11日

💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

不论是在练习系统设计面试,或者是实际工作时要画系统的图表 (diagram),好用的工具都能让你更轻松地画出系统图表。开源的社群中有几款让人非常推荐的系统图表工具,在这篇文章中,我们精选了四个最推荐的给大家。

在四个推荐的系统设计图表工具中,我们进一步分成两类,一类是推荐在面试中使用,分别是 Excalidrawtldraw,这两个工具是让你可以直接用滑鼠来拉出系统设计图,就像你用手绘一样,只是变成数位版本的。在实际面试时,几乎都会是这种线上直接手绘,所以这两个工具特别适合在练习面试时用。

另一类则是推荐在工作的时候使用,分别是 DiagramsMermaid。这两类图都需要输入一些流程的代码,所以在系统设计面试时可能没办法直接用。但是在实际工作中,用这两个工具画出来的图清楚又好看,目前社群中有不少人使用。

Excalidraw

Excalidraw 在 GitHub 上有超过 5 万个星星,是个非常热门的开源数位白板 (开源专案网址官方网站)。

它的特点是你可以直接开启它的网站,然后就能直接开始画系统设计图,如果是产品经理,也可以用来画流程图、产品概念图 (mockup)。知名的技术 YouTuber Theo 很常在讲解某个技术时,边讲边画图,他用的就是 Excalidraw。

知名的技术 YouTuber Theo 使用 Excalidraw
知名的技术 YouTuber Theo 使用 Excalidraw

tldraw

tldraw 在 GitHub 上有超过两万五千个星星 (开源专案网址官方网站)。

在基本操作上,跟 Excalidraw 很相似。但 tldraw 最近在社群中爆红,主要原因是整合了 GPT 推出具有 AI 生成能力的 make real 功能。make real 会读取你手绘的内容,然后透过 GPT 的能力,把手绘的转成具功能的元件。在社群中许多人测试后,效果都非常好。假如你想玩玩 make real 版本,可以直接上这个网址

tldraw make real 画面
tldraw make real 画面
圖片來源:https://github.com/tldraw/make-real

Diagrams

Diagrams 是个非常酷的开源专案,GitHub 上面超过 3 万个星星 (开源专案网址官方网站)。

Diagrams 让你在画系统设计图时,可以直接使用各类元件的图像,例如你要在系统设计中加入 Nginx 当反向代理时,你可以直接使用

from diagrams.onprem.network
import Nginx

然后

ingress = Nginx("ingress")

假如在系统中使用 Redis ,你可以直接引入

from diagrams.onprem.inmemory
import Redis

然后

 primary = Redis("session")

然后就能够画出下面这张美图

Diagrams 画出的系统设计图
Diagrams 画出的系统设计图
圖片來源:Diagrams

目前 Diagrams 支援了各类常见的元件,也涵盖了各大云端厂商的,例如大家熟知的 AWS 与 GCP 等;同时也开放自订义的元件,让你可以去创造自己常用的元件,放到你的系统设计中。

Mermaid

Mermaid 是一款让你可以输入流程的代码后,会直接帮你转换成系统设计图表的开源工具 (开源专案网址官方网站)。

举例来说,以下的流程代码,可以产出下面的这张图

sequenceDiagram
    Alice->>John: Hello John, how are you?
    John-->>Alice: Great!
    Alice-)John: See you later!
Mermaid 画出的系统设计图
Mermaid 画出的系统设计图
圖片來源:Mermaid

Mermaid 也预先定义好常见的系统元件,例如想在系统中加入资料库,可以直接用 [(Database)] 就会生出资料库的图。Mermaid 有做一个让你可以在线上直接玩的页面 (网址点这边),推荐给有兴趣的人。

总结

以上四个开源工具,前两个推荐大家在系统设计面试用另外两个推荐在工作实际要绘制系统设计图时用。如果大家有其他推荐的开源系统设计相关工具,也欢迎让我们知道,可以直接在我们的 FacebookInstagram 上留言或私讯我们 🙂

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們