소프트웨어 아키텍처를 한눈에, 그리고 단계적으로 표현하기 위한 시각화 모델
소프트웨어 시스템은 복잡합니다.
서버, API, DB, 클라이언트, 모듈, 컴포넌트…
“대체 전체 구조가 어떻게 생긴 거야?”
누가 물으면 한 문장으로 설명하기 어렵죠.
이 문제를 해결하기 위해 등장한 것이 C4 모델(C4 Model)입니다.
C4 모델은 이름 그대로 4단계로 구조를 나눠 시각화합니다:
- Context Diagram – 전체 큰 그림
- Container Diagram – 실행 단위(애플리케이션) 구조
- Component Diagram – 기능적 컴포넌트 구조
- Code Diagram – 실제 코드 수준 구조
🧩 왜 C4 모델이 필요한가?
- 개발자, 기획자, 관리자 모두가 같은 그림을 공유할 수 있음
- 복잡한 시스템을 큰 그림 → 상세 구조 순서로 설명할 수 있음
- 신규 개발자 온보딩이 빨라짐
- 아키텍처 백서 작성에 최적화
- MSA·클라우드·온프레미스 등 어디든 적용 가능
특히 대규모 시스템이나 엔터프라이즈 아키텍처에서 강력한 효과를 발휘합니다.
🧱 C4 모델의 4단계 구조
🥇 C1: 시스템 컨텍스트 다이어그램 (System Context Diagram)
✔ 시스템을 “한 문장으로 설명하는 단계”
- 우리 시스템이 누구와 연결되는지(사람/외부 시스템)
- 시스템의 전체 역할
- 주요 사용자
- 외부 서비스와의 관계
✔ 예시
“온라인 쇼핑몰 시스템”이라면:
- 고객(Users)
- 관리자(Admins)
- 결제 시스템(Payment Gateway)
- 배송 시스템(Logistics API)
- 본 시스템(Online Shopping System)
✔ 목적
“이 시스템이 무엇이며, 누가 사용하고, 무엇과 연결되어 있는가?”
🥈 C2: 컨테이너 다이어그램 (Container Diagram)
여기서 말하는 **컨테이너(Container)**는 Docker만 의미하지 않습니다.
✔ 의미
“시스템을 구성하는 실행 단위들을 보여주는 다이어그램”
즉, 배포 가능한 애플리케이션/서버 단위.
✔ 예시
쇼핑몰 시스템이라면:
- 웹 애플리케이션 (Spring Boot)
- 모바일 앱 (iOS/Android)
- 백엔드 API 서버
- DB 서버
- Redis 캐시
- 메시지 브로커(Kafka)
✔ 목적
“시스템 내부의 큰 덩어리(애플리케이션)가 무엇이며, 어떻게 통신하는가?”
🥉 C3: 컴포넌트 다이어그램 (Component Diagram)
컨테이너 안을 들여다봅니다.
✔ 의미
“각 컨테이너가 어떤 기능 단위(컴포넌트)로 이루어져 있는지 표현”
즉, 서비스·도메인·기능 역할 중심의 구조
✔ 예시 (백엔드 API 서버 내부)
- Auth Component
- User Component
- Product Component
- Order Component
- Payment Component
✔ 목적
“이 애플리케이션의 주요 기능이 어떻게 나누어져 있는가?”
🏅 C4: 코드 다이어그램 (Code Diagram)
필요할 때만 작성합니다.
- 클래스/모듈/패키지 수준
- UML 클래스 다이어그램과 유사
- 너무 상세해지므로 보통 큰 시스템에서는 최소화
✔ 목적
“어떤 코드 구조로 구현되어 있는지 설명”
📌 C4 모델 한 눈에 보기 (표)
C단계 이름 수준(Level) 설명
| C1 | Context | 개략적(Big Picture) | 외부 시스템/사용자와의 관계 |
| C2 | Container | 시스템 내부의 실행 단위 | 서버·앱·DB 등 |
| C3 | Component | 기능 단위 | API·도메인 컴포넌트 |
| C4 | Code | 코드 구조 | 클래스/모듈 |
🎨 C4 모델 예시 그림(텍스트 버전)
🔹 C1 – 시스템 컨텍스트
[고객] → [온라인 쇼핑몰 시스템] → [결제 시스템]
🔹 C2 – 컨테이너 다이어그램
[웹 FE] → [API 서버] → [DB]
↘ [Redis]
🔹 C3 – API 서버 컴포넌트
[Auth] [User] [Order] [Product] [Payment]
🧠 C4 모델이 좋은 이유
✔ 1) 누구나 이해하는 공통 언어
개발자뿐 아니라 기획/운영/임원 모두가 볼 수 있는 구조 정리 방식.
✔ 2) 단계적인 디테일 제공
전체 → 내부 구조 → 기능 구조 → 코드
필요한 사람만 필요한 수준까지 보면 됨.
✔ 3) MSA/모놀리스/클라우드 등 어디든 호환
AWS·GCP 아키텍처에도 적용 가능.
✔ 4) 복잡한 시스템의 문서화에 최적화
회사의 아키텍처 문서/ITGC/감사 대응에도 유용.
🛠 C4 모델 그리는 도구 추천
- Structurizr (C4 창시자의 공식 도구, 강력 추천)
- Draw.io
- PlantUML + C4 플러그인
- Mermaid (GitHub, Notion, Obsidian 등에서 가능)
- LucidChart / Whimsical
🔚 마무리
C4 모델은 아키텍처를 단순하게 보이게 만드는 예술입니다.
복잡한 시스템일수록 전체 → 내부 → 기능 → 코드 순서로
점진적으로 설명해야 모두가 이해할 수 있습니다.
'IT > 아키텍처' 카테고리의 다른 글
| 레이어드 아키텍처(Layered Architecture) (0) | 2025.12.03 |
|---|---|
| 컨테이너(Container) · 컴포넌트(Component) · 모듈(Module)의 차이 완벽 정리 (0) | 2025.12.03 |
| 시스템 아키텍처 vs 어플리케이션 아키텍처 (0) | 2025.11.25 |
| BFF(Backend For Frontend) (0) | 2025.11.24 |
| 모놀리스부터 마이크로서비스, 그리고 SAGA까지– 실무 감각으로 정리하는 서비스 아키텍처 가이드 (0) | 2025.11.24 |