Close
Close full mode
logo만렙 개발자 키우기

멀티 모듈 프로젝트

Git RepositoryEdit on Github
Last update: a year ago by nowwaterReading time: 2 min

모듈의 정의

모듈은 여러 가지로 정의될 수 있지만, 일반적으로 큰 체계의 구성요소이고, 다른 구성요소와 독립적으로 운영된다. wikipedia

우리가 제공받는 의존 라이브러리들도 모두 모듈이다.

  • 모듈은 독립적인 의미를 갖는다.
  • 모듈은 어떠한 추상화 정도에 대한 계층을 가지고 있다.
  • 계층 간 의존 관계에 관한 규칙이 존재한다.

Gradle을 이용한 멀티 모듈 프로젝트 관리

서로 독립된 프로젝트 단위로 여러 개의 프로젝트를 통해 시스템을 개발할 경우

가장 큰 문제점은 시스템의 중심 Domain이 가져야할 규칙과 구조 등을 동일하게 보장해주는 매커니즘이 없다 는 것이다.

그렇게 되면 여러 개의 어플리케이션에 동일한 Domain을 복사-붙여넣기 해야하는 무의미한 반복이 발생한다.

또한 이 과정에서 많은 양의 코드를 수정해야하고 실수를 할 여지가 발생하게 된다.

나는 개인적으로 코딩에 있어서 여지라는 단어를 중요하게 생각한다. 알고리즘 문제를 풀다가도 에러가 날 여지가 있는 코드는 되도록이면 피해갈려고 한다. 조금이라도 실수가 발생할 가능성있다면 처음부터 그런 방법은 피해가는게 나중에 더 편하다는 것 배웠기 때문이다!

따라서 멀티 모듈 프로젝트 를 통해서 기존의 여러 개의 단일 프로젝트를 한 프로젝트 안에 모듈로 가짐으로써 공통으로 사용하는 코드들을 모아놓고 같이 쓸 수 있게 된다.

멀티 모듈 프로젝트는 독립적으로 실행 가능한 어플리케이션을 1개 이상 가질 수 있다.

또한 머맅 모듈 프로젝트는 하나의 시스템을 단위로 만들어지는데, 시스템은 1개 이상의 서비스와 공유 인프라가 모여 구성된다.

image

독립적으로 실행 가능한 어플리케이션들은 서로 다른 책임과 역할을 가지기 때문에,

발생 가능한 문제 상황 을 피하기 위해 하위 모듈들에 대한 의존성과 사용성에 대한 개방/폐쇄를 철저히 해야한다.

참고

이벤트 기반 분산 시스템을 향한 여정, Arawn Park

🕋 Backend — Previous
(2) 데이터 액세스 확장
Next — 🕋 Backend
멀티 모듈 구성하기