하위 도메인과 모델
도메인은 다수의 하위 도메인으로 구성된다. 각 하위 도메인이 다루는 영역은 서로 다르기 때문에 같은 용어라도 하위 도메인마다 의미가 달라질 수 있다. 예를들어, 카탈로그 도메인의 상품이 상품 가격, 상세 내용을 담고 있는 정보를 의미한다면 배송 도메인의 상품은 고객에게 실제 배송되는 물리적인 상품을 의미한다.
모델의 각 구성요소는 특정 도메인을 한정할 때 비로소 의미가 완전해지기 때문에, 각 하위 도메인마다 별도로 모델은 만들어야 한다.
아키텍처 구성
계층 | 설명 |
---|---|
표현 |
사용자 혹은 외부 시스템의 요청을 처리하고 사용자에게 정보를 보여준다. |
응용 |
사용자가 요청한 기능을 실행한다. 업무 로직을 직접 구현하지 않고 도메인 계층과 조합한다. |
도메인 |
시스템이 제공할 도메인의 규칙을 구현한다. |
인프라스트럭쳐 |
데이터베이스나 메시징 시스템과 같은 외부 시스템과 연동을 처리한다. |
문서화
문서화를 하는 주된 이유는 지식을 공유하기 위함이다. 모든 것은 코드를 보면 알 수 있지만 코드는 상세한 모든 내용을 다루므로 전반적인 기능 목록이나 모듈 구조 등은 정리한 문서를 참조하는 것이 빠르게 이해하는 데 도움이 된다.
도메인 관점에서 코드가 도메인을 잘 표현해야 비로소 코드의 가독성이 높아지며 문서로서 코드가 의미를 갖는다.