HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
만들면서 배우는 클린 아키텍쳐
만들면서 배우는 클린 아키텍쳐
/
4️⃣
04장 - 유스케이스 구현하기
4️⃣

04장 - 유스케이스 구현하기

입력 유효성 검증

  • 일단 서비스의 책임은 아니다.
  • 책은 입력 모델(input model)(서비스 DTO)이 이문제를 다루도록 하는 예제를 설명한다.
 

비즈니스 규칙 검증

  • 서비스와 도메인 엔티티는 비즈니스 규칙 검증의 책임을 공유한다.
  • 일반적으로 검증을 위해 모델에 접근할 필요가 있는 규칙인 경우 비즈니스 규칙이라고 판단할 수 있다.
 

Rich domain model vs Anemic domain model

풍부한 도메인 모델
  • 애플리케이션의 코어에 있는 엔티티에서 가능한 많은 도메인 로직이 구현된다.
  • 엔티티들은 상태를 변경하는 메서드를 제공하고, 비즈니스 규칙에 맞는 유효한 변경만을 허용한다.
 
빈약한 도메인 모델
  • 엔티티 자체가 장히 얇다.
  • getter, setter 메서드만 포함하고 어떤 도메인 로직도 가지고 있지 않다.
  • 즉, 도메인 로직이 서비스에 구현돼 있다는 것
 

서비스의 리턴값

  • 입력과 비슷하게 출력도 가능하면 각 유스케이스 (서비스 로직)에 맞게 구체적일수록 좋다.
  • 맥락에서 반환 할 수 있는 가장 구체적인 최소한의 값이다.
  • 이런 고민에 정답은 없지만 유스케이스를 가능한 구체적으로 유지하기 위해서는 계속 고민해야한다.
 
  • 유스케이스 간에 같은 출력 모델을 공유하는 것은 지양하자
    • 유스케이스가 강하게 결합되고 출력 모델이 점점 커지게 된다.
  • 같은 이유로 도메인 엔티티를 출력 모델로 사용하고 싶은 유혹도 견뎌야 한다.
 

읽기 전용 유스케이스 (쿼리)

  • 쓰기가 가능한 유스케이스(커맨드)와 분류하는 것이 좋을 수 있다.