Mermaid vs PlantUML vs Graphviz
세 가지 텍스트-투-다이어그램 도구, 세 가지 서로 다른 용도. Mermaid는 간결하고 브라우저에서 렌더링되며, PlantUML은 UML에 가장 깊이 있고, Graphviz는 큰 그래프를 배치합니다. 실제로 어떻게 다른지 살펴봅니다.
⚠️ 고지: 저희는 무료 Mermaid 편집기를 만듭니다. 아래 기준 — 문법, 다이어그램 종류, 각각의 렌더링 방식, GitHub 지원 — 은 객관적이며, 무엇이든 각 프로젝트의 공식 문서와 대조해 확인하시기 바랍니다.
| 도구 | 문법 스타일 | 다이어그램 종류 | 렌더링 방식 | GitHub 기본 지원 | 적합한 용도 |
|---|---|---|---|---|---|
| Mermaid | 간결한 Markdown 스타일 | 플로우차트, 시퀀스, ER, 클래스, 상태, 간트, 마인드맵, 파이 등 다수 | JavaScript — 브라우저에서 렌더링 | 예 — Markdown에서 기본 지원 | README, 위키, 노트의 docs-as-code |
| PlantUML | 장황한 DSL (@startuml … @enduml) | 가장 완전한 UML 세트와 더불어 다수의 비 UML 다이어그램 | Java — PlantUML 서버 또는 로컬 jar | 아니요 — 사전 렌더링된 이미지 필요 | 깊고 빠짐없는 UML 모델링 |
| Graphviz (DOT) | 그래프 기술 언어 (digraph { … }) | 범용 노드-엣지 그래프, 트리, 의존성 맵 | Graphviz 엔진(dot); 브라우저용 WASM 포팅 | 아니요 — 사전 렌더링된 이미지 필요 | 자동 배치되는 큰 그래프와 계층 구조 |
"GitHub 기본 지원"이란 이미지 업로드 없이 Markdown 안의 소스에서 다이어그램이 렌더링된다는 뜻입니다. PlantUML과 Graphviz는 GitHub에 표시하려면 사전 렌더링된 SVG/PNG가 필요합니다.
각각을 언제 선택할까
Mermaid를 선택하세요 다이어그램이 코드를 문서화하며 저장소 안에 함께 있어야 할 때 — README의 아키텍처 스케치, 설계 문서의 시퀀스 다이어그램, 위키의 스키마. GitHub와 GitLab에서 기본적으로 렌더링되므로 리뷰어가 인라인으로 볼 수 있고, 문법이 가벼워 노트를 작성하는 흐름 속에서 바로 쓸 수 있습니다.
PlantUML을 선택하세요 엄밀하고 완전한 UML이 필요할 때 — 상세한 클래스 계층, 컴포넌트 및 배포 다이어그램, 또는 표기법에 대한 정밀한 제어. GitHub 기본 렌더링과 간결함을 깊이와 맞바꾸게 되며, 이미지를 만들려면 PlantUML 서버(또는 jar)를 실행합니다.
Graphviz를 선택하세요 그 "다이어그램"이 실제로는 레이아웃을 손으로 배치하고 싶지 않은 큰 그래프일 때 — 의존성 그래프, 호출 그래프, 큰 상태 머신. DOT 언어와 자동 레이아웃 엔진은 수동으로 그리기엔 감당하기 어려운 수백 개의 노드를 처리합니다.
지금 바로 다이어그램을 만들려고 여기 도착하셨다면, 가장 빠른 길은 Mermaid입니다.
함께 보기: Mermaid 편집기 · UML / 클래스 · 예시 · Mermaid 임베드
자주 묻는 질문
Mermaid vs PlantUML — 어느 쪽이 더 나은가요?
어느 쪽도 무조건 더 낫지는 않으며, 서로 다른 용도를 겨냥합니다. Mermaid는 간결하고 GitHub와 GitLab의 Markdown에서 기본적으로 렌더링되어 코드 옆에 두는 문서에 이상적입니다. PlantUML은 훨씬 더 완전한 UML 기능 세트와 더 세밀한 제어를 제공하지만, Java 서버를 통해 렌더링되며 GitHub에서 기본으로 그려지지 않습니다. 빠른 docs-as-code에는 Mermaid를, 빠짐없는 UML에는 PlantUML을 선택하세요.
Mermaid가 PlantUML이 할 수 있는 모든 것을 할 수 있나요?
아니요. PlantUML은 더 많은 UML 다이어그램 종류를 다루며 더 깊은 스타일링과 레이아웃 제어를 제공합니다. Mermaid는 대부분의 팀이 일상적으로 필요로 하는 다이어그램 — 플로우차트, 시퀀스, ER, 클래스, 상태, 간트 — 을 훨씬 적은 문법으로 다룹니다. 상세한 컴포넌트나 배포 다이어그램 같은 고급 UML이 필요하다면 PlantUML이 더 멀리 갑니다.
Graphviz는 Mermaid와 같은 것인가요?
아니요. Graphviz는 DOT 언어를 사용하며 큰 노드-엣지 그래프 — 의존성 트리, 호출 그래프, 상태 머신 — 를 자동으로 배치하는 데 탁월합니다. Mermaid는 더 상위 수준이며 다이어그램 종류를 인식하고(시퀀스 다이어그램이 무엇인지 압니다), 브라우저와 GitHub에서 렌더링됩니다. 크게 생성된 그래프에는 Graphviz의 레이아웃 엔진을 능가하기 어렵고, 읽기 쉬운 문서 다이어그램에는 Mermaid가 더 빠르게 작성됩니다.
GitHub는 PlantUML이나 Graphviz를 렌더링하나요?
GitHub는 ```mermaid 펜스 블록 안의 Mermaid를 기본으로 렌더링하지만 PlantUML이나 Graphviz는 렌더링하지 않습니다. 그런 경우 해당 렌더러로 이미지(SVG 또는 PNG)를 생성한 뒤 그 이미지를 Markdown에 커밋하거나 링크합니다.
PlantUML을 Mermaid로 자동 변환할 수 있나요?
신뢰할 수 있는 원클릭 변환기는 없습니다 — 문법과 기능 세트가 다르기 때문에 깔끔한 변환은 대개 다이어그램을 손으로 다시 작성하는 것을 의미합니다. 다행히 공통 종류(시퀀스, 클래스, 상태)는 서로 가깝게 대응되므로 일상적인 다이어그램이라면 수동 재작성이 빠릅니다.