도메인 주도 개발 시작하기 도메인 서비스 ch7

김종완·2023년 11월 5일
1

도메인 서비스

여러 애그리거트가 필요한 기능

한 애그리거트로 기능을 구현할 수 없을 때가 있다. 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안 된다. 억지로 구현하면 애그리거트는 자신의 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존이 높아지게 되며 코드를 복잡하게 만들어 수정을 어렵게 만드는 요인이 된다.
이런 문제를 해소하는 방법 중 하나는 바로 도메인 기능을 별도 서비스로 구현하는 것이다.

도메인 서비스

  • 응용 영역의 서비스가 응용 로직을 다룬다면 도메인 서비스는 도메인 로직을 다룬다.

  • 도메인 영역의 애그리거트나 밸류와 같은 구성요소와 도메인 서비스를 비교할 때 다른 점은 도메인 서비스는 상태 없이 로직만 구현한다는 점이다.

  • 도메인 서비스는 다음과 같은 상황에서 주로 사용된다.

    • 계산 로직 : 여러 애그리거트가 필요한 계산 로직이나, 한 애그리거트에 넣기에는 다소 복잡한 계산 로직이다.
    • 외부 시스템 연동이 필요한 도메인 로직: 구현하기 위해 타 시스템을 사용해야 하는 도메인 로직이다.
  • 서비스를 사용하는 주체는 애그리거트가 될 수도 있고 응용 서비스가 될 수도 있다.

  • 애그리거트 객체에 도메인 서비스를 전달하는 것은 응용 서비스 책임이다.

  • 도메인 서비스는 도메인 로직을 표현하므로 도메인 서비스의 위치는 다른 도메인 구성요소와 동일한 패키지에 위치한다.

profile
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.

0개의 댓글