Skip to content

3.6 아키텍처 문서화 #1481

@jongfeel

Description

@jongfeel

3.6 아키텍처 문서화

3.6.1 아키텍처 기술서

아키텍처 기술서에는 다음과 같은 항목이 포함됩니다.

  • 목적
  • 아키텍처 드라이버
  • 전체 시스템 구성
  • 사용자(업무 주체)와 이해관계자
  • 아키텍처 모델

목적

문서의 목적과 개요, 대상 독자, 아키텍처의 목표 및 지향점을 기술합니다.

아키텍처 드라이버

아키텍처 설계 시 고려해야 할 핵심 요소(제약, 품질 속성, 영향을 미치는 기능 요구, 기타 영향을 미치는 요소)의 목록을 작성합니다.

전체 시스템 구성

시스템 전체 구조를 한눈에 파악할 수 있는 그림을 기재하고, 주요 서브시스템 및 서비스의 개요를 설명합니다.

사용자 및 이해관계자

시스템을 직접 사용하는 사용자뿐만 아니라, 아키텍처에 영향을 주거나 영향을 받는 이해관계자를 정리합니다.
대표적으로 프로덕트 오너(PO), 아키텍트, 개발자, QA 엔지니어, 디자이너, 인프라 엔지니어, 보안 엔지니어, 운영팀, 고객 지원팀 등이 있습니다.

아키텍처 모델

아키텍처를 다양한 관점에서 모델링하여 문서화합니다.

3.6.2 아키텍처 모델

이해관계자들은 저마다 관심사가 달라 아키텍처에서 알고 싶은 관점이 다릅니다.
이러한 관심사와 관점에 따라 아키텍처를 파악하는 방법 또는 시각을 뷰포인트viewpoint라고 합니다.
그리고 각 뷰포인트에 따라 실제로 아키텍처를 모델로 표현한 개별 도면을 뷰 view 라고 합니다.

아키텍처 모델을 이해관계자의 관심사에 맞게 적절히 표현하는 대표적인 뷰포인트 세트로 4+1 뷰와 C4 모델이 있습니다.

4 + 1 뷰

4 + 1 뷰는 필립 크뤼슈텐이 1995년에 발표한 논문에서 제시한 것입니다.
이후 래셔널 통합 프로세스 rational unified process (RUP, UML 기반 객체지향 개발 방법론)에도 채택되면서 유명해졌습니다.

image

논리 뷰logical view는 소프트웨어의 논리적 구조를 나타내는 뷰포인트로, 레이어 구조, 컴포넌트 구조, 클래스 구조 등을 UML의 패키지 다이어그램이나 클래스 다이어그램 등을 이용해 표현합니다.

개발 뷰implementation view는 소프트웨어의 구현 관점에서 구조를 나타내는 뷰포인트로, 구현 뷰라고도 합니다.

프로세스 뷰process view는 시스템 실행 시의 프로세스 및 태스크의 병렬성과 동시성을 표현하는 뷰포인트입니다.

물리 뷰deployment view는 시스템의 각 모듈이 배치되는 환경을 표현하는 뷰포인트로, 배치 뷰라고도 합니다.
과거에는 주로 물리적 하드웨어 구성을 나타냈으나, 현재는 클라우드 환경, 가상 환경, 컨테이너 기반 환경 등을 반영하는 것이 일반적입니다.

마지막으로, 4+1 뷰의 ‘+1’에 해당하는 시나리오 뷰가 있습니다.
유스케이스 뷰use case view라고도 하며, 앞서 설명한 네 가지 뷰포인트로 표현된 아키텍처를 보다 쉽게 이해할 수 있도록 핵심 유스케이스 시나리오를 포함합니다.

C4 모델

C4 모델은 사이먼 브라운이 고안한 모델로, 시스템을 네 가지 서로 다른 추상화 레벨로 나누어 각 수준에 적합한 다이어그램을 사용해 아키텍처를 모델링합니다.

이 네 가지 추상화 레벨은 컨텍스트context, 컨테이너containers, 구성 요소components, 코드code로 구성됩니다.

필요에 따라 추상화 레벨을 조정하며 자신이 해결하고자 하는 특정 관심사(문제)에 가장 적합한 모델을 선택해 활용합니다.

image

컨텍스트는 가장 추상적인 레벨에서 소프트웨어 시스템과 외부 엔티티간의 상호작용을 파악하여 구조화한 모델링 단위이며, 시스템 컨텍스트 다이어그램으로 표현합니다.

컨테이너는 시스템을 구성하는 요소로, 독립적으로 배포 가능한 실행 단위입니다.

컴포넌트는 컨테이너 내부의 개별 요소로, 명확하게 정의된 인터페이스를 가지고 일관된 동작을 제공합니다.

코드는 실제 구현 단계에서의 구성 단위로, 객체 지향 언어에서는 클래스와 인터페이스가 이에 해당합니다.

이 책에서는 컨텍스트를 비즈니스나 업무 전체를 파악하는 요구사항 정의 활동의 일부로 간주하고, 아키텍처 설계에서 다뤄야 할 추상화 레벨로는 보지 않습니다.
그 외 내용은 아래 표3.11과 같은 관계를 가집니다.

표 3.11 C4 모델과 이 책의 설계 추상화 레벨 비교

C4 모델의 추상화 레벨 이 책의 설계 추상화 레벨
컨텍스트 없음
컨테이너 아키텍처 설계
컴포넌트 모듈 설계, 컴포넌트 설계
코드 클래스 설계

Metadata

Metadata

Assignees

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions