파이썬과 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 외에도 수많은 기술 아이콘을 지원합니다.