DDD기초 - 도메인 서비스

roon-replica·2022년 8월 15일
0

architecture

목록 보기
1/3
  • 참고 자료
    • 도메인 주도 개발 시작하기(최범균, 한빛미디어)

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

  • 한 애그러거트로 기능을 구현할 수 없을 때, 계산의 주체는 어떤 애그리거트인지에 대한 문제
    • 예시) 결제 금액 계산 로직 -> 상품, 주문, 할인 쿠폰, 회원
    • 한 애그리거트에 넣기 모호한 도메인 기능을 특정 애그리거트에 구현하면 안 된다고 함
      자신의 책임 범위를 넘어가기 때문이라고 함
      도메인 기능을 별도 서비스로 구현하는 방식으로 해결할 수 있다고 함..

도메인 서비스

  • 도메인 서비스는 도메인 영역에 위치한 도메인 로직을 표현할 때 사용한다고 함..
    응용 서비스가 응용 로직?을 다룬ㅏ고 하면 도메인 서비스는 도메인 로직을 다룸.
    주로 다음과 같은 상황에 사용된다고 함

    1. 계산 로직.
      여러 애그리거트가 필요한 로직, 한 애그리거트에 구현하기에는 복잡한? 로직.
      도메인 서비스를 사용하는 주체는 애그리거트가 될 수도 있고, 응용 서비스가 될 수도 있다고 함

    2. 외부 시스템 연동이 필요한 도메인 로직
      현재 시스템 A가 외부 시스템 B와 연동할 때 인터페이스는 연동한다는 관점으로 작성하지 않고,
      A의 도메인 로직 관점에서 작성한다!!
      DIP 적용할 때, infra 기준으로 인터페이스 만드는게 아니라 도메인 기준으로 만들었던 것과 동일한 개념인듯?

  • 패키지는 도메인 영역에 위치..
    도메인 로직을 표현하기 때문이라고 함

의문점

  • 도메인 기능을 별도 서비스로 구현하는 방식이 어떤 모습인지 모르겠음
  • 한 애그리거트에 구현하기에는 복잡한 로직이 어떤걸까
  • 외부 시스템 연동이 필요한 도메인 로직은 어떤 것이 있을까?
    -> 주문 취소하면 결제도 취소해야하는데 결제 취소는 외부 서비스 주로 사용한다고 함
  • 테스트하기 쉬워진다라는 말을 체감하지 못함.
    테스트 코드는 언제 꼭 필요할까?
profile
집중 ➝ 프로세서↑ 시간 투자 ➝ 디스크↑

0개의 댓글