data계층의 datasource영역을 remote와 local 모듈로 분리하면 좋은 점?

유재민·2023년 5월 8일
0
post-thumbnail
post-custom-banner

전체적인 구조를 설계하던 중 한 가지 고민에 빠졌다. DataSource 영역을 따로 module로 분리하는 것은 좋은 방법일까? 여러 예제에서 remote, local(cache) 모듈이 추가된 구조를 볼 수 있다. 만약 나누게 된다면 어떤 장단점이 있을 지 고민해보기 위해 두 가지 방식의 컴포넌트 다이어그램을 설계해보았다.

위쪽 이미지는 remote, local 모듈로 분리되어 있고 아래 이미지는 Data 모듈 하나로 구성되어 있다. 차이점을 좀 더 살펴보면 remote, local 모듈로 분리하게 되면 안드로이드 의존성이 필요한 Room은 local 모듈에 존재하기 때문에 data와 remote 모듈은 순수 코틀린 라이브러리 모듈로 생성이 가능하다.

일단 분리하게 되면 좋은 이점부터 생각해보았다.

  1. 테스트하기 쉬운 구조

각 모듈에 대한 테스트 코드를 쉽게 작성할 수 있다. remote에 대한 테스트와 local에 대한 테스트를 각 모듈에서 서로 의존되지 않고 분리된 상태에서 작성하여 테스트를 할 수 있다.

  1. 관심사 분리

각 모듈이 필요한 역할만 수행하기 때문에 관심사 분리를 통해 유지 보수 측면에서 이점을 느낄 수 있다.

  1. 빌드 속도 향상

멀티 모듈로 분리하게 되면 수정된 모듈에 대한 빌드를 하기 때문에 빌드 속도가 향상되는 이점을 느낄 수 있다.

알아볼수록 생각보다 큰 이점은 없는 것 같다는 생각이 들었다. 굳이 모듈로 분리하지 않더라도 data 계층에서 repository와 datasource를 분리하여 구현하게 되면 충분히 원하고자하는 바를 다 이룰 수 있기 때문이다. 큰 규모의 프로젝트에서는 여러 이점들을 몸소 느끼겠지만 이번 프로젝트 규모에서는 remote, local 모듈로 분리했을 때 느낄 수 있는 이점보다 발생할 수 있는 이슈가 더 클 것으로 판단해 분리하지 않을 것이다.

profile
유잼코딩
post-custom-banner

0개의 댓글