본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

Tools

다이어그램 코드: 코드로 그리는 아키텍처 그림

작성 2026. 10. 21.추가
목차6개 항목
출처와 참고

ByteByteGo의 System Design 101 가이드 「Diagram as Code」, 「Top 6 Tools to Turn Code into Beautiful Diagrams」, 「JSON Crack: Visualize JSON Files」를 바탕으로, 각 도구의 공식 문서로 확인해 재구성한 노트다.

다이어그램 코드란

다이어그램 코드(diagram as code)는 그림을 마우스로 그리지 않고 텍스트로 선언해 도구가 렌더링하게 하는 방식이다. 코드형 인프라(IaC)가 인프라를 코드로 다루듯, 다이어그램을 코드와 같은 저장소에서 관리한다.

그림 도구로 그릴 때코드로 그릴 때
바이너리·전용 파일이라 변경 내역을 비교하기 어렵다텍스트 diff로 무엇이 바뀌었는지 리뷰한다
코드가 바뀌어도 그림은 그대로 낡는다코드와 같은 PR에서 함께 고친다
배치는 자유롭지만 손이 많이 간다배치는 도구가 자동으로 해서 빠르지만 세밀한 조정은 어렵다
디자인 도구 계정이 필요하다편집기와 렌더러만 있으면 된다

도구별 쓰임

도구입력잘 그리는 것특징
Diagrams파이썬클라우드 아키텍처AWS·Azure·GCP·쿠버네티스 등 공식 아이콘 노드를 제공한다. 주피터 노트북 안에서도 렌더링된다
Go DiagramsGo클라우드 아키텍처Diagrams를 Go로 옮긴 것. Graphviz DOT 파일을 만든다
Mermaid마크다운 비슷한 문법흐름도, 시퀀스, 클래스, ER, 간트, 상태 다이어그램GitHub·GitLab·여러 문서 도구가 코드 블록을 바로 렌더링한다(Markdown 문법)
PlantUML전용 텍스트 문법UML 전반(시퀀스, 유스케이스, 컴포넌트, 배포)가장 오래되고 표현력이 넓다. 렌더링에 서버나 자바가 필요하다
ASCII 다이어그램일반 텍스트간단한 흐름, 트리어디서나 보이고 코드 주석에도 넣을 수 있다. 손으로 그리거나 ASCII 편집기를 쓴다
Markmap마크다운 제목·목록마인드맵이미 쓴 마크다운 개요를 그대로 접고 펴는 마인드맵으로 바꾼다
JSON CrackJSON·YAML 등 데이터깊게 중첩된 데이터 구조중첩 객체를 노드 그래프로 펼쳐 읽기 어려운 API 응답·설정 파일을 훑게 해 준다

예시

Diagrams로 그린 웹 서비스 구성이다. 연산자 >>가 화살표다.

from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
 
with Diagram("Web Service", show=False):
    ELB("lb") >> [EC2("web1"), EC2("web2")] >> RDS("db")

같은 흐름을 Mermaid로 쓰면 문서 안에서 바로 보인다.

flowchart LR
  lb[Load Balancer] --> web1[Web 1]
  lb --> web2[Web 2]
  web1 --> db[(DB)]
  web2 --> db

고르는 기준

문서(README, 위키) 안에 바로 보여야 한다       → Mermaid
UML을 정식으로 그려야 한다                    → PlantUML
클라우드 아이콘이 들어간 아키텍처 그림이 필요하다 → Diagrams (Python) / Go Diagrams
코드 주석, 터미널, 어디서나 보여야 한다        → ASCII
개요를 구조로 보고 싶다                       → Markmap
데이터 구조를 이해하고 싶다                    → JSON Crack

한계

  • 자동 배치라서 노드가 많아지면 선이 엉키고, 원하는 위치를 정확히 지정하기 어렵다. 그림 하나에 담는 범위를 줄이는 편이 낫다.
  • 발표용처럼 시각적 완성도가 중요한 그림은 여전히 그림 도구(Excalidraw, draw.io, Figma)가 낫다.

정리

  • 다이어그램을 코드로 두면 리뷰·버전 관리·재생성이 가능하고, 코드와 함께 고칠 수 있다.
  • 문서 안 렌더링은 Mermaid, UML은 PlantUML, 클라우드 아키텍처는 Diagrams가 기본 선택이다.
  • 배치를 세밀하게 통제해야 하면 그림 도구로 돌아간다.

관련 노트: Markdown 문법, 유스케이스 다이어그램, Terraform: 코드로 클라우드 인프라 만들기, 개발 도구 지형도와 세상을 바꾼 오픈소스

원본 기록5

댓글

GitHub 계정으로 댓글을 남길 수 있어요.