# Diagrams - Diagram as Code

> Clean Markdown view of GeekNews topic #17604. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17604](https://news.hada.io/topic?id=17604)
- GeekNews Markdown: [https://news.hada.io/topic/17604.md](https://news.hada.io/topic/17604.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-05T14:34:36+09:00
- Updated: 2024-11-05T14:34:36+09:00
- Original source: [diagrams.mingrammer.com](https://diagrams.mingrammer.com/)
- Points: 18
- Comments: 3

## Summary

Diagrams는 Python 코드로 클라우드 시스템 아키텍처를 그릴 수 있는 도구로, 새로운 시스템 아키텍처를 프로토타이핑하거나 기존 아키텍처를 설명하는 데 유용합니다. 이 도구는 AWS, Azure, GCP 등 주요 클라우드 제공자뿐만 아니라 온프레미스 노드와 SaaS도 지원하며, 아키텍처 다이어그램의 변화를 버전 관리 시스템에서 추적할 수 있게 해준다. 당근마켓에 계신 권민재님이 만드신건데 GitHub Star가 이제 38700개까지 올라갔네요!

## Topic Body

- Diagrams는 Python 코드로 클라우드 시스템 아키텍처를 그릴 수 있게 해주는 도구  
  - 새로운 시스템 아키텍처를 프로토타이핑할 때 디자인 도구 없이 사용할 수 있도록 만들어졌음  
  - 기존 시스템 아키텍처를 설명하거나 시각화하는 데도 사용 가능  
  - Diagram as Code는 아키텍처 다이어그램의 변화를 버전 관리 시스템에서 추적할 수 있게 해줌  
- 지원하는 주요 제공자  
  - AWS, Azure, GCP, Kubernetes, Alibaba Cloud, Oracle Cloud 등 주요 클라우드 제공자를 지원  
  - 온프레미스 노드, SaaS, 주요 프로그래밍 프레임워크 및 언어도 지원  
- 주의사항  
  - 실제 클라우드 리소스를 제어하거나 클라우드 포메이션 또는 테라폼 코드를 생성하지 않음  
  - 클라우드 시스템 아키텍처 다이어그램을 그리는 용도로만 사용됨

## Comments



### Comment 30802

- Author: xguru
- Created: 2024-11-06T09:17:53+09:00
- Points: 1

[Diagrams - 파이썬 코드로 클라우드 아키텍쳐 그리기](https://news.hada.io/topic?id=1781)  
당근마켓에 계신 권민재님이 만드신건데 GitHub Star가 이제 38700개까지 올라갔네요!

### Comment 30759

- Author: neo
- Created: 2024-11-05T14:34:37+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42044771) 
- 이 프로젝트는 Graphviz의 래퍼로, 스타일이 적용된 .dot 파일을 생성하여 원시 gv 파일보다 더 나은 시각적 효과를 제공함
  - Python을 사용하여 명세하는 것은 이론적으로는 IDE의 하이라이팅, 자동완성 등의 이점을 제공하지만, 실제로는 Python이나 Golang을 배우고 싶지 않은 사람들에게는 적합하지 않음
  - 작은 아키텍처 다이어그램에는 레이아웃 엔진이 괜찮지만, 규모가 커지면 보기 좋지 않음
  - draw.io를 사용하여 의도나 디자인을 설명하고, 동적 요소에는 Graphviz를 스타일과 함께 사용함
  - dot 언어의 확장을 통해 위협 모델링과 렌더링 스타일링을 가능하게 하는 것을 보고 싶음

- D2는 꽤 멋진 도구임
  - Digital Ocean의 NetBox는 네트워크 자산 데이터베이스에서 다이어그램을 생성할 수 있음
  - NetBox는 네트워크 인프라의 진실의 원천으로 작동하며, 네트워크 구성 요소와 리소스의 의도된 상태를 정의하고 검증함
  - 각 파일은 개별 물리적 장치 유형을 나타내며, NetBox에 로드하여 수동으로 새 장치 유형 정의를 만들 필요를 없앰
  - 장치 이미지는 PNG 형식으로 제조업체별로 정리되어 있으며, NetBox에 로드하여 장치 이미지를 만들 필요를 없앰

- 개인적으로 시퀀스 다이어그램과 흐름도를 위해 Mermaid를 사용함
  - DaC는 인프라에 더 나은 선택지로 보임

- DSL을 프로그래밍 언어로 구현하는 것은 정적 데이터 구조를 생성할 때 복잡해 보임
  - DSL은 다른 코드에서 사용될 때 유용하지만, 이 경우에는 대안에 비해 오버헤드가 있음

- PostScript 프로그래밍 언어는 스택 기반이며, 그림과 다이어그램에 뛰어남
  - Ghostscript는 무료 PostScript 인터프리터임

- Visio나 LucidChart를 사용하는 것을 싫어하며, Python을 사용하여 다이어그램을 그리는 것을 선호함
  - Python을 사용함으로써 두 가지 작업을 동시에 처리할 수 있음

- 이러한 라이브러리를 보면서 LLM이 다이어그램을 마스터할 수 있는 효율적인 API를 생각하게 됨

- "Generic" 노드 세트가 있어 기쁨
  - 특정 클라우드 플랫폼의 이름이나 아이콘에 너무 의존하는 아키텍처 다이어그램이 불편함
  - 노드 간의 연결선에 유용한 정보가 표시되지 않음

### Comment 31182

- Author: healingme
- Created: 2024-11-12T16:53:21+09:00
- Points: 1
- Parent comment: 30759
- Depth: 1

plantuml 도  있습니다.
