의존성 해결 어려움: 두 모듈이 서로를 참조할 경우, 어느 모듈을 먼저 로드해야 하는지 어렵다.
유지보수의 어려움: 순환 의존성이 존재하는 경우, 코드를 이해하고 유지보수하는 데 어려움이 생긴다.
기능 분리: 각 모듈이 수행하는 기능을 명확히 정의하고, 서로 필요한 기능을 다른 모듈로 분리한다. 예를 들어, 공통 기능이나 유틸리티 함수는 별도의 libs 모듈로 이동한다.
인터페이스 사용: 의존성을 줄이기 위해 인터페이스를 정의하고, 모듈 간에 인터페이스를 통해 통신하도록 설정한다.
ex) 각 모듈에서 필요한 기능을 인터페이스로 정의하고, 이를 구현한 클래스에서 실제 기능을 수행하도록 한다.
모듈 간 의존성 관리: 모듈이 서로 의존해야 하는 경우, 의존성을 관리할 수 있는 방법을 사용
ex) UserModule과 AuthModule에서 공통적으로 필요한 기능을 CommonModule로 분리하여 두 모듈이 CommonModule을 참조하도록 한다.