본문 바로가기
IT KNOWLEDGE/개발 방법론

MVC 패턴이란?

by BTC_티모 2023. 7. 10.

탑신병자 듀오 팀 티모입니다.

오늘은 MVC 패턴에 대해서 알아보겠습니다.


MVC(Model-View-Controller) 패턴은 어플리케이션을 세 개의 영역으로 분할하고,
각 구성 요소에게 고유한 역할을 부여하는 개발 방식입니다.

기본적인 구조는 위와 같습니다.

사용자는 Controller만을 조작하며, Controller는 Model을 통해 데이터를 가져온 후 View를 통해 이미지 등을 표현해 전달해줍니다.

사용자가 웹에 접속할 때를 예로 든다면,

 

  1. 사용자가 웹에 접속
  2. Controller는 웹에 필요한 모델을 호출
  3. Model은 데이터베이스, 파일 등에서 데이터 소스를 제어한 후 그 결과를 Controller에 전달
  4. Controller는 Model이 전달한 값을 View에 반영
  5. 데이터가 반영된 View가 웹에 표현되어 사용자에게 제공

의 순서로 진행됩니다.

 

1. Model

애플리케이션에 필요한 데이터를 갖고 이를 가공하는 컴포넌트입니다.

데이터베이스에서 데이터를 가져올 수도 있고, 자체적으로 데이터를 보관할 수도 있습니다.

Model의 상태에 변화가 생기면 그 변경 사항을 Controller에 전달합니다.

Model은 다음과 같은 특징을 가집니다.

 

  • 사용자가 편집할 모든 데이터를 갖고 있어야 합니다.
  • 각 컴포넌트는 독립적으로 존재하므로 View나 Controller에 대한 어떠한 정보도 알지 못합니다.
  • Model에서의 변경이 일어날 때, 그것들의 전달 방법을 구현해야 합니다.

2. Controller

Model과 View 사이를 잇는 브릿지 역할을 하는 컴포넌트입니다.

사용자가 접속한 페이지에서 요청이 들어오면 그것을 처리하기 위해 필요한 데이터를 Model에 전달합니다.

Model에서 받은 데이터를 View에 반영시켜 최종적으로 사용자에게 요청에 대한 응답을 제공합니다.

Controller는 다음과 같은 특징을 가집니다.

 

  • 변경 사항을 확인하고 전달해야 하므로 Model과 View에 대해 알고 있어야 하며, 모니터링해야 합니다.

3. View

사용자에게 보여지는 UI 역할을 하는 컴포넌트입니다.

Controller로부터 전달받은 요청을 처리해 최종적으로 화면에 표시해주는 역할을 합니다.

Model과는 직접적으로 소통하지 않으므로, 변경 사항이 생기면 그것을 Controller에게 전달합니다.

MVC 패턴에선 여러 개의 View가 존재할 수 있습니다. 

View는 다음과 같은 특징을 가집니다.

 

  • Model이 가진 정보를 따로 저장하지 않습니다. Controller에게 전달받은 값에 대한 처리만 합니다.
  • Model과 마찬가지로 다른 컴포넌트에 대한 어떠한 정보도 알지 못합니다.

MVC 패턴은 유지보수를 보다 쉽고 편하게 하기 위해 생겨났습니다.

아무리 첫 설계가 잘 된 시스템이라도 기능을 확장하고, 그에 따른 에러를 해결하는 과정에서 결합도가 높아집니다.

결합도가 높아진 시스템은 단 몇 줄의 코드로 의도치 않은 버그를 발생시키며, 이에 대한 유지보수도 점점 어려워집니다.

이런 문제를 해결하기 위해 각 기능에 따라 3개의 컴포넌트로 분리시켜 관리하는 방법을 고안한 것입니다.

 

하지만 MVC 패턴에도 한계는 있습니다.

시스템의 규모가 크고 복잡해질수록 Controller에 연결되는 Model과 View 역시 많아지게 되고,
특정 Model과 View 간의 의존성이 커질 수 있습니다.

이를 보완하기 위해 MVP, MVVM 등의 패턴이 추가적으로 생겨나고 있습니다.


지금까지 MVC 패턴에 대해 간단히 알아보았습니다.

감사합니다.

 

 

 

댓글