본문 바로가기

Memo

서비스 계층과 도메인 서비스

흔히 말하는 서비스 계층은 애플리케이션 서비스 계층인데 외부에서 오는 요청을 처리해 연산을 오케스트레이션한다. 즉 서비스 계층이 다음과 같은 간단한 단계를 수행하여 애플리케이션을 제어한다는 의미.

  • 데이터베이스에서 데이터를 얻는다.
  • 도메인 모델을 업데이트한다
  • 변경된 내용을 영속화 한다.

비즈니스 로직과 분리하면 프로그램을 깔끔하게 유지하는 데 도움이 된다.
두번째는 도메인 서비스. 도메인 모델에 속하지만 근본적으로 상태가 있는 엔티티나 값 객체에 속하지 않는 로직을 부르는 이름임. 여기서 예를 들면 쇼핑카트 어플리케이션에서 세금 관련 규칙을 구현한다면. 이건 쇼핑 카트 업데이트 작업과는 별개다. 중요한 부분이지만 세금만을 위한 영속적인 엔티티를 사용하는 것은 바람직하지 않음. 대신 상태가 없는 TaxCalulator나 calculate_tax함수를 사용해 세금 계산 작업 수행함.

추가적으로

  •  컨트롤러에서 오케스트레이션 로직이 생길 때 서비스 계층을 만드는게 낫다고함.
  • 풍부한 도메인 모델로 얻을 수 있는 이익 대부분은 단순히 컨트롤러에서 로직을 뽑아내 모델 계층으로 보내는 것만으로 얻을 수 있다. 그 사이에 계층을 추가할 필요가 없다고함.

 

참고 및 출처: <파이썬으로 살펴보는 아키텍처 패턴: TDD, DDD, EDM 적용하기)> (해리 퍼시벌, 밥 그레고리 지음, 오현석 옮김,  한빛미디어 , 2021)

'Memo' 카테고리의 다른 글

GKE 기반 쿠버네티스와 GitHub Actions으로 배포 자동화  (1) 2023.10.24
외부 API 결과에 캐싱 도입  (0) 2023.10.14
저장소 패턴  (0) 2023.09.29
React. UseMemo, useCallback, React.Memo  (0) 2022.01.22
TS. 덕타이핑  (0) 2022.01.21