휴일 저녁에 우연히 본 호주 개발자 구인 영상에 흥미로운 것을 보았다. 해당 회사에서는 기술 과제 주제로 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)