문제점
관련된 도메인들끼리 서로 참조하여 순환참조로 인한 문제가 발생했습니다.

- 🧐 이것을 어떻게 매끄럽게 순환참조를 없앨 수 있을지 고민을 해봤습니다.
대안
- Facade Pattern 패턴을 도입
- 한 곳에서 서비스를 관리하도록 만들어 해결하는 방법을 생각했습니다.
- 하지만 Facade Pattern을 도입하여 굳이 중간 Layer를 하나 거치도록 해야하는가? 에 대해 의문이 생겼으며 해당 방안이 순환참조를 완전하게 없애기 위한 명확한 방법은 아니라고 생각이 들었습니다.
- 다른 도메인의 Repository를 참조

이 방법은 개인적으로 Repository의 참조를 열어두면 다른 서비스에서 도메인의 값이 의도치 않게 변경되어서 사용될 가능성이 있기 때문에 위험한 방법이라고 생각했습니다.
✷ 변경되어질 가능성 : JPA를 사용하고 있는 시점에 Dirty Checking이 발생하기 때문.
해결

따라서 Service마다 Giver를 따로 만들어 다른 도메인에서 필요한 서비스는 Giver를 사용하도록 정책을 정하여 순환참조를 피하도록 구성하였습니다.
[Trade-Off]
- Giver에는 기존 ${domain}Service에서 제공하는 메소드와 동일한 기능이 때로는 담기기도 하는 단점이 발생합니다. (코드 중복)
- 관리해야할 파일이 도메인의 의해 비례적으로 늘어날 수 있는 점이 발생합니다.