7장 도메인 서비스

박준수·2024년 8월 22일
0

DDD 스터디

목록 보기
7/11
post-thumbnail
post-custom-banner

7.1 애그리거트가 필요한 기능

  • 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안된다.
  • 억지로 구현하면 애그리거트는 자신의 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존이 높아지게 되며 코드를 복잡하게 만들어 수정을 어렵게 만드는 요인이 된다.
  • 애그리거트의 범위를 넘어서는 도메인 개념이 에그리거트에 숨어들어 명시적으로 드러나지 않게 된다.

7.2 도메인 서비스

  • 도메인 영역에 위치한 도메인 로직을 표현할 때 사용
    • 계산 로직 : 여러 애그리거트가 필요한 계산 로직이나, 한 애그리거트에 넣기에는 다소 복잡한 계산 로직
    • 외부 시스템 연동이 필요한 도메인 로직 : 구현하기 위해 타 시스템을 사용해야 하는 도메인 로직

주의사항

  • 의존 주입을 하기 위해 애그리거트 루트 엔티티에 도메인 서비스에 대한 참조를 필드로 추가한 경우

    • 도메인 객체는 필드로 구성된 데이터와 메서드를 이용해서 개념적으로 하나인 모델을 표현함
    • 도메인 서비스 필드는 데이터 자체와는 관련이 없음, 데이터베이스에 저장 대상도 아님
    • 또한 도메인 객체에서 제공하는 모든 기능에서 도메인 서비스를 필요로 하는 것도 아님
    • 일부 기능을 위해 굳이 도메인 서비스 객체를 애그리거트에 의존 주입할 이유는 없음
  • 특정 기능이 응용 서비스인지 도메인 서비스인지 감을 잡기 어려울 때는 해당 로직이 애그리거트의 상태를 변경하거나 애그리거트의 상태 값을 계산하는지 검사해 보면 된다.

    • 도메인 서비스 : 애그리거트를 변경하고 애그리거트의 값을 계산하는 도메인 로직
    • 응용 서비스 : 트랜잭션 처리 등
profile
방구석개발자
post-custom-banner

0개의 댓글