검색
색인
모델·뷰·컨트롤러, Model-View-Controller, MVC
소프트웨어 설계에서 세 가지 구성 요소인 모델(Model), 뷰(View), 컨트롤러(Controller)를 이용한 설계 방식.
모델은 소프트웨어 내에서 데이터를 의미하고, 뷰는 사용자에게 보이는 화면 내용을 의미한다. 이러한 모델과 뷰의 상호 작용을 관리하는 것이 컨트롤러이다.


예를 들어, 사용자의 입력이 컨트롤러로 들어오면 컨트롤러는 모델에서 데이터를 불러오고, 해당 데이터를 뷰를 통해 화면으로 출력한다. 모델, 뷰, 컨트롤러가 기능별로 독립적으로 분리되어 있어서 여러 명의 개발자가 동시에 각각의 기능을 개발할 수 있고, 일부 기능이 추가될 경우도 기존의 구성 요소를 재사용할 수 있어 코드 재사용성이 향상된다.
노르웨이 컴퓨터 과학자인 트리베 린스카우그(Trygve Reenskaug)가 1970년대에 최초로 MVC 개념을 제안하였다. 당시에는 PC용 소프트웨어를 개발하기 위한 모델로 제시되었지만, 현재는 웹 애플리케이션을 개발하는 데에도 상당히 많이 사용된다.
MVC 모델을 웹 애플리케이션에 쉽게 적용할 수 있는 라이브러리로는 앵귤러자바스크립트(AngularJS), 엠버자바스크립트(EmberJS), 자바스크립트엠브이시(JavaScriptMVC), 백본자바스크립트(BackboneJS) 등이 있다.
MVC의 변형 형태로 모델·뷰·프리젠터(MVP: Model-View-Presenter), 모델·뷰·뷰모델(MVVM: Model-View-ViewModel) 등이 있다. MVC 유형에서 뷰와 모델은 정확히 분리되지만, 컨트롤러가 뷰의 구성에 상당 부분 관여하는 경우가 있어 각각의 독립성이 다소 떨어지는 문제가 발생할 수 있다. 이를 해결하기 위해 컨트롤러의 뷰 구성 기능은 모두 뷰 자체에 맡기고 프리젠터(presenter)가 모델과 뷰 사이의 인터페이스 역할만을 하도록 하는 것이 MVP이고, 데이터 바인딩 기반으로 뷰가 뷰모델과 인터페이스하도록 제한을 두는 것이 MVVM이다.