2.3 MVC 패턴

김찬미·2024년 5월 29일
0

스프링부트에서 spring-boot-starter-web 모듈을 사용하면 기본적으로 톰캣(Tomcat)을 사용하는 스프링 MVC 구조를 기반으로 동작한다. MVC 패턴은 개발자 면접에서도 자주 묻는 개념이기도 하니 확실히 이해하고 넘어가자!


MVC 패턴

MVC는 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나이다. 이 패턴은 애플리케이션을 세 가지 구성 요소로 나누어 개발하는 방법을 제시한다.


☝ MVC 패턴을 설명할 때 가장 많이 인용되는 사진이다.

사진에서도 알 수 있듯, MVC 패턴은 Model(모델), View(뷰), Controller(컨트롤러)라는 개념으로 역할을 나누어 일련의 작업을 처리하는 방법이다. 세 가지 개념에 대해 더 자세히 알아보자.


MVC 패턴의 요소

Model

  • Model은 애플리케이션에서 데이터를 다루는 부분이다.
  • 주로 데이터베이스와의 상호작용을 처리하며, 데이터를 가져오고 저장하며, 비즈니스 로직을 수행한다.

예를 들어, Controller에서 받은 데이터를 가공해 담는 역할이라고 볼 수 있다. 즉, 값과 기능을 가지는 객체라고 보면 된다. 일반적으로 자바 안에서 Model이란 엔티티나 DTO, VO와 같은 데이터 객체를 말하며, 이 객체들은 주로 비즈니스 로직을 처리하거나 애플리케이션의 상태를 나타낸다.

View

  • View는 클라이언트에게 정보를 표시하는 부분이다.
  • 사용자에게 보여지는 인터페이스를 구성하고, 사용자 입력을 받는 등의 역할을 합니다.

View의 역할은 간단히 말해 두 가지다. 첫 번째는 사용자에게 정보를 표시하는 것, 두 번째는 사용자의 입력을 받아 Controller에게 전달하는 것이다. 주로 웹 애플리케이션에서는 HTML, CSS, JavaScript 등을 통해 데이타를 기반으로 사용자들이 볼 수 있는 화면을 구성한다.

Controller

  • Controller는 클라이언트의 요청을 처리하고, 모델과 뷰를 연결하는 다리 역할이다.
  • 주로 URL 라우팅 및 요청 매핑을 처리하며, 비즈니스 로직을 호출하여 요청을 처리한다.

컨트롤러는 사용자로부터 들어오는 요청에 따라 적절한 비즈니스 로직을 통해 결과를 Model에 저장하고, 이를 View에 전달해줘야 하는 임무를 맡고 있다. Model과 View가 각각의 역할만 수행한다면, 컨트롤러는 이 둘 사이를 중재하고 결합해주기 때문에 MVC 패턴에서 가장 중요한 역할이라고 할 수 있다.


MVC 패턴 작동 방식

MVC 패턴의 작동 방식은 사용자 요청 처리와 사용자 입력 처리, 두 가지로 나눌 수 있다.

사용자 입력 처리

  1. 사용자가 애플리케이션에 요청을 보내면, Controller가 이 요청을 받는다.
  2. Controller는 받은 요청에 따라 필요한 데이터 처리나 비즈니스 로직 실행을 위해 Service를 호출한다.
  3. Service는 필요한 작업을 수행하고, 이를 위해 필요한 데이터를 Repository를 통해 데이터베이스에서 가져온다.
  4. Service가 처리한 데이터는 Model에 담겨서 다시 Controller로 반환되고, Controller는 이를 View에 전달한다.

Flow: User Request -> Controller -> Service -> Repository -> Model -> Controller -> View

사용자 응답 처리

  1. 사용자가 View에 데이터를 입력하면, View는 사용자의 입력을 Controller에 전달한다.
  2. Controller는 받은 입력을 처리하기 위해 Service를 호출하고, 필요한 데이터를 Repository를 통해 데이터베이스에서 가져온다.
  3. Service는 데이터를 가공하거나 비즈니스 로직을 실행한 후, 결과를 Model에 담아 다시 Controller로 반환한다.
  4. Controller는 반환된 Model을 View에 전달하여 사용자에게 업데이트된 정보를 보여준다.
  5. View는 Model로부터 받은 데이터를 사용자에게 표시한다.

Flow: User Input -> View -> Controller -> Service -> Repository -> Model -> Controller -> View

이렇게 사용자의 요청을 처리하고, 사용자의 입력을 받아 처리하는 과정에서 Controller는 Service와 Repository를 중계하여 데이터를 처리하고 Model에 전달한다. 그 후 Model은 View를 통해 사용자에게 결과를 보여주는 역할을 한다.


MVC 패턴 실전 규칙

지금까지 MVC 패턴의 이론에 대해 알아보았다. 그러나 실전에서 MVC 구조로 개발을 한다면 이 규칙들을 잘 따라야 한다. 지금부터 MVC 실전 규칙에 대해 알아보자.

실전에서 MVC 구조를 지키는 방법

  1. Model은 Controller와 View에 의존하지 않아야 한다.
    ○ Model 내부에 Controller와 View에 관련된 코드가 있으면 안 된다.
  2. View는 Model에만 의존해야 하고, Controller에는 의존하면 안 된다.
    ○ View 내부에 Model 코드가 있을 수 있고, Controller 코드가 있어서는 안 된다.
  3. View가 Model로부터 데이터를 받을 때는, 사용자마다 다르게 보여주는 데이터에 한해서 받아야 한다.
  4. Controller는 Model과 View에 의존해도 된다.
    ○ Controller 내부에는 Model과 View의 코드가 있을 수 있다.
  5. View가 Model로부터 데이터를 받을 때는 반드시 Controller에서 받아야 한다.

그동안 MVC 패턴에 대해 모호한 부분이 많았는데 전반적인 흐름과 각 요소의 특징에 대해 잘 알게되어 기쁘다. 앞으로는 MVC 패턴에 관한 질문이 들어왔을 때 잘 대답할 수 있을 것 같다!

profile
백엔드 개발자

0개의 댓글

관련 채용 정보