🤨멀티 모듈을 생각하게 된 배경
- 특정 도메인을 한 눈에 찾기가 어렵다.
- 파일이 많아지게 되면 layer 안에 특정 도메인을 찾기가 어려워진다.
- 이렇게 되면 어떤 도메인이 어떤 service 와 controller 로 이어지는지 알기 힘들어진다.
- 독립적인 배포가 필요하다.
- 배포하는 도중에는 해당 서비스를 사용할 수 없다.
- 하지만 배포하는 도중 아무 상관 없는 서비스도 사용을 못 해서는 안 된다고 생각했다.
- 예를들어, 구매 서비스에 문제가 생겨서 수정 후 배포중이라고 해서 기존에 사용자가 보고 있던 상품 목록도 볼 수 없게되면 너무 비효율적이라는 생각이 들었다.
- 단일 모듈의 한계
- 패키지끼리 의존성이 강해서 하나의 수정이 N개의 오류를 발생시킬 수 있다.
- 프로젝트규모가 커지면 각 패키지가 담당하는 역할이 모호해진다.
🧐멀티 모듈이란?
- 멀티 모듈을 만든다는 것은 상호 연결된 여러개의 모듈로 구성된 프로젝트를 의미한다.
- 하나의 서비스 혹은 프로젝트를 모듈별로 나누어 개발한다.
- 각 모듈을 독립적으로 빌드하고 배포할 수 있으며 다른 모듈과 의존성을 가진다.
- 다시 말해, 각각의 모듈들 중 필요한 모듈들끼리 의존성을 연결 할 수 있다.
장점👍
- 코드의 중복을 피할 수 있으며 각각 모듈이 분리되어 있어서 유지보수가 쉽다.
단점👎🏻
- 서비스 모듈별 설정파일과 패키지 의존성 관리에 신경을 써야한다.
멀티 모듈의 구조
- common
- 컨트롤러단을 위한 모듈
- domian
- 서비스단을 위한 모듈
- storage
- 레포지토리를 위한 모듈(db통신)