본문 바로가기

책터디/도메인주도설계철저입문

04. 부자연스러움을 해결하는 도메인 서비스

서비스란?

소프트웨어 개발에서 말하는 서비스는 클라이언트를 위해 무언가를 해주는 객체를 말한다.

 

도메인 주도 설계에서 말하는 서비스

  1. 도메인을 위한 서비스
  2. 애플리케이션을 위한 서비스

 

도메인 서비스란?

시스템에는 값 객체나 엔티티로 구현하기 어색한 행동도 있다. 도메인 서비스는 이런 어색함을 해결해주는 객체다.

도메인 서비스는 자신의 행동을 바꿀 수 있는 인스턴스만의 값을 갖지 않는다는 점에서 값 객체나 엔티티와 다르다

 

도메인 서비스의 사용

생각 없이 모든 처리 코드를 도메인 서비스로 옮기면 다른 도메인 객체는 그저 데이터를 저장할 뿐, 별다른 정보를 제공할 수 없는 객체가 되는 결과는 낳는다.

 

물론 도메인 서비스로 옮기지 않으면 어색한 행위도 있다. 어떤 행위를 값 객체나 엔티티에 구현할지 아니면 도메인 서비르에 구현할지 망설여진다면 우선 엔티티나 값 객체에 정의하는 것이 좋으며, 도메인 서비스에 행위를 구현하는 것은 가능한 한 피해야 한다.

 

도메인 서비스 예

도메인 서비스 중에는 데이터스토어 같은 인프라스트럭처와 엮이지 않고 도메인 객체만 다루는 것도 있다.

오히려 그런 도메인 서비스가 진짜 도메인 서비스라고 할 수 있다.