세로형 Mermaid 가이드
메인 인덱스 | CCG-Platform | Cross-Repo 분석
이 가이드는 CCG-Platform 문서에서 ASCII 박스 다이어그램 대신 Mermaid를 사용할 때, 세로형 페이지와 좁은 문서 폭에 맞게 다이어그램을 정리하기 위한 기준입니다.
왜 Mermaid로 바꾸는가
- ASCII 박스 다이어그램은 줄 폭에 강하게 묶여서 모바일, 사이드바, 좁은 문서 레이아웃에서 쉽게 깨집니다.
- Mermaid는 수동 공백 정렬보다 구조와 관계를 직접 표현하기 쉬워서 유지보수가 편합니다.
- 문서가 길어질수록 “정렬”보다 “의미”가 중요하므로, 자동 레이아웃이 있는 다이어그램 문법이 더 안정적입니다.
기본 원칙
- 기본 방향은
flowchart TB또는flowchart TD를 사용합니다. - 다이어그램 하나에는 질문 하나만 담습니다. 계층 구조, 라우팅, 상태 전이, DB 관계를 한 장에 다 넣지 않습니다.
- 너비를 넓히지 말고 깊이를 늘립니다. 가로로 5개를 늘어놓기보다 세로 계층 3~4단으로 쪼갭니다.
- 큰 박스를 공백으로 흉내 내지 말고
subgraph로 계층을 표현합니다. - 긴 문장은 한 줄에 우겨 넣지 말고
<br/>로 줄을 나눕니다. - 노드 이름은 짧게 두고, 세부 설명은 2~4줄 안에서 끝냅니다.
- 박스 모양을 맞추기 위한 수동 공백,
┌─┐,│ │,════같은 ASCII 장식은 쓰지 않습니다. - 파일 트리, CLI 출력, YAML 예시는 Mermaid로 바꾸지 않고 코드 블록으로 유지합니다.
문법 선택 기준
| 문서 목적 | 권장 문법 | 이유 |
|---|---|---|
| 계층형 아키텍처 | flowchart TB | 표현 계층, API 계층, 인프라 계층처럼 위에서 아래로 읽기 좋습니다. |
| 요청/데이터 라우팅 | flowchart TB | 세로 페이지에서 URL, 서비스, 목적지를 순서대로 내리기 좋습니다. |
| 단계별 상태 변화 | stateDiagram-v2 | 상태 전이와 종료 지점을 명확하게 표현할 수 있습니다. |
| 엔터티 관계 | erDiagram | FK 관계를 ASCII 목록보다 짧고 명확하게 담고 있습니다. |
| 사람/서비스 간 상세 상호작용 | sequenceDiagram | 순서 자체가 핵심일 때만 사용합니다. 폭이 넓어지기 쉬우므로 남용하지 않습니다. |
세로형 레이아웃 규칙
- 최상단에는 사용자나 진입점, 최하단에는 인프라나 결과를 둡니다.
- 한 레벨에 노드가 3개를 넘으면 새
subgraph로 묶거나 다이어그램을 둘로 나눕니다. - 비교가 필요한 경우에만 작은 영역 안에서
direction LR를 씁니다. - 서비스 설명은
이름<br/>역할<br/>역할형태로 정리합니다. - 화살표 라벨은 짧게 씁니다. 긴 API 목록은 별도 노드로 빼는 편이 낫습니다.
- 노드 하나가 문단처럼 길어지면 다이어그램이 아니라 표나 본문이어야 할 가능성이 큽니다.
- 같은 문서 안에서는 같은 개념에 같은 이름을 씁니다. 예:
Portal Backend,portal-backend,Portal API를 섞지 않습니다.
ASCII 대신 쓸 패턴
1. 계층형 아키텍처
flowchart TB subgraph Presentation["표현 계층"] UI["CCGP-ui<br/>React 프론트엔드"] end subgraph API["API 계층"] Portal["portal-backend<br/>인증 / 과금 / 임대"] PodMgr["PodManager_V2<br/>Pod 수명주기 / 라우팅"] end subgraph Infra["인프라 계층"] EKS["AWS EKS"] Traefik["Traefik"] end UI --> Portal --> PodMgr --> EKS PodMgr --> Traefik
2. 상태 머신
stateDiagram-v2 [*] --> IDLE IDLE --> CREATING: 생성 요청 CREATING --> RUNNING RUNNING --> ACTIVE: 사용자 접속 ACTIVE --> EXPIRED ACTIVE --> DELETED
3. DB 관계
erDiagram USERS ||--o{ CONTAINER_RENTALS : rents CONTAINER_RESOURCES ||--o{ CONTAINER_RENTALS : selected_by
언제 Mermaid보다 표가 나은가
- 설정 변수 목록
- 레포지토리 비교
- 장단점 비교
- API 엔드포인트 목록
- 운영 체크리스트
관계보다 항목 비교가 중심이면 Mermaid보다 Markdown 표가 더 읽기 좋습니다.
작성 체크리스트
- 이 다이어그램이 세로 스크롤로 자연스럽게 읽히는가
- 가장 긴 노드가 페이지 폭을 깨지 않는가
- 화살표 라벨이 문장 대신 짧은 신호 역할만 하는가
- ASCII 장식 없이도 계층과 흐름이 보이는가
- 상태, 흐름, 관계가 서로 다른 문법으로 분리되어 있는가
- 같은 내용을 다이어그램과 본문에 중복해서 과하게 반복하지 않았는가
CCG-Platform 적용 메모
cross-repo-analysis.md에서는 아키텍처, 의존 관계, 라우팅, 상태 전이, DB 추론을 세로형 Mermaid로 통일합니다.- Appendix의 파일 트리처럼 코드 구조를 그대로 보여줘야 하는 구간은 ASCII 트리 코드를 유지합니다.
- 넓은
sequenceDiagram이 꼭 필요하지 않다면flowchart TB로 다시 풀어 쓰는 편이 문서 폭에 더 안정적입니다.