Chapter 7 도메인 서비스
7.1 여러 애그리거트가 필요한 기능
∘ 여러 개의 애그리거트가 필요한 경우가 있음 ex. 결제 금액 계산 로직의 경우 상품, 주문, 할인 쿠폰, 회원 애그리거트가 필요함
∘ 복잡하다고 기능과 관련 없는 구성 요소가 있는 애그리거트에 기능을 넣으면 안 됨
∘ 애그리거트가 자신의 책임 범위를 넘어서는 기능을 구현하게 되면 외부에 대한 의존이 높아지고 코드 수정이 어려워짐
∘ 애그리거트가 여러 개 있을 때 기능을 어디에 구현할지에 대한 문제가 생기면 도메인 기능을 별도 서비스로 구현하면 됨
7.2 도메인 서비스
∘ 도메인 서비스는 도메인 영역에 위치한 도메인 로직을 표현할 때 사용
7.2.1 계산 로직과 도메인 서비스
∘ 특정 애그리거트에 넣기 어려운 도메인 개념은 도메인 서비스를 이용해서 명시적으로 나타내면 됨
∘ 도메인 서비스는 상태 없이 로직만 구현함
∘ 도메인 서비스에서 타입과 메서드의 이름은 도메인의 의미가 드러나는 용어로 지음
∘ 도메인 서비스는 도메인 로직을 수행
∘ 트랜잭션 처리 같은 응용 로직은 도메인 서비스가 아닌 응용 서비스에서 처리
7.2.2 외부 시스템 연동과 도메인 서비스
∘ 외부시스템이나 타 도메인과의 연동 기능이 도메인 서비스가 될 수 있음
7.2.3 도메인 서비스의 패키지 위치
∘ 도메인 서비스는 다른 도메인 구성요소와 동일한 패키징에 위치함
∘ 도메인 서비스가 많아서 구분하고 싶으면 도메인에서 하위 패키지를 두면 됨
7.2.4 도메인 서비스의 인터페이스와 클래스
∘ 도메인 서비스의 로직이 고정되어 있지 않은 경우 도메인 서비스 자체를 인터페이스로 구현하고, 그걸 구현한 클래스를 따로 둘 수 있음
∘ 도메인 서비스의 구현이 특정 기술에 의존하거나 외부 시스템의 API를 실행한다면 도메인 서비스는 인터페이스로 추상화해야 됨 → 특정 구현에 종속하는 거 막음, 도메인 영역 테스트 쉬워짐
'Back-End > 도메인 주도 개발 시작하기' 카테고리의 다른 글
[DDD] 도메인 주도 개발 시작하기 Ch9 (0) | 2024.04.08 |
---|---|
[DDD] 도메인 주도 개발 시작하기 Ch8 (0) | 2024.04.01 |
[DDD] 도메인 주도 개발 시작하기 Ch6 (0) | 2024.03.25 |
[DDD] 도메인 주도 개발 시작하기 Ch5 (0) | 2024.03.25 |
[DDD] 도메인 주도 개발 시작하기 Ch4 (0) | 2024.03.18 |