Android MVVM 아키텍처 패턴에 관하여 2

2022. 6. 14. 17:05Android

반응형

https://guguhome.tistory.com/23

 

Android MVVM 아키텍처 패턴에 관하여 1

이번에 아키텍처 패턴 MVVM 을 정리 해보고자 한다. 일단 왜 아키텍처 패턴에 관하여 글을쓰는가? 필자가 Android 를 개발하면서 작은 프로젝트를 할때는 상관이 없었지만 프로젝트가 거대해질수록

guguhome.tistory.com

 

1편을 보고 와주시길 권장 드립니다.

 

 

 

일단 MVVM 을 선택하기전 MVP 와 굉장히 많이 고민을 하였다

 

구글에서 MVVM 을 권장하고있지만 국내에서는 MVP 도 많이 쓰이기 때문이다.

 

그래서 두개를 비교하면서 한가지 확실해진건

 

대규모 프로젝트에는 MVVM 이 더 잘 맞다 라는 개인적인 결론이 나왔다.

 

MVP 같은경우 프로젝트 거대해질수록 결국 MVC 와 똑같이 Presenter 가 무거워진다

 

물론 MVVM 도 잘 공부해서 잘 사용해야 한다 아니면 안쓴거보다 못하게된다.

 

이 사실을 알고 MVVM 을 공부하기 시작한건 제작년 10월부터 였다.

 

그런데 왜 이제와서 글을 쓰냐?

 

1.생각보다 추가적으로 생각하고 배워야하는게 많고 어렵다 (그리고 아직도 내가 이걸 100% 알거라는 확신이 없다.).

 

단순 어렵다 라고 하면 먼가 하겠지만

 

MVVM 자체만 본다면 그래도 1~2달 열심히 공부하면 충분히 가능하다

 

하지만 1편에서 나왔듯 Android 권장 아키텍처패턴이라고 있다.

 

이게 MVVM 기반이긴 하지만 이 판을 짜는데 추가적으로 AAC(Android Architecture Components) , Jetpack 라이브러리도 알아야된다.

 

AAC -

https://velog.io/@hwi_chance/Android-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-AAC

 

[Android] 안드로이드 AAC

AAC(Android Architecture Components)에 관하여

velog.io

 

Jetpack -

https://developer.android.com/jetpack?hl=ko 

 

Android Jetpack  |  Android 개발자  |  Android Developers

Jetpack은 개발자가 관심 있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 축소, 모든 Android 버전 및 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 모음입니다.

developer.android.com

 

저 두개는 간단하게 MVVM 안에서 좀더 앱을 쉽게 디자인 or 사용하기 편하게 만들어주는 라이브러리들이다

 

좀더 자세하게는 Jetpack 에서 아키텍처에 해당하는 부분을 AAC라고 한다.

 

이것만 봐도 생각보다 공부할양이 굉장히 많다

 

일단 Jecpack 에는 굉장히 많은 라이브러리가 있기에 필요한게 있다면 그때마다 찾아서 사용하면되지만

 

AAC 는 필자 기준 현시점에서 MVVM 을 쓰겠다하면 꼭 배워둬야한다.

 

AAC 구성 요소로는

 

1.Lifecycles
2.LiveData 
3.ViewModel 
4.Room 
5.Paging 
6.DataBinding

 

정도 된다고 본다.

 

2.개인 프로젝트로 충분히 공부후 회사 프로젝트 일부분에 적용시키다보니 시간이 많이 흘렀다.

 

이전 글에도 말했다시피 필자의 공부법은 상놈식 공부법이다.

 

이론 10% 보고 나머지 90% 직접 구글링해가면서 코드를 짜보면서 배운다

 

그리고 어느정도 적응이 된다 싶으면 다시 또 이론을 본다.

 

일단 MVVM을 이용해 간단한 메모앱 개인프로젝트를 만들어 보았다.

 

https://github.com/yjogugu/MemoProject

 

GitHub - yjogugu/MemoProject: 개인적 프로젝트

개인적 프로젝트. Contribute to yjogugu/MemoProject development by creating an account on GitHub.

github.com

 

처음에는 익숙치 않아 굉장히 많이 헤매고 삽질도 많이 했었다.(삽질의 잔재들이 많이 남아 있기에 양해부탁드립니다.)

 

그런데 어느정도 익숙해지고 나니 굉장히 코드 + 파일들 정리 들이 직관적으로 변하게되었다.

 

그리고 어느정도 확신을 가지고 회사 프로젝트에 새로 만들 기능 or 페이지에 적용을 시켜봤다.

 

효과는 굉장했다. 기존 코드 들이랑  비교 해봤을때 제일 눈에 띄는부분은

 

ViewModel 로 인해 더이상 View 에서 데이터 처리 하는 코드들이 없어진게 컸다

 

View에서는 오로지 화면에 보이는 부분들만 담당하고

 

ViewModel 에서는 오로지 데이터 처리만 하게되었다.

 

글을 마치며..

 

현재는 서브 프로젝트를 하면서 MVVM 에 DI Hilt 를 적용하고

 

LiveData ->  StateFlow 전환하고

 

xml -> Compose 시도 중에있다.

 

혹여나 이글을 보게된 분중에 아직 MVVM 아키텍처 패턴을 사용하지 않는 사람이라면

 

한번쯤은 꼭 공부를 해보는걸 추천한다.

 

기회가 되면 MVVM 처음 최대한 쉽게 쉽게 풀어서 간단하게 글을 써보고자 한다.

 

 

반응형