- 함수형 도메인 모델을 위한 소프트웨어 아키텍처를 간략하게 살펴봄
- 바운디드 컨텍스트나 도메인 이벤트 같은 DDD 개념들이 소프트웨어로 어떻게 변환되는지 봄
C4 접근법에서의 소프트웨어 아키텍처는 다음의 네 가지 계층으로 이뤄짐
- ‘시스템 맥락’은 최상위 레벨로 전체 시스템을 나타냄
- 시스템 맥락은 웹사이트, 웹서비스, 데이터베이스 등과 같은 배포 단위인 ‘컨테이너’들로 이뤄짐
- 다시 개별 컨테이너는 코드를 구성하는 주요요소인 ‘컴포넌트’들로 이뤄짐
- 마지막으로 각 컴포넌트는 일련의 저수준 메서드나 함수를 포함하는 ‘클래스’들로 이뤄짐
좋은 아키텍처의 목표는 컨테이너, 컴포넌트, 모듈 간의 다양한 경계를 정의하여 새로운 요구사항이 발생에 따른 ‘변경 비용’을 최소화하는 것
3.1 경계 진 맥락을 자율적인 소프트웨어 컴포넌트로
맥락은 경계가 명확한 자율적인 하위 시스템이어야 한다는 제약 사항이 붙지만, 이에 적용할 만한 아키텍처 스타일이 여럿 있음
C4 용어의 단일 컨테이너로 구현한 경우는 간단한데, 바운디드 컨텍스트가 인터페이스가 명확한 별도 패키지에 대응함
- 각 바운디드 컨텍스트 별로 컨테이너로 배포할 수도 있는데, 이는 전통적인 서비스 지향 아키텍처임
- 또는 더 세분화하여 개별 작업 흐름별로 독립형 컨테이너를 만들면, 마이크로서비스 아키텍처가 됨
- 바운디드 컨텍스트끼리 서로 분리되어 자율성을 유지하고 있다면 논리적 디자인과 배포 가능 단위를 어떻게 대응할지는 중요하지 않음