HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
도메인 주도 개발 시작하기
도메인 주도 개발 시작하기
/
6️⃣
6장 응용 서비스와 표현 영역
6️⃣

6장 응용 서비스와 표현 영역

 

6.1 표현 영역과 응용 영역

  • 표현 영역과 응용 영역은 사용자와 도메인 영역을 이어주는 역할을 한다.
notion image
 

6.2 응용 서비스의 역할

  • 응용 서비스는 도메인 객체 간의 흐름을 제어한다.
  • 보통 단순한 형태를 가진다.
  • 응용 서비스에서 도메인 로직을 가지지 않도록 주의하자.
  • 응용 서비스는 트랜잭션 처리도 담당한다.
 

6.3 응용 서비스의 구현

  • 응용 서비스는 파사드와 같은 역할을 한다.
  • 응용 서비스의 크기
    • 하나에 다 때려박은 MemberService
      • 코드 중복 (private method 방식)을 제거 하기 좋다
      • 코드 라인이 너무 길어진다.
    • 구분되는 기능별로 서비스 클래스를 구현
      • 한 서비스에 2~3개의 메서드만을 가지게 한다.
      • 클래스 개수는 많아지지만 코드 품질을 유지하는데 도움이 된다.
      • Helper class 로 중복을 방지할 수 있다.
      •  
  • 인터페이스가 필요한가?
    • 구현 클래스가 여러개인 경우? 그런 경우는 정말 드물다.
    • 테스트 용이성? mockito 같은 테스트 도구는 클래스에 대해서도 테스트 더블을 생성할 수 있게 도와준다.
    • 결론 - 글쌔요?
 
  • 계층별 매핑 객체
    • 애그리거트의 객체를 그대로 반환하면 망한다.
    • 인자를 넘기는 방식, 실행 결과를 반환하는 방식에 대해서 적절히 룰을 잡자.
 
  • 표현 영역에 의존하지 말라
 

6.4 표현 영역

  • 화면 제어
  • 응용서비스와 사용자의 중간 처리
  • 세션 관리
 
  • 결론 - 컨트롤러는 로직을 가지면 안된다.
  • 컨트롤러가 로직을 가질 수 있는 경우
    • 예외 처리
    • HTTP 헤더 등 응답 값 처리
 

6.5 값 검증

크게 유효성 검사와 비즈니스 로직 검사로 나뉜다.
구현 위치는 어디로?
  • 표현 영역?
  • 응용 서비스?
 
알아서 골라라
 

6.6 권한 검사

  • 스프링 시큐리티에 대한 이해도가 높다면 voter 를 사용해서 앞단에서 처리
  • 잘 모르면 그냥 응용 서비스에서 해라
 

6.7 조회 전용 기능과 응용 서비스

  • cqrs 를 적용하여 read 서비스를 cud 계열의 서비스와 완벽히 구분했다면
조회 응용 서비스는 사실 필요 없다는 것을 알 수 있다.
  • 도메인 로직이랄 것도 없으므로 표현 영역에서 바로 repository/dao 를 사용하는 것도 좋다.