yesolje
멀티모듈 구조로 Spring 프로젝트 리팩토링 본문
오늘은 단일모듈 기반의 프로젝트를 멀티모듈 구조로 리팩토링한 경험과, 멀티모듈이 왜 필요한지 - 어떤 방식으로 구성해야 하는지 고민한 기록들을 정리해 보려고 합니다.
1. 멀티모듈이란
멀티모듈은 하나의 큰 프로젝트를 역할별로 작은 모듈(서브 프로젝트) 로 나누어 구성하는 방식을 말합니다. 사실, 대부분의 서비스는 단일 프로젝트로 구성하는 일이 드뭅니다. 프로젝트가 일정 규모 이상으로 커지게 되면 사용자와의 접점을 담당하는 서버, 각종 api 및 batch를 비롯한 시스템의 부피가 늘어나게 되고, 이 경우 단일 프로젝트에서 구성할 경우 동일한 Domain을 시스템 갯수만큼 복사 붙여넣기 해야 하기 때문입니다. 이를 보완하기 위해 프로젝트를 멀티모듈 구조로 구성하는 방법은 공통으로 사용하는 코드를 모아놓기 때문에 역할 분리 및 재사용성 측면에서 효과가 좋은 방법이라고 볼 수 있습니다. 멀티모듈 구조에서 각 모듈은 서로 독립적인 책임을 가지며, 필요에 따라 다른 모듈에 의존할 수 있습니다.
Java/Spring 환경에서는 Gradle이나 Maven을 사용해 모듈 간의 의존성과 빌드 관리를 수행합니다.
📌 멀티모듈이 필요한 이유
- 역할 분리: 프로젝트의 각 계층(domain, web, batch 등)을 명확히 나눌 수 있어 유지보수가 용이해짐
- 재사용성 향상: 공통 로직을 common 모듈로 분리하여 여러 모듈에서 재사용 가능
- 의존성 제어: 어느 모듈이 어디에 의존하는지 명확히 할 수 있음
- 배포 및 테스트 최적화: 특정 모듈만 따로 빌드하거나 테스트 가능
단일 모듈에서는 공통 코드가 뒤엉기거나, 계층 간 의존 관계가 꼬이기 쉬운데 멀티모듈 구조를 도입하면 이런 문제를 예방할 수 있습니다.
2. 멀티모듈의 구성
- 내가 참고한 멀티모듈 구조&설명
개인 공부용으로 쓰는 소규모 프로젝트이지만, 후에 Batch 및 스케줄링 등등 별도의 시스템이 늘어난다는 가정하에 염두에 둔 계층 구조는 다음과 같습니다.

📦 storeManagingSystem
┣ 📁 store-managing-api ← 실제 애플리케이션 실행 (Web, Controller 등)
┣ 📁 store-managing-core ← 도메인 로직, Service, Repository 등
┣ 📁 store-managing-common ← 공통 DTO, Util, Enum 등
┗ 📁 store-managing-batch ← Spring Batch 전용 Job/Step 정의

3.단일 모듈 프로젝트 리팩토링
4. 마무리
'기술' 카테고리의 다른 글
| Scapy를 활용한 실시간 TCP 패킷 수집과 Kafka‑DB 데이터 파이프라인 구축 (1) | 2025.07.24 |
|---|---|
| Spring의 기능 확장 - 상속과 템플릿 메소드 패턴 (0) | 2025.06.01 |
| 스프링 빈(Spring bean) 생명주기 (0) | 2025.05.08 |
| 캐시(Cache) 의 동작 원리 (0) | 2025.05.01 |
| Spring Validator를 이용한 전역 검증체계 구축 (1) | 2024.11.17 |