멀티모듈이란, 하나의 프로젝트를 여러 개의 독립적인 모듈로 나누어 관리하는 프로젝트 구조
공통으로 사용하는 코드를 공통으로 관리, 각 모듈을 독립적으로 배포가능, 모듈 간 서로 의존성을 가지며 연결함
모듈 : 독립적으로 운영될 수 있는 의미를 가지는 구성요소 단위
필요성
○ Web과 API에서 공통으로 사용되는 코드의 관리
○ 단일 모듈의 한계
적용
1. 프로젝트 분리의 기준 정하기
2. 각 모듈의 의존성 관리 방법 결정
3. 모듈별 독립적인 빌드와 배포환경 구성
4. 모듈간의 인터페이스 명확하게 정의, 공통 기능 별도의 모듈로 분리
5. 멀티 모듈 구조의 적용은 지속적인 리팩토링과 개선 과정을 통해 이루어짐
* 도메인 관점에서 진행할 경우
- 팀 단위 작업 분리, 유지보수 용이, 비즈니스 로직 집중, 확장성
- 중복 코드의 단점 가질 수 있음
멀티 모듈 경계 나누기
- Boot (서버 모듈)
- Infra (연동 모듈)
- Cloud (클라우드-시스템 모듈)
- Data (데이터 모듈 + 도메인)
공통 모듈의 저주
- 필요하지만 변경이 모든 모듈에 영향을 끼칠 수 있으므로 가장 엄격하게 관리되어야 함
모놀리틱 아키텍처
- 하나의 통합된 코드로 여러 비즈니스 기능을 수행 (전통적인 아키텍처)
참고 링크
[Spring Boot] 멀티 모듈 구조(Multi Module Architecture) 적용기
[Spring Boot] 멀티 모듈 구조(Multi Module Architecture) 적용기
글을 시작하기 전에 최근 멀티 모듈 구조를 도입했다. 아니 정확히 말하면 도입하는 중이다.. 1차적으로 분리와 리팩토링은 완료했으나, 구조를 100%로 이해한 건 아니라서 조금씩 공부하면서 개
soso-hyeon.tistory.com