본문 바로가기

Development/Spring

[Spring]MVC 패턴의 정의와 특징

MVC 패턴이란?

MVC는 디자인 패턴 중 하나로 Model, View, Controller의 앞글자들을 딴 약자로 애플리케이션을 세 가지 역할로 구분한 개발 방법론이다.

 

위의 두 개의 MVC 동작 이미지에서 알 수 있듯이 클라이언트가 요청을 하게 되면 Controller는 작성된 서비스 로직을 바탕으로 Model을 통해 데이터를 가져오고 해당 데이터들을 View를 이용해 클라이언트에게 인터페이스적 요소를 제공한다.

 

이렇게 MVC 패턴을 통해 비즈니스 로직과 UI분리하여 유지보수를 독립적으로 수행하며 Model과 View가 다른 컴포넌트에 종속되지 않기 때문에 애플리케이션의 확장성과 유연성에 있어서 유리해지게 된다.

 

Model

Model은 데이터를 가진 객체로 애플리케이션이 포함해야 할 데이터가 무엇인지를 정의한다. Model에서 데이터의 수정이나 조작이 발생하면 Controller와 View를 통해서 클라이언트에게 해당 데이터의 결과를 제공한다.

 

Model의 특징

  • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 한다.
  • View나 Controller에 대해 어떤 정보도 알지 않아야 한다.
  • 변경이 발생하면 변경 통지에 대한 처리 방법을 구현해야 한다.

 

View

View는 Model을 통해서 클라이언트에게 데이터와 함께 화면을 나타내는 인터페이스 요소이다.

 

View의 특징

  • Model이 가지고 있는 정보를 따로 저장하면 안 된다.
  • Model이나 Controller와 같이 다른 구성 요소를 몰라야 한다.
  • 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다.

 

Controller

Model과 View 사이를 이어주는 역할로서 클라이언트가 접근한 URL에 따라서 클라이언트의 요청사항을 파악하여 Model을 통해 DB에서 요청사항에 맞는 데이터를 가져오고 해당 데이터를 View를 통해 클라이언트에게 제공한다.

 

Controller의 특징

  • Model과 View에 대해서 알아야 한다.
  • Model과 View의 변경을 모니터링해야 된다.

 

MVC의 한계

View는 Controller에 연결되어 화면을 구성하므로 다수의 View를 가질 수 있다. Model은 Controller를 통해 View와 연결되지만 Controller를 통해서 하나의 View에 연결되는 Model도 다수가 될 수 있다. 이렇게 화면과 데이터가 복잡해지면 하나의 Controller에 다수의 View와 Model이 연결되게 된다. 이럴 경우 MVC가 너무 복잡해지면서 비대해지기 때문에 새 기능을 추가할 때마다 크고 작은 문제점을 가지면서 소스 분석이 어려워지는데 이러한 MVC를 대규모 MVC 애플리케이션이라고 한다. 최근에는 이런 문제점을 보완하는 다양한 패턴들이 생겨나고 있는 중이다.