[Android] 클린 아키텍처와 Android Architecture - 2 (Now In Android 예시)

이황근·2024년 8월 14일

Android

목록 보기
8/9


위 사진은 (https://everyday-develop-myself.tistory.com/309)를 참고하였습니다.

앞에서 학습했던 전체적인 구조를 가지고 실제 Android Project를 어떻게 구성해야 할지 파악해보려고 합니다.

각 구조별 분석 & Flow 파악


UI Layer

Android의 UI LayerDomain Layer에 의존을 하고 즉 UI LayerDomain Layer를 알고 여기서 요청을 넘기는 작업을 합니다.

UI를 의미하는 XML 파일이나Screen이 가장 최상단에 존재하고 MVVM Model을 사용하면 그 밑에 ViewModel이 존재하게 됩니다.

Domain Layer

Clean Architecture에서는 Domain Layer에 비지니스 로직을 두게 되지만 Android에서는 Domain Layer는 옵션이고 Data Layer에서 비지니스 로직을 관리하게 됩니다.

그리고 여기에는 Use Case가 존재하게 됩니다.

Data Layer

Repository 그리고 DAO와 같은 데이터를 뽑아주고 관리하는 파일들이 존재하게 됩니다.

Android Project에서 각 레이어는 모듈로 나눠지게 되고. 각각의 모듈은 위의 과정을 거치게 됩니다

Now In Android의 구조 파악


Now In Android를 살펴보면 정말 만든 모듈들로 세분화 되어있는 것을 알 수 있습니다.
그래서 각 폴더가 의미하는 게 뭔지 내가 만약 프로젝트를 진행한다면 어떻게 나눠야 할지를 보면서 글을 작성해보려고 합니다.

우선 Core Feature 와 같은 큰 모듈부터 살펴보도록 하겠습니다.

1. APP / App-Nia-Catalog

APP은 사용하는 Main App 모듈이고 App-Nia-Catalog는 UI 확인용 앱을 의미합니다.

2. Core

Core는 BaseCode를 담고 있습니다.

베이스 코드가 뭔데?
Android 프로젝트의 기본 틀을 담당하는 코드들을 의미합니다. 그 말은 즉 전체 어플리케이션에서 여러 번 재사용 될 수 있도록 구성한 공통적이고 필수적인 코드를 얘기합니다. 이 코드들을 Core모듈에 모아두어 프로젝트의 다른 모듈에서 쉽게 접근하고 사용하게끔 해줍니다.

Core 모듈을 살펴보면 Data, Domain, Model, Network가 있습니다.
이 모듈들을 살펴보면 Data Layer, Domain Layer, Presentation Layer에 대한 뼈대를 제공해주고 재사용 가능한 컴포넌트를 구성해준다고 생각하면 됩니다.

Domain 모듈을 살펴보면 기능별로 사용하는 Use Case를 정의해둔 것을 알 수 있습니다. 그 말은 즉슨 전체 구조를위한 코드가 Core 모듈에 들어가야 한다는 것을 알수 있습니다.

3. Feature

Feature 모듈은 안드로이드 프로젝트에서 기능을 구현하기 위해 만들어진 모듈입니다.
예를 들어 로그인 기능, 북마크 기능을 Feature에 정의할 수 있습니다.

Feature 안에 있는 기능 모듈을 살펴보면 그 기능에서 사용하는 ViewModel 이라던가 Screen이 있는 것을 확인할 수 있습니다.

Feature에 있는 UI랑 Core에 있는 UI랑은 뭐가 달라?
Core에 있는 UI는 재사용 가능성이 높은 컴포넌트가 있고 Feature에 있는 UI는 실제 그 기능이 사용하는 Screen이 들어간다.

4. build-logic

이 폴더에는 Gradle 빌드 시스템과 관련된 로직을정의하고 여러개의 Gradle 플러그인이 정의되어 있습니다. 이 플러그인들을 이용해서 빌드 설정과 구성을 하는 역할을 합니다.


이제 직접 프로젝트를 진행하면서 폴더 구조를 잡아보려고 한다.
자세한 내용은 다음 글에서 이어서 작성하겠습니다.

참고

https://everyday-develop-myself.tistory.com/309
https://speakerdeck.com/taehwandev/android-module-gaebal-now-in-android-camgo?
slide=11

profile
낭만 개발자

0개의 댓글