Clean Architecture
Clean Architecture는 소프트웨어를 개발하는 개발 방법론 중 하나 입니다.
당장 구글에 Clean Architecture를 검색해보면 수두룩하게 나오는 이미지 입니다.
저도 처음에 Clean Architecutre를 공부 할때 엄청 많이 봤던 이미지 입니다.
Clean Architecture는 각 Layer를 3가지로 나누었습니다. Presentor, Data, Domain 영역 이렇게 구분 하였습니다.
위 방법을 고안해낸 이유는 여러가지라 생각하지만 저는 아래와 같다고 생각합니다.
1. 편하고 수월한 유지보수를 위해
2. 모듈의 구분화를 통해 재사용
3. 의존성 최소화
이 세가지가 정말 중요하다고 생각합니다.
이제 각 Layer들을 Android를 예로 들어 적어 보겠습니다.
Presentor : Activity나 Fragment, ViewModel 등이 위치할 Layer, Domain 영역을 의존
Data : 비즈니스 로직이 위치할 Layer 예를 들자면 네트워크 통신, DB로 부터 값을 가져오는 로직, Domain 영역을 의존
Domain : 어디에도 간섭하지 않는 Model, Interface 등이 있으며 이 것들을 제공할 UseCase가 위치할 Layer, 그 어디 Layer에도 의존하지 않고 매우 독립적인 영역
위 3가지의 Layer를 활용해서 소프트웨어를 개발 하는 것이 Clean Architecture 기반의 개발 입니다.
각 기능별로, 더 세분화 하자면 함수별까지도 UseCase 별로 나누고, UseCase는 비즈니스 로직을 가지고, Presentor는 이 UseCase를 활용 하는 아키텍처 라고 말씀 드릴 수 있습니다.