Published on

레이어 분리의 필요성

Authors
  • avatar
    Name
    GarlGaru
    Twitter
순환참조

Team 과 Member 도메인을 구현하는 도중에 순환참조가 발생하였습니다.

서비스 레이어를 2개로 나누는 것을 먼저 배웠습니다만 이번에는 하면서 어떤 문제가 발생할지 실제로 시험해보고 싶었기 때문에 통짜서비스를 하나씩 만들어 놓은 상태였습니다

team에서는 create때 리더를 자동 가입시키는 과정에서 memberService를 참조하고
Member에서는 정말 간단한 조회, isExist와 find 만 사용하고 있습니다.

여기서 team만 분리시키면 될거같지만
앞으로 멤버에게 권한을 부여하는 것을 구현할텐데, 그러면 team에서 member를 참조할때 또 같은 문제가 발생할것 같습니다.
그러므로 하는김에 team과 member를 둘다 분리해 주도록하겠습니다

순수 쿼리로 하는 방법도 생각해봤지만 재사용성이 보장되지 않고 에러 메세지 관리 측면에서도 이점이 있습니다.

isExist

이처럼 그저 존재하는가를 판단하는데만 중복코드가 많이 발생할 수 있습니다.

필요할때 조회하면서 에러처리까지 넣어준다면 비즈니스 로직에서 훨씬 코드가 간결해질 것입니다.

디렉토리 구조

application 레이어와 domain 레이어로 나누고

domain Service

DB 작업을 분리해줍니다.

간단해짐

왼쪽이 before 이고 오른쪽이 after 입니다. 순환참조 문제를 해결함과 동시에
비즈니스 로직의 코드도 훨씬 간결해진것을 볼 수 있습니다