Robert Martin (속칭 Uncle Bob)이 고안한 클린아키텍처

Layered Architecture의 한 형태이며,

각 계층 간의 의존성을 낮추는 개발방법론이다.

안드로이드 개발에 주로 사용하는 MVVM 아키텍처를 접목하면,

Application Layer (Presenter Layer)

<aside> 💡 화면을 보여주는 View와 View에 보여줄 정보를 가지는 ViewModel로 구성된다.

</aside>

Domain Layer

<aside> 💡 VM에서 필요로 하는 데이터를 제공하기 위한 계층이다. Application Layer와 Data Layer는 서로의 관심사가 다르기 때문에 중간에 Data를 요청하는 Domain Layer을 통해 값을 가져온다. Usecase, Repository interface가 이 계층에 속하며, Domain Layer에서는 특정 OS에 무관한 언어로 구성된다. (ex, kotlin)

</aside>