8월 30, 2023

모델-뷰-컨트롤러(MVC) 패턴이란?

오늘은 모델-뷰-컨트롤러 (Model-View-Controller) 패턴에 대해 알아보도록 하겠다. 이 패턴을 이해하고 나면 Spring Web MVC 패턴도 수월하게 이해할 수 있을 것이다. 

 

모델-뷰-컨트롤러(MVC)는 비즈니스 서비스와 도메인 객체(즉, 모델)를 UI(뷰)로부터 분리하고 하나 이상의 컨트롤러들 사이를 중재하는 아키텐쳐 패턴을 뜻한다. 비즈니스 로직과 도메인 객체를 변경하지 않으면서 UI를 변경하는 것이 용이해지며, 모델과 뷰 사이의 분리를 가능하게 해주는 패턴으로 유명하다. 

 

정보처리기사나 기술적 개념을 서술하는 시험에 단골로 등장하는 개념이기도 하기에 확실히 개념을 알아두는 것이 좋다.

 


MVC 패턴의 개념적 흐름도는 위와 같다.

JAVA 프로그램이 MVC를 실체화 하는 방식을 알면 위 아키텍쳐 패턴이 조금 더 이해가 잘 될 것이다.

 

자바 프로그램은 모델의 경우 비즈니스 계층의 코드 (ex) 서비스 Bean) 등을 사용, 뷰의 경우  JSP 등을 사용, 컨트롤러의 경우 서블릿 기반으로 구현을 하여 MVC 패턴을 실체화 한다. 


위 MVC 패턴의 스텝을 구체적으로 말해보면

1. HTTP 요청: HTTP 요청이 컨트롤러로 도착한다.

2. 모델에 대한 쿼리 또는 수정: 컨트롤러는 그 다음 모델에 접근한다.

3. 데이터 반환: 모델에 접근 후 모델로부터 데이터를 가져오거나 모델을 변경한다.

4. 뷰로 데이터 전달: 뷰를 사용하여 뷰로 데이터를 전달한다.

5. 페이지 렌더링: 뷰로부터 응답을 생성하고 적절한 데이터를 꺼낼 수 있도록 모델 전달 후 페이지 렌더링을 한다.

6. HTTP 응답: 클라이언트는 최종 생성된 응답을 수신하고, 서비스가 완료된다. 

 

즉 MVC 패턴은 단순히 말해서 관심사를 분리하는 것이라고 할 수 있다. 

 

다음 포스팅에서는 MVC 패턴 설명 기반으로 Spring Web MVC에 대해 다뤄보도록 하겠다.