도메인 주도 개발 정리 2-1.

Mong·2023년 7월 9일

DDD

목록 보기
3/3

2.4 도메인 영역의 주요 구성요소

  • 엔티티(ENTITY) : 고유의 식별자를 갖는 객체로 자신의 라이프 사이클을 갖는다. 도메인 모델의 데이터를 포함하며 해당 데이터와 관련된 기능을 함께 제공한다.
  • 밸류(VALUE) : 고유의 식별자를 갖지 않는 객체로 개념적으로 하나의 값을 표한할 때 사용한다. 엔티티의 속성으로 사용할 뿐만 아니라 다른 밸류 타입의 속성으로 사용한다.
  • 애그리거트(AGGREGATE) : 애그리거트는 연관된 엔티티와 밸류를 개념적으로 하나로 묶은 것이다. 애그리거트를 사용하면 개별 객체가 아닌 관련 객체를 묶어서 객체 군집 단위로 모델을 바라볼 수 있다.(큰 틀에서 모데인 모델 관리 가능)
  • 리포지토리(REPOSITORY) : 도메인 모델의 영속성을 처리한다. 엔티티나 밸류가 요구사항에서 도출되는 도메인 모델이라면 리포지토리는 구현을 위한 도메인 모델이다.
  • 도메인 서비스(DOMAIN SERVICE) : 특정 엔티티에 속하지 않는 도메인 로직을 제공한다. 도메인 로직이 여러 엔티티와 밸류를 필요로 하면 도메인 서비스에서 로직을 구현한다.

2.5 요청 처리 흐름

  1. 웹 브라우저를 통해 HTTP 요청을 받고, 표현 영역에 해당하는 컨트롤러는 HTTP 요청 파라미터를 응용 서비스에 맞게 변환하여 전달한다.(표현 영역은 사용자가 전송한 데이터 형식이 올바른지 검사하고 응용 영역에 기능 실행 위임)
  2. 응용 서비스는 도메인 모델을 이용해서 기능을 구현한다. 기능 구현에 필요한 도메인 객체를 리포리토리에서 가져오거나 신규 도메인 객체를 생성하여 리포지토리에 저장한다.
  3. 도메인 로직을 실행하여 나온 결과를 다시 표현영역을 거쳐 HTTP 응답으로 전송한다.

2.6 인프라스트럭처의 개요

  • 인프라스트럭쳐는 표현, 응용, 도메인 영역들을 지원한다. DIP 내용대로 도메인 영역과 응용 영역에서 인프라스트럭처의 기능을 직접 사용하는 것보다 이 두 영역에서 정의한 인터페이스를 인프라스트럭처 영역 내에서 구현하는 것이 시스템을 유연하고 테스트도 용이해진다.
  • 무조건적인 인프라스트럭처에 대한 의존성을 없앨 필요는 없다.(@Transactional)

2.7 모듈 구성

  • 적정 수준에 맞춰 도메인들을 패키지로 묶는다.

참고 : 도메인 주도 개발 시작하기(최범균님 지음)

0개의 댓글