Skip to content

Latest commit

 

History

History
36 lines (24 loc) · 1.43 KB

외부_시스템_연동과_도메인_서비스.md

File metadata and controls

36 lines (24 loc) · 1.43 KB

외부 시스템 연동과 도메인 서비스

외부 시스템, 타 도메인과의 연동 기능 -> 도메인 서비스라 할 수 있다.

설문 조사 시스템과, 사용자 역할 관리 시스템이 분리되어 있다고 가정하자. 설문 조사 시스템은 설문 조사 생성 시 사용자의 생성 권한을 확인하기 위해 사용자 역할 관리 시스템과 연동해야 한다. 이때 설문 조사 도메인 입장에서는 사용자가 설문 조사 생성 권한을 가졌는지 확인하는 도메인 로직으로 볼 수 있다.

상위 모듈의 정책 입장에서 추상화하자. 즉 도메인 로직 관점

이때 설문 조사의 입장, 즉 도메인 로직이라는 관점에서 인터페이스를 구현한다. 상위 모듈의 정책 입장에서 추상화 하는 것과 같은 맥락.

public interface SurveyPermissionChecker {
    
    boolean hasUserCreationPermission(String userId);
}
public class CreateSurveyService {

    private final SurveyPermissionChecker permissionChecker;

    public Long createSurvey(CreateSurveyRequest request) {
        validate(req);

        if (!permissionChecker.hasUserCreationPermission(request.getUserId())) {
            throw new NoPermissionException();
        }
        
        // ...
    }
}

응용 서비스 CreateSurveyService가 도메인 서비스 SurveyPermissionChecker를 이용하여 설문 조사 생성 권한을 검사한다.