도메인 주도 설계(DDD)의 필요성
- 도메인(해결하고자 하는 문제의 영역)을 중심으로 소프트웨어를 설계하는 것
- 도메인을 명확히 구분하고 객체 간 관계를 올바르게 설계하기 위함
바운디드 컨텍스트 이해하기
- 큰 시스템을 여러 개의 작은 컨텍스트로 나누어 각 컨텍스트 내에서 특정한 비즈니스 규칙과 데이터 모델이 적용되는 것을 의미한다.
- 각 컨텍스트는 독립적으로 설계되고 구현되며, 서로 다른 컨텍스트 간에는 인터페이스를 통해 상호작용한다.
- 여러개의 애그리거트를 포함할 수 있다.
애그리거트(루트) 이해하기
- Aggregate 는 도메인 모델에서 논리적으로 하나의 단위로 묶여야 하는 객체들의 집합
- Aggregate Root 는 애그리거트를 대표하는 객체
- 애그리거트의 유일한 진입점(entry point) 역할을 하는 객체
- why?
- 데이터의 일관성 유지
- 변경 범위 (트랜잭션) 제어
- 도메인 모델을 명확하게 만들기
- 엔티티 간 직접 참조를 방지
- 결합도 낮춤
- 데이터 저장소(Repository)와의 관계 정리
- 애그리거트 루트 외엔 Repository 를 만들지 않는다.
도메인 관점으로 설계하기
- 개념 모델 작성
- 도메인 구현 모델 작성
- 개념 모델을 구현 모델(클래스)로 변경
- 하위 도메인과 연관 관계
- 바운디드 컨텍스트를 설정
DDD 4계층
- presentation
- application
- domain
- infrastructure
참고자료
'Today I...' 카테고리의 다른 글
[TIL]JWT 만료 처리 방안 팁 (0) | 2025.03.04 |
---|---|
[TIL]오늘의 노트 (0) | 2025.02.20 |
[TIL]오늘의 노트 (0) | 2025.02.19 |
[TIL]오늘의 노트 (0) | 2025.02.18 |
오늘의 노트 (0) | 2025.02.16 |