[DDD] 응용 서비스의 역할

응용 서비스

  • 도메인 객체 ↔ 표현 영역 사이를 연결하는 창구 역할을 한다.
public Result doSomeCreation(CreateSomeReq req) {
    // 1. 데이터 중복 등 데이터가 유효한지 검사한다.
    validate(req);
    // 2. 애그리거트를 생성한다.
    SomeAgg newAgg = createSome(req); // 도메인 영역 
    // 3. 리포지터리에 애그리거트를 저장한다.
    someAggRepository.save(newAgg); // 레포지터리 영역
    // 4. 결과를 리턴한다.
    return createSuccessResult(newAgg); // 반환값의 전
}

응용 서비스가 복잡해진다면..

  • 도메인 로직의 일부를 구현하고 있을 가능성이 높습니다.
    • 코드 중복이나 로직 분산 등 코드 품질에 부정적 영향을 줄 수 있음.

또한 트랜잭션의 역할도 수행

  • 여러 회원을 차단 상태로 변경하는 경우
    • 하나의 회원은 차단 상태로 변경하였는데, 나머지 회원을 차단상태로 변경하지 못한 경우
    • 데이터의 일관성에 문제가 생길 수 있습니다!

또 다른 역할로는

  1. 접근 제어
  1. 이벤트 처리 가 존재하는데.. 이후에 설명하겠다고함

Uploaded by N2T