개요
c4 모델링을 설명하고, 한번 그려본다. 예시는 펫클리닉을 예시로 한다.
펫클리닉 예제는 많은데, 거기서 서버사이드로 코틀린 언어와 함께 스프링 프레임워크를 이용한 프로젝트를 사용해본다.
C4 모델링이란.
해당 모델링은 처음 들어보았는데, 회사 내 파트장님으로부터 알게된 내용이다. 알아보니 점진적으로 소프트웨어 아키텍처를 그릴 시에 유용하다고 한다. C4 는 네 개의 C 로 시작하는 모델링이 있다는 의미이다.
C4 모델링 아키텍처 예시
아래의 설명은 라인블로그의 내용을 참고하였다.
- 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
'알아두면 쓸모있는 SW 지식' 카테고리의 다른 글
2022-08-05 [mac] : caffeinate (0) | 2022.08.05 |
---|---|
20210315 [dev] hikari cp 의 connectionTestQuery 속성에 관하여. (0) | 2021.03.15 |
20210307 [dev] 데이터의 상태를 변경한다는 것. (0) | 2021.03.07 |
20210207 [wsl] wsl 에서 sudo 명령어 입력 시 패스워드 생략하기. (0) | 2021.02.07 |
20200922 [intellij] 인텔리제이 상에서멀티커서 이용하기 (0) | 2020.09.22 |