배경 설명


우리 조의 프로젝트 구조는 멀티 모듈로 구현되어 있다.

당시 프로젝트 구조에 대해 의논할 때, 팀원들이 아키텍처에 대한 관심이 높았고 아키텍처에 따른 관심 분리에 대해 고민하고 있던 터라, 멀티 모듈에 눈이 갔다.

규모가 크지 않은 프로젝트에서 멀티 모듈을 사용하게 되면 모듈끼리의 연결을 위해 오히려 싱글 모듈을 사용할 때보다 구조가 복잡하고 오버헤드가 커지는 단점을 가지고 있다.

Guide to Android app modularization | Android Developers

멀티 모듈을 적용 전 고려해 봐야 할 문제점

하지만 우리는 멀티 모듈로 구현 시 얻을 수 있는 이점인 “엄격한 가시성 제어”에 대해 매우 큰 점수를 주어 결국 멀티 모듈로 개발하게 되었다.

추가적으로 멀티 모듈이 구조에 이야기할 수 있는 시간이 있다면 또 이어서 하도록 하겠다.

우리가 분리하기로 마음먹은 모듈은 다음과 같다

domain 모듈은 의존성을 가지고 있지 않은 계층으로 비즈니스 로직이 포함되어 있고 presentation과 data 모듈은 각각이 domain 모듈에 의존성을 가지고 있다.

우리는 이 presentation 모듈과 data 모듈을 이어주기 위해 다리로 클린 아키텍처에서 사용하는 UseCase를 차용하기로 하였다.