Post

파이썬과 diagrams

파이썬과 diagrams

[macOS] 파이썬과 diagrams로 코드처럼 아키텍처 다이어그램 관리하기

이 포스트에서는 macOS 환경에서 diagrams를 설치하고, 간단한 AWS 아키텍처 다이어그램을 만들어보는 과정을 단계별로 알아보겠습니다.

사전 준비: Homebrew

macOS에서 개발 도구를 설치할 때 가장 편리한 패키지 매니저인 Homebrew가 설치되어 있다고 가정합니다. 만약 설치되어 있지 않다면, 위 링크를 참고하여 먼저 설치해주세요.

1단계: Python과 Graphviz 설치

diagrams는 파이썬으로 작성된 라이브러리이며, 다이어그램을 실제로 렌더링(이미지로 변환)하기 위해 Graphviz라는 별도의 엔진을 사용합니다. Homebrew를 사용하면 이 두 가지를 한 번에 간단히 설치할 수 있습니다.

터미널을 열고 아래 명령어를 입력하세요.

1
brew install python graphviz

설치가 완료되면 각 도구가 제대로 설치되었는지 버전을 확인하여 검증합니다.

1
2
3
4
5
# 파이썬 버전 확인 (3.x 버전이 출력되어야 합니다)
python3 --version

# Graphviz 버전 확인 (dot은 Graphviz의 일부입니다)
dot -V

2단계: diagrams 라이브러리 설치

이제 이 모든 것을 하나로 묶어줄 diagrams 라이브러리를 pip를 이용해 설치합니다.

가상 환경(Virtual Environment) 구성 (강력 권장)

프로젝트별로 독립된 개발 환경을 구성하면 패키지 버전 충돌과 같은 문제를 예방할 수 있습니다. venv를 사용해 가상 환경을 만드는 것을 강력히 권장합니다.

1
2
3
4
5
6
7
8
9
10
11
# 1. 프로젝트 폴더 생성 및 이동
mkdir my-diagrams-project && cd my-diagrams-project

# 2. 'venv'라는 이름의 가상 환경 생성
python3 -m venv venv

# 3. 가상 환경 활성화
source venv/bin/activate

# 활성화되면 프롬프트 앞에 (venv)가 표시됩니다.
# (venv) $

가상 환경이 활성화된 상태에서 pip를 이용해 diagrams를 설치합니다.

1
pip install diagrams

3단계: 첫 번째 다이어그램 코드 작성하기

my_first_diagram.py라는 이름으로 파일을 만들고 아래 내용을 입력하세요.

1
2
3
4
5
6
7
8
9
10
# my_first_diagram.py

from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Basic Web Service", show=False):
    ELB("lb") >> EC2("web") >> RDS("db")

코드 한 줄 한 줄을 살펴볼까요?

  • from diagrams import Diagram: 다이어그램 전체를 감싸는 Diagram 객체를 가져옵니다.
  • from diagrams.aws.compute import EC2, ...: AWS의 각 서비스에 해당하는 아이콘(노드)들을 가져옵니다. diagrams는 AWS뿐만 아니라 GCP, Azure, Kubernetes 등 다양한 아이콘 팩을 제공합니다.
  • with Diagram("...", show=False):: Basic Web Service라는 이름의 다이어그램을 생성하겠다는 의미입니다. show=False는 스크립트 실행 시 이미지를 자동으로 화면에 띄우지 않도록 하는 옵션입니다.
  • ELB("lb") >> EC2("web") >> RDS("db"):
    • ELB("lb"): “lb”라는 레이블을 가진 ELB 노드를 생성합니다.
    • >>: 노드와 노드를 연결하는 연산자입니다. 데이터의 흐름이나 연결 관계를 직관적으로 표현합니다.

4단계: 다이어그램 이미지 생성하기

이제 작성한 파이썬 스크립트를 실행하여 실제 이미지 파일을 생성할 차례입니다. 터미널에서 아래 명령어를 실행하세요.

1
python3 my_first_diagram.py

아무런 오류 메시지가 없다면, 스크립트가 있는 폴더에 basic_web_service.png라는 이름의 PNG 파일이 생성된 것을 확인할 수 있습니다.

좀 더 복잡한 예제: 클러스터 구성하기

diagrams는 노드를 그룹화하는 Cluster 기능을 제공하여 더 복잡한 아키텍처도 쉽게 표현할 수 있습니다. clustered_diagram.py 파일을 만들고 아래 코드를 작성해 보세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# clustered_diagram.py

from diagrams import Diagram, Cluster
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Clustered Web Service", show=False):
    lb = ELB("lb")

    with Cluster("Web Server Cluster"):
        web_servers = [EC2("web1"),
                       EC2("web2"),
                       EC2("web3")]

    with Cluster("Database Cluster"):
        db_primary = RDS("primary")
        db_primary - RDS("read_replica")

    lb >> web_servers >> db_primary

위 스크립트를 실행하면 clustered_web_service.png 파일이 생성됩니다. Cluster 블록 안에 정의된 노드들이 박스로 묶여 훨씬 구조화된 다이어그램이 만들어지는 것을 볼 수 있습니다.

마무리하며

지금까지 파이썬 diagrams 라이브러리를 이용해 “Diagram as Code”를 실현하는 방법을 알아보았습니다. 이제 여러분의 아키텍처 다이어그램은 다음과 같은 장점을 갖게 됩니다.

  • Git으로 버전 관리가 가능합니다.
  • 코드 리뷰를 통해 동료와 다이어그램 변경 사항을 논의할 수 있습니다.
  • 반복적인 패턴은 코드로 자동화할 수 있습니다.

diagrams공식 문서에서 볼 수 있듯이 AWS 외에도 수많은 기술 아이콘을 지원합니다.

This post is licensed under CC BY 4.0 by the author.