개요

c4 모델링을 설명하고, 한번 그려본다. 예시는 펫클리닉을 예시로 한다.

펫클리닉 예제는 많은데, 거기서 서버사이드로 코틀린 언어와 함께 스프링 프레임워크를 이용한 프로젝트를 사용해본다.

예시 프로젝트 링크

 

C4 모델링이란.

해당 모델링은 처음 들어보았는데, 회사 내 파트장님으로부터 알게된 내용이다. 알아보니 점진적으로 소프트웨어 아키텍처를 그릴 시에 유용하다고 한다. C4 는 네 개의 C 로 시작하는 모델링이 있다는 의미이다. 

 

C4 모델링 아키텍처 예시

https://c4model.com/img/c4-overview.png

 

아래의 설명은 라인블로그의 내용을 참고하였다.

  • Context Software System
    • 최상위 추상화 요소로 시스템이 어떠한 가치를 제공하는지 나타내며 보유하거나 개발하고 있는 소프트웨어 및 연동되는 소프트웨어를 나타낼 때 사용한다.
  • Container
    • 소프트웨어 시스템의 내부를 표현하는 추상화 요소로 애플리케이션이나 데이터 저장과 관련된 솔루션을 나타낼 때 사용한다. Docker Container 개념과는 다르다. 서버 애플리케이션이나 클라이언트 애플리케이션, CLI 애플리케이션 또는 배치 애플리케이션, 데이터베이스, 파일 시스템, 쉘 스크립트 등과 같은 것을 표현한다. 주로 독립적으로 배포할 수 있는 단위로 구분한다.
  • Component
    • 컨테이너 내부를 표현하는 추상화 요소로 기능 단위로 묶을 수 있는 모듈이나 인터페이스의 집합을 나타낼 때 사용한다. 자바나 코틀린 그리고 C# 에 비유하면 인터페이스나 패키지를 구현하기 위한 클래스의 집합이라고 한다. 독립적으로 배포할 수 있는 단위가 아닌 클래스의 집합이다.
  • Code
    • 컴포넌트 내부의 코드를 표현한다. 엔티티 간의 관계와 클래스 다이어그램을 등을 사용하여 나타낸다. 컴포넌트가 하나의 클래스 단위로 표현했다면 그 클래스 내부에서 어떻게 호출자가 어떤것이고 관계가 어떻게 되는지 다이어그램으로 표시한다고 생각된다.

 

위의 내용을 기반으로 펫클리닉 프로젝트에 대한 C4 모델링을 그려보도록 한다.

 

1. C1 : System Context Diagram

시스템 단위로 나타냈기 때문에, 하나의 네모난 박스는 시스템 그 자체를 나타내고 있다. 큰 그림을 보기에 적합하다. 그림을 표현할 때는 세부적인 사항은 표현하지 않은 상태로, actor, role, system 등을 표현한다. 기술적이지 않은 사람들에게 보여줄 수 있는 일종의 다이어그램이다. 대부분의 팀에 권장되는 다이어그램이라고 한다.

 

2. C2 : Container Diagram

컨테이너 다이어그램을 통해서 시스템의 경계를 확대한다. 컨테이너는 다양하게 노출된다. 서버 애플리케이션, 데이터베이스, SPA, 컨테이너는 앞서 말한 것 처럼 배포 가능한 단위로 표시된다. 컨테이너가 사용한 기술과 서로 통신하는 방법(http) 을 보여주고 있다. 추가적으로 별도의 배포 시나리오나 클러스터링, 장애조치에 대해서는 설명하지 않는다. 대부분의 팀에 권장되는 다이어그램이라고 한다.

 

3. C3 : Component Diagram

각각의 컨테이너를 확대 하여 내부 컴포넌트들이 어떠한 상호작용을 거치는지 식별할 수 있도록 표시해주어야 한다. 각 구성요소들의 [역할 / 책임 / 기술 및 구현 세부 정보] 들을 보여주어야 한다. 대부분의 팀에 권장하지는 않는다. 다만 필요하다고 판단이 된다면 만든다.

 

reference

Posted by doubler
,