소프트웨어 개발 분야에서는 아키텍처 설계를 명확하게 전달하는 것이 매우 중요합니다. C4 모델(컨텍스트, 컨테이너, 구성 요소, 코드)은 개발 아키텍트를 위해 맞춤화된 시스템 아키텍처 다이어그램 방법입니다. 이는 시스템의 다양한 수준의 아키텍처 정보를 표현하는 간단하고 명확하며 이해하기 쉬운 방법을 제공하여 개발자, 아키텍트 및 이해 관계자가 아키텍처 관련 결정을 더 잘 이해하고 전달하는 데 도움이 됩니다.
C4 모델은 Simon Brown이 그의 책 "Software Architecture for Developers"에서 처음 제안했습니다. 일련의 다이어그램을 통해 소프트웨어 시스템의 아키텍처를 보여주는 것을 목표로 합니다. 이러한 다이어그램은 시스템 컨텍스트 다이어그램, 컨테이너 다이어그램, 구성 요소 다이어그램, 코드 다이어그램을 포함하여 시스템의 다양한 수준에 따라 구분됩니다. C4 모델은 특정 그래픽이나 모델링 언어를 사용할 필요가 없으므로 사용자는 매우 유연하게 건축 다이어그램을 생성할 수 있습니다.
시스템 컨텍스트 다이어그램은 C4 모델의 최상위에 위치하며 소프트웨어 시스템 아키텍처 다이어그램의 시작점입니다. 여기에는 시스템 경계, 시스템 관련 사용자, 기타 지원 시스템 및 시스템과의 상호 작용을 포함한 시스템의 전반적인 그림이 표시됩니다. 이 유형의 다이어그램은 기술적 세부 사항을 설명하지 않고도 간단하고 직관적이기 때문에 기술적인 지식이 없는 이해 관계자에게 적합합니다.
주요 요소: 설명할 소프트웨어 시스템, 사용자, 외부 종속 시스템 등.
대상 청중: 소프트웨어 개발팀 내부 및 외부의 모든 사람, 기술자, 비기술자 모두.
컨테이너 다이어그램은 시스템 컨텍스트 다이어그램을 확대하고 보완한 것으로, 시스템의 물리적 구조를 보여줍니다. 각 컨테이너는 웹 서버, 애플리케이션 서버, 데이터베이스 서버 등 개별적으로 실행/배포 가능한 단위를 나타냅니다. 컨테이너 다이어그램은 시스템의 주요 기술 선택과 컨테이너 간의 통신 및 상호작용도 보여줍니다.
주요 요소: Spring Boot 패키지 애플리케이션, MySQL 데이터베이스, Redis 등과 같은 소프트웨어 시스템 범위 내의 컨테이너입니다.
대상 청중: 소프트웨어 아키텍트, 개발자, 운영/지원 직원을 포함한 소프트웨어 개발팀 내부 및 외부의 기술자.
구성 요소 다이어그램은 컨테이너 깊숙이 들어가 컨테이너에 들어 있는 구성 요소와 구성 요소 간의 관계를 보여줍니다. 구성요소는 일반적으로 사용자 인터페이스, 비즈니스 로직, 데이터 처리 등 시스템의 주요 비즈니스 기능을 나타냅니다. 이러한 유형의 다이어그램은 개발자와 설계자에게 매우 중요합니다. 시스템 내부 구조를 자세히 볼 수 있기 때문입니다.
주요 요소: Dubbo 인터페이스, REST 인터페이스, 서비스 등과 같은 컨테이너 내부의 구성 요소입니다.
대상 청중: 소프트웨어 아키텍트 및 개발자.
코드 다이어그램은 구성 요소 내의 클래스와 그 상호 작용을 보여주며 가장 세부적인 수준입니다. 이러한 유형의 다이어그램은 일반적으로 클래스, 속성, 메서드, 관계를 포함하여 단일 구성 요소의 구현 세부 정보를 보여주는 데 사용됩니다. 그러나 오늘날 애자일 개발이 초점인 세상에서는 코드가 아직 작성되지 않은 매우 중요한 구성 요소가 아닌 한 코드 다이어그램을 만드는 것이 권장되지 않습니다.
주요 요소: 클래스, 인터페이스, 객체, 함수, 데이터베이스 테이블 등과 같은 구성 요소 내의 코드 요소입니다.
대상 청중: 소프트웨어 아키텍트 및 개발자.
C4 코드 다이어그램 - 컨테이너 로딩 관련 클래스 다이어그램
또한 C4 모델에는 다양한 수준과 시나리오에서 소프트웨어 시스템의 결합과 협업을 설명하기 위한 시스템 랜드스케이프 다이어그램, 동적 다이어그램, 배포 다이어그램과 같은 확장된 뷰가 포함되어 있습니다.
C4 차트를 그리는 데는 많은 도구가 있습니다. 일반적인 도구로는 draw.io, Plantuml, ProcessOn 등이 있습니다. 사용자는 필요에 따라 적절한 차트 도구를 선택할 수 있습니다. 초보자에게는 ProcessOn을 사용하는 것이 좋습니다. ProcessOn 은 전문적인 플로우차트 도구로, C4 차트의 온라인 그리기를 지원하고 다양한 스파이더 차트 템플릿을 제공합니다.
1. ProcessOn 에 로그인한 후 "새 파일" 버튼을 클릭합니다. 팝업되는 옵션에서 "흐름도"를 선택하세요 .
2. ProcessOn은 다양한 템플릿을 제공합니다. 새 파일을 만들 때 시작점으로 적합한 C4 차트 템플릿을 선택할 수 있으며, 이를 통해 설정 및 레이아웃에 많은 시간을 절약할 수 있습니다.
빈 페이지에서 시작하기로 선택한 경우 이 단계를 건너뛸 수 있습니다.
3. 왼쪽의 그래픽 라이브러리에서 "추가 그래픽"을 클릭하고, 만들고 싶은 C4 차트 유형을 선택한 후 "확인"을 클릭합니다.
4. 왼쪽의 그래픽 라이브러리에서 적절한 요소를 선택하여 캔버스로 끌어다 놓고, 크기와 위치를 조정한 다음, 모양을 선택하고 "+"를 클릭하여 다른 모양과의 연결을 만듭니다. 모양이나 선을 선택하고, 위쪽 도구 모음을 사용하여 모양이나 선의 색상, 테두리, 글꼴 및 기타 속성을 설정합니다.
5. ProcessOn이 제공하는 공유 및 협업 기능을 사용하면 C4 다이어그램을 팀원이나 이해 관계자와 공유하여 보거나 편집 할 수 있습니다 . C4 다이어그램을 이미지나 PDF 형식 으로 내보내 다른 경우에 사용할 수도 있습니다.
다음은 인터넷 뱅킹 시스템의 C4 모델입니다.
다음은 소프트웨어 시스템의 데이터 생산 및 릴리스 모듈의 C4 모델입니다.
위의 템플릿은 모두 ProcessOn 템플릿 커뮤니티에서 가져온 것입니다. 아키텍처 디자인의 아이디어를 참조하거나 복제하여 사용할 수 있습니다.
C4 모델은 개발 아키텍트가 소프트웨어 아키텍처를 일관되고 명확한 방식으로 이해하고 전달하는 데 도움이 되는 강력한 도구입니다. 프로젝트에 C4 다이어그램을 사용하면 커뮤니케이션 효율성을 높이고, 오해의 위험을 줄이고, 건축 관련 결정이 적절하게 문서화되고 이해되도록 할 수 있습니다. 경험이 많은 건축가든 초보 개발자든 C4 다이어그램은 건축 도구 상자에 없어서는 안 될 부분입니다.
관련 자료: