프로젝트를 멀티 모듈로 구성하는것은 아래와 같은 이점들을 챙길 수 있다.
- 1)계층간 의존성에 대한 제약을 두어 올바른 소프트웨어 아키텍처를 유지하기 위해(ex. api -> domain -> dao 식으로 단방향으로만 유지시키기 위해)
- => 관심사의 분리를 통해 단방향으로만 의존하게함으로써 변경으로 인한 영향을 최소화시킬 수 있음
- 2)모듈간의 적절한 격리를 통해 추후 변경을 용이하게 만들기 위해 (ex. db 를 JPA 를 통해 접근하다 비즈니스 관점에서의 필요성에 의해 MyBatis 로 바꾸는등)
- 3)재사용성을 높이기 위해 (ex. 로깅, 인증과 같은것들을 별도 모듈로 분리하여 다른 여러 모듈에 꽂아서 쓸수 있도록)
단, 이를 어떻게 구성하는냐는 팀 내부에서 원만한 소통과 협의가 필요하며 이에 따라 달라질 수 있다. 적절한 trade-off를 고려하여 팀과 제품 상황에 맞는 최적의 멀티 모듈 구조를 가져가는게 중요하다.
실제 멀티 모듈 구성 관련해서는 아래 레퍼런스들을 참고하면 도움된다.