Diagram as Code와 draw.io

발행: (2026년 5월 26일 AM 06:35 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

Overview

아키텍처 다이어그램은 그릴 때마다 바로 구식이 되기 쉽습니다: 상자는 시스템과 맞지 않게 되고, 화살표는 의존성을 반영하지 않으며, 몇 차례 반복한 뒤에는 다이어그램이 실제보다 시스템의 느낌을 더 많이 나타냅니다. Ding‑by‑Dinghy는 이 문제를 Terraform이 임시 인프라 변경을 해결하는 방식과 동일하게, 다이어그램을 코드로 취급함으로써 해결합니다.

Basic Example

모든 Dinghy 다이어그램은 Shape 컴포넌트들의 트리 구조입니다. 의존성은 _dependsOn / _dependsBy 로 선언하고, 레이아웃 방향은 _direction 으로 설정합니다.

import { Shape } from '@dinghy/base-components';

export default () => (
  
    Web App
    Client
    
      Cloud
      
        Public Subnet
        Load Balancer
        Firewall
      
      
        Private Subnet
        Application
        Postgres
      
    
  
);

이 TSX를 렌더링하면 draw.io 페이지가 생성되며, 올바르게 라벨링된 박스와 의존성 화살표, 그리고 소스 코드와 일치하는 레이아웃이 자동으로 그려집니다: 바깥쪽에 Web App, 그 안에 중첩된 Cloud, 두 개의 수직으로 쌓인 서브넷, 그리고 모든 엣지가 자동으로 연결됩니다.

Improving Readability with Named Components

그냥 Shape만 사용해도 동작하지만, 원시 문자열을 읽는 것은 번거로울 수 있습니다. 각 역할을 자체 React 컴포넌트로 분리하면 다이어그램이 자체 문서화됩니다.

const Client = (props: any) => ;

export default () => (
  
    
    
      
        
        
      
      
        
        
      
    
  
);

이제 “ 은 이름을 통해 의미를 전달하고, 레이아웃 기본 요소는 한 단계 아래에 그대로 유지됩니다.

Using Real AWS Icons

@dinghy/diagrams/entitiesAwsGeneralResources 에서 가져와 공식 AWS 리소스 아이콘으로 일반 박스를 교체합니다.

import * as awsGeneralResources from '@dinghy/diagrams/entitiesAwsGeneralResources';

const Client = (props: any) => (
  
);

TSX 코드는 그대로이며, 렌더링 결과만 일반 도형에서 AWS 스타일 아이콘으로 바뀝니다.

How Dinghy Works

  • Output format: 모든 예제는 여전히 순수 .drawio 파일을 생성합니다. 이 파일은 표준 draw.io 편집기로 열고, 편집하고, 공유할 수 있습니다.
  • Workflow shift: 도형을 직접 끌어다 놓고 위치를 조정하는 대신, TSX에 도형과 관계를 기술합니다. Dinghy는 각 렌더링 시점에 픽셀 단위로 레이아웃을 자동 배치합니다.
  • Compatibility: 기존 draw.io 기능—도형 라이브러리, 렌더링 엔진, 편집 경험, 그리고 .drawio 파일을 사용하는 생태계 도구—모두 그대로 유지됩니다.

Getting Started

  • Diagram as Code 시작 가이드를 따라 첫 프로젝트를 스캐폴드하고 첫 .drawio 파일을 렌더링해 보세요.
  • 예제 다이어그램을 살펴보면 몇 개의 도형부터 전체 AWS 아키텍처까지 다양한 Dinghy 다이어그램을 확인할 수 있습니다.
0 조회
Back to Blog

관련 글

더 보기 »

TOML 스키마가 라이브

Overview TOML Schema https://toml-schema.org 은 이제 테스트 및 평가를 위해 사용할 수 있습니다. 이는 TOML 자체로 작성된 TOML용 스키마 언어이며, …

러스트 언어 성능 [PDF]

Goal Rust is defined as a safe, low‑level, system programming language directly competing with C++. How much does it pay for safety in terms of performance? Ca...