본문 바로가기
IT/Etc

시스템 설계 - C4 Model

by 조병희 2024. 6. 21.

https://c4model.com/

 

The C4 model for visualising software architecture

Introduction Ask somebody in the building industry to visually communicate the architecture of a building and you'll be presented with site plans, floor plans, elevation views, cross-section views and detail drawings. In contrast, ask a software developer

c4model.com

 

시스템 설계는 프로젝트 시작 전에 모든 이해관계자들이 무엇을 해야 할지 공통 이해를 가지는 것이 중요하다. 그렇지 않으면 프로젝트 후반부에 문제가 발생할 수 있다. 특히 상자와 화살표만으로 설계를 표현하면 기술 배경이 없는 사람들이 이해하기 어렵다.

이런 문제를 해결하기 위해 C4 모델이 개발됐다. C4 모델은 누구나 이해할 수 있는 공통 방식으로 시스템 설계를 시각화하는 데 활용된다. C4 모델은 4개 레벨로 구성되어 있고, 각 레벨은 이전 레벨보다 더 자세한 정보를 제공한다. 4개 레벨은 시스템 컨텍스트, 컨테이너, 구성 요소, 코드 레벨이다.

 

C4 모델의 각 레벨은 다음과 같이 활용된다:

  1. 시스템 컨텍스트 레벨 - 전체 시스템의 큰 그림을 보여준다. 각 상자는 별도의 시스템이다.

  2. 컨테이너 레벨 - 이전 레벨의 상자에 대한 세부 버전이다. 대부분의 경우 이 레벨까지만 그리면 된다.

  3. 구성 요소 레벨 - 필요한 경우에만 이 레벨까지 그린다. 이는 컨테이너 레벨의 상세 버전이다.

  4. 코드 레벨 - 일반적으로 이 레벨은 그리지 않는 게 좋다. 클래스 레벨의 상세 내용이므로 가독성이 떨어질 수 있다.

결과적으로 대부분의 경우 시스템 컨텍스트와 컨테이너 레벨 두 단계만으로 충분하고, 필요 시 구성 요소 레벨까지 그릴 수 있다.

C4 도면의 레벨에 대한 세부 내용은 다음과 같다.

시스템 컨텍스트 다이어그램

큰 그림을 보는 데 사용되며 각 상자는 별도의 시스템을 나타낸다. 아래 예시에서는 새로운 인터넷뱅킹 시스템과 기존의 이메일 및 주요 시스템과의 관계를 그려보았다. 새로 만들어진 시스템은 파란색으로 표시되고 기존 시스템은 회색으로 표시된다. 또한 시스템 간의 화살표 설명은 시스템 간의 관계를 명확하게 나타낸다. 각 상자 안에는 그것이 나타내는 시스템에 대한 간략한 설명이 있으며, 이 설명은 시스템에 익숙하지 않은 사람들에게 매우 유용하다. 시스템을 사용하는 사람들은 그림에 배우로 추가되고 이러한 배우와 다른 시스템의 관계가 표시된다.

컨테이너 다이어그램

시스템 컨텍스트 다이어그램에서 파란색으로 표시된 자체 시스템의 세부 정보가 이 다이어그램에 자세히 설명되어 있다(Docker의 컨테이너와 이름 유사성만 있음). 여기에서 각 상자는 별도로 배포되는 독립적인 단위(웹 애플리케이션, 데스크톱 애플리케이션 등)로 생각할 수 있다. 이 다이어그램에서는 개별 유닛이 모두 상자로 표시되어 있으며 상자 안에 기술과 설명이 적혀 있다. 기존 시스템과 관련된 경우 해당 시스템도 표시된다.

구성요소 다이어그램

컨테이너 다이어그램의 각 상자 내부를 더 자세히 표시하려는 경우 이 다이어그램을 사용할 수 있다. 각 상자는 프로그램의 구성 요소로 간주될 수 있다. 다이어그램의 내용은 수시로 변경될 수 있으므로 필요한 경우에만 그려야 한다.

코드 다이어그램

UML 다이어그램은 구성 요소 다이어그램의 각 구성 요소에 대해 클래스별로 그려진다. 자주 바뀔 수 있으므로 그리지 않는 것이 좋다.

이 4가지 기본 다이어그램 외에도 동적 및 배포 다이어그램을 사용하여 시스템을 더 잘 이해할 수도 있습니다. 이에 대한 설명은 다음과 같다.

동적 다이어그램

런타임에 특정 기능을 제공하기 위해 컨테이너와 구성 요소 간의 관계가 어떻게 되어야 하는지 지정하기 위해 그려지며 UML 협업 다이어그램에서 파생 다. 작업을 수행하는 흐름은 다음과 같은 순서로 지정된다.

배포 다이어그램

배포 다이어그램을 사용하면 정적 모델의 소프트웨어 시스템 및/또는 컨테이너 인스턴스가 지정된 배포 환경(예: 프로덕션, 스테이징, 개발 등) 내의 인프라에 배포되는 방법을 설명할 수 있다.

표기법

C4 모델은 표기법에 독립적 이며, 어떤 특별한 표기법도 규정하지 않는다. 그러나 시작점, 화이트보드, 종이, 스티키 노트, 색인 카드 및 다양한 다이어그래밍 도구에서 잘 작동하는 간단한 표기법은 다음과 같다.

사람

소프트웨어 시스템

컨테이너

요소

관계

.

출처: https://medium.com/@umitulkemyildirim/visualising-software-architecture-with-the-c4-model-552d4df33eef

 

외부 블로그 등에도 잘 정리되어 있지만 보면 볼수록 C4 사이트가 잘 정리된 듯하다.

https://c4model.com/

 

The C4 model for visualising software architecture

Introduction Ask somebody in the building industry to visually communicate the architecture of a building and you'll be presented with site plans, floor plans, elevation views, cross-section views and detail drawings. In contrast, ask a software developer

c4model.com

 

Draw.io Templete

c4model.drawio
0.08MB

 

 

'IT > Etc' 카테고리의 다른 글

LLM Tool - LocalAI  (0) 2024.07.23
LLM App Builder Tool - Flowise  (0) 2024.07.23
프롬프트 엔지니어링 기법들  (0) 2024.06.20
LlamaIndex  (0) 2024.05.09
셀룰러가 없는 Y700과 아이폰 테더링  (0) 2024.03.30

댓글