안드로이드/잡다한 지식

[안드로이드] 클린 아키텍처? MVVM? MVP?

비비디바비비부 2023. 3. 11. 16:28

클린 아키텍처는 MVVM MVP 아닌가요?

나는 클린 아키텍처가 MVVM, MVP를 적용한 프로젝트를 뜻한 줄 알았다.

 

반은 맞고 반은 틀린 말이라는 것을 알게 되었고 그 내용을 정리할려고 한다.

 

클린 아키텍처와 디자인 패턴(MVVM, MVP, MVI 등) 

클린 아키텍처와 디자인 패턴은 모두 유지 관리 및 확장 가능한 시스템을 만드는데 사용되는 개념이다.

 

클린 아키텍쳐는 외부 프레임워크 및 라이브러리로부터 소프트웨어 시스템의 분리와 독립성을 강조하는 소프트웨어 철학이다.

 

디자인 패턴은 소프트웨어 개발에서 발생하는 일반적인 문제에 대한 재사용이 가능하도록 만든 솔루션이다.

 

안드로이드 권장 아키텍처

안드로이드에서 아래와 같은 아키텍처를 권장하고 있다.

 

앱 아키텍처 가이드  |  Android 개발자  |  Android Developers

앱 아키텍처 가이드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함

developer.android.com

내가 알고있던 개념은 디자인 패턴(MVVM, MVP)를 적용하면 그게 아키텍처를 적용한 거 아니야? 라고 생각하고 가이드를 봤는데 잘못 이해한 것을 알게 되었다.

 

안드로이드 권장 아키텍처

위의 그림은 안드로이드 권장 아키텍처이다.

 

간단하게 UI Layer에서 요청을 하면 Data Layer에서 비지니스 로직(API 요청, DB 로드 등)을 실행한다. 

 

Domain Layer는 Data Layer에서 얻은 데이터들을 간소화, 재사용성할 수 있도록 해주는 레이어이다. (굳이 안넣어도 됨)

 

위의 개념을 바탕으로 디자인 패턴(MVVM, MVP, MVI 등등)을 적용해 아키텍처를 설계해나가는 것이다.

 

결론은?

MVVM, MVP, MVI 등등 이런 개념들은 소프트웨어 개발에서 아키텍처 디자인을 위한 디자인 패턴

 

아키텍처는 외부 프레임워크 및 라이브러리로부터 소프트웨어 시스템의 분리와 독립성을 강조하는 소프트웨어 철학

 

디자인 패턴은 소프트웨어 개발에서 발생하는 일반적인 문제에 대한 재사용이 가능하도록 만든 솔루션