멀티 모듈 기본 개념

이지니·2025년 11월 2일

TIL

목록 보기
8/11

새로운 프로젝트를 시작하는데 튜터님이 멀티 모듈에 대해 공부해보라고 과제를 주셨습니다.
직접 멀티 모듈을 설계하고 작성하는 것까지는 아직 어렵겠지만, 공부하면서 이해한 기본 개념에 대해 정리합니다.

멀티 모듈 프로젝트란?

  • 하나의 루트 프로젝트(시스템) 안에 여러 개의 하위 모듈(프로젝트 단위)을 두고 각 하위 모듈이 독립적으로 책임을 가지면서도 함께 관리되는 구조
  • 사용자와의 접점을 담당하는 서버(web프로젝트), DB와의 접점을 담당하는 서버(api프로젝트), 공통 라이브러리 프로젝트 등으로 나누어 개발하고 빌드하는 방식

장점

  • 중복 코드 제거: 여러 하위 모듈에서 쓰이는 공통 코드를 한 곳(모듈)에서 관리합니다.
  • 책임 분리: 각 모듈이 자기 역할만 갖게 만들기 때문에 코드를 더 깔끔하게 작성할 수 있습니다.
  • 의존성/발드 관리 용이: 루트에서 하위 모듈 포함을 설정해놓으면 전체 빌드/관리 흐름을 정리할 수 있습니다.

주의할 점 / 문제 사례

  • 공통 모듈의 저주 : 모든 기능이 '공통' 모듈로 몰리게되어 초기 의도와 다르게 거대해지고 책임이 섞여 관리가 어려워지는 문제점이 발생할 수 있습니다.
  • 불필요한 의존성 덩어리 : 어떤 하위 모듈은 특정 기능이나 인프라만 쓰는데, 공통 모듈에 무거은 의존성들이 들어가 있으면 오히려 어플리케이션 최적화에 방해가 됩니다.

공통 모듈 프로젝트 계층 구조

  • 독립 모듈 계층
    시스템과 무관하게 어디에서나 사용 가능한 라이브러리 성격의 모듈

  • 공통 모듈 계층
    시스템 내 여러 모듈에서 공통으로 쓰일 수 있는 타입(예: DTO, Util) 같은 아주 얕은 의존성만 갖는 모듈

  • 도메인 모듈 계층
    비즈니스 핵심 도메인 모델 + 저장소(Repositoey) + 도메인 서비스를 다루는 모듈.
    시스템 여러 애플리케이션에서 참조될 수 있음

  • 내부 모듈 계층
    저장소, 도메인 외 시스템에서 필요한 지원/인프라 역할을 하는 모듈
    (예: 외부 통신 클라이언트, 이벤트 발행 등)

  • 어플리케이션 모듈 계층
    실제 실행 가능한 애플리케이션 단위(예: API 서버, 배치 모듈)로 위 계층들을 조합해서 만들어짐


마치며

이번 프로젝트에서 멀티 모듈 작성을 한 번 쯤은 해볼 것 같은데, 더 자세하게 공부해서 글 보완할 수 있도록 하겠습니다.

참조:
https://techblog.woowahan.com/2637/
https://jojoldu.tistory.com/123

profile
화이팅

0개의 댓글