휴일 저녁에 우연히 본 호주 개발자 구인 영상에 흥미로운 것을 보았다. 해당 회사에서는 기술 과제 주제로 MVVM 디자인 패턴 활용을 요구하고 있었다.
MVVM은 난생 처음 들어보며 MVC랑 뭐가 다른지도 모르겠다 는 무식한 생각이나 하고 있는데, 5년차라면 MVVM 패턴을 모를리가 없다는 말에 괜히 도전의식이 생겼다.
언젠가 디자인 패턴에 대해 질문을 받을지도 모르는 미래의 나를 위해 간단히 정리해보자.
Model, View, View-Model
의 약자다.
익히 알고있는 MVC와 비교해서 이해해보자.
MVC는 View
가 Controller
를 통해 메세지를 전달하며 Model
과 소통할 수 있다.
반면 MVVM은 View-Model
가 View
, Model
끼리 직접 소통할 수 있는 디자인 패턴이다.
출처 : https://www.techtarget.com/whatis/definition/Model-View-ViewModel
Model
MVC의 Model
과 비슷하다. 데이터베이스와 소통하며 데이터 CRUD 작업을 한다.
View
역시 MVC의 View
와 비슷하다. 사용자에게 데이터를 노출시키는 부분이다. 다만 MVC에서는 View
가 Controller와 상호작용 해야만 데이터를 불러오고, 업데이트할 수 있는데 MVVM은 View
가 직접 데이터에 접근한다.
View-Model
MVC와의 결정적인 차이점인데, View-Model
은 Controller
와 달리 View
가 Model
에 직접 접근할 수 있는 매개체 역할을 한다.
예를 들어, 유저가 View에 데이터 조회를 요청한다고 해보자. MVC에서는 유저가 하이퍼링크를 클릭해
Controller
에서 해당 데이터를 조회해View
로 넘겨준다. MVVM은 하이퍼링크 없이View
가 바로Model
에서 데이터를 가져와 보여주는 것이다.
이 View-Model
는 View
와 1:N 관계를 갖는다. View에 따라 데이터를 선택적으로 보여줄 수도 있다.
MVC는 Controller
가 진입점(entry point)가 되는데, MVVM은 View
가 그 진입점 역할을 한다.
테스트가 쉽다
재사용이 쉽다
사용자 인터페이스가 비즈니스 로직과 다르게 동작한다
장기적 성능 향상
구축에 오랜 시간이 걸린다
복잡도가 높아질 수 있다
초기 페이지 로딩 시간이 길어진다
MVVM은 주로 몇년에 걸쳐 구축되는 대형 프로젝트에 적합하다. 특히, 모바일 어플리케이션 서비스를 개발할 경우 많이 고려된다.
대표적으로 Window 데스크탑 어플리케이션 개발에 사용되는 WPF의 주요 아키텍처 패턴이다.
The Difference Between MVVM And MVC (With Pros And Cons)
MVC VS. MVVM: PROS AND CONS OF SINGLE-PAGE APPLICATIONS
Model-View-ViewModel (MVVM)