멋쟁이사자처럼 연합 프로젝트를 진행하는 과정에서 저는 멀티모듈이라는 새로운 개념을 처음 접하게 되었습니다. 프로젝트를 효율적으로 수행하기 위해서는 멀티모듈에 대한 이해가 필수적이라고 판단했습니다. 따라서 프로젝트를 잘 마무리할 수 있도록 멀티모듈에 대해 알아보겠습니다.
하나의 단일 프로젝트를 여러개의 모듈로 분리해서 구성하는 기법입니다. 각 모듈은 개별적으로 컴파일되어 라이브러리 또는 실행 가능한 파일로 생성됩니다.
패키지의 한 단계 위의 집합체이며, 관련된 패키지와 리소스들의 재사용할 수 있는 그룹입니다.
회원 시스템을 개발한다고 하면 다음과 같은 독립적인 프로젝트 단위가 있습니다.
위의 그림에서는 3개의 프로젝트가 모두 Member라는 동일한 도메인을 가지고 복사 붙여넣기를 통해 구현하고 있어 중복 코드가 발생할 수 있습니다. 이 경우 중복 코드에 수정이 필요할 때 유지보수가 어려워지며, 코드의 일관성과 변경 관리가 어려워질 수 있습니다.
그래서 단일 프로젝트 내에 여러 개의 모듈을 가질 수 있는 구조가 도입되었습니다. 각각의 기존 프로젝트는 이제 모듈로 분리되어 있고, 공통 코드는 이를 통해 분리하여 재사용할 수 있습니다. 멀티 모듈 구조는 공통 코드를 효율적으로 관리하고 다양한 모듈에서 함께 사용할 수 있도록 합니다.
코드의 중복을 줄일 수 있습니다.
여러 서비스에서 공통된 로직을 운영할 때, 공통된 부분을 모듈화하여 의존성으로 추가하면 공유할 수 있습니다.
각 모듈의 기능을 파악하기 쉬워집니다.
공통 기능을 의존성 주입으로 모듈별로 분리하여 작성하면 코드의 이해가 쉬워집니다.
빌드를 쉽게 진행할 수 있습니다.
./gradlew :moduleName:build 명령어를 통해 각 모듈을 쉽게 빌드할 수 있습니다.
프로젝트를 작은 모듈로 분해하여 관리합니다. 각 모듈은 자체적인 기능을 수행하고 다른 모듈과 독립적으로 작동할 수 있습니다.
각 모듈은 다른 모듈에 의존할 수 있습니다. 따라서 프로젝트의 각 부분이 필요한 리소스나 기능을 가져와 사용할 수 있습니다. 의존성 관리 도구를 사용하여 모듈 간의 의존성을 관리합니다.
필요한 경우 모듈 간에는 인터페이스를 통해 통신할 수 있습니다. 이는 모듈 간의 결합도를 낮추고 유연성을 높여줍니다.
글이 많은 도움이 되었습니다, 감사합니다.