IT/아키텍처

C4 모델(C4 Model)

Life Log 2025. 12. 3. 15:30
728x90
반응형

소프트웨어 아키텍처를 한눈에, 그리고 단계적으로 표현하기 위한 시각화 모델

소프트웨어 시스템은 복잡합니다.
서버, API, DB, 클라이언트, 모듈, 컴포넌트…
“대체 전체 구조가 어떻게 생긴 거야?”
누가 물으면 한 문장으로 설명하기 어렵죠.

이 문제를 해결하기 위해 등장한 것이 C4 모델(C4 Model)입니다.

C4 모델은 이름 그대로 4단계로 구조를 나눠 시각화합니다:

  1. Context Diagram – 전체 큰 그림
  2. Container Diagram – 실행 단위(애플리케이션) 구조
  3. Component Diagram – 기능적 컴포넌트 구조
  4. 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 모델은 아키텍처를 단순하게 보이게 만드는 예술입니다.
복잡한 시스템일수록 전체 → 내부 → 기능 → 코드 순서로
점진적으로 설명해야 모두가 이해할 수 있습니다.

 

728x90
반응형