본문 바로가기
Today I...

[TIL] 도메인 주도 설계(DDD) 개론

by seeker00 2025. 2. 27.

도메인 주도 설계(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