본문 바로가기
Spring & Boot

[Spring] MVC 패턴 - Model1, Model2

by 뜨는 해 2020. 9. 2.

스프링은 MVC 패턴을 따릅니다. MVC는 Model, View, Controller의 약자이며, 말 그대로 Controller, Model, View로 이루어진 구조입니다. 각 구조는 서로 상호작용을 합니다. 각 구조의 역할을 보자면

 


  • Model : 데이터를 담고 있는 객체, 주로 DB와 연관관계에 있거나, 뷰의 파라미터로 쓰인다.
  • View : 표시하는 화면을 담당한다. 클라이언트쪽이 처리한다.
  • Controller : 데이터 흐름과 제어를 처리하고, 이용자의 응답에 대한 처리를 담당한다.

 

 

MVC 구조의 최대의 장점은 뷰의 영역비즈니스 로직이 분리되어 있다는 점으로, 사용자에게 보여지는 영역의 수정이 많은 점을 따져보면, 분리되어 있는 편의 장점이 크다고 한다. 솔직히 대규모 프로젝트의 경험이 없어서 잘은 모르겠지만, 옛날도 아니고 현재 프론트엔드와 백엔드를 따로 뽑는 세상에 비즈니스와 프레젠테이션 영역이 분리 된 것은 분명 큰 장점일 것이다.

 

 

Model 1


model 1의 방식은 비즈니스 영역, 그러니까 Controller의 영역에서 프레젠테이션 영역(View)을 같이 처리하는 방식이다.

 

이러한 모델 1의 장점은 간단히 말해서 개발이 쉽고 간단하다는 점이 있다. 하지만 단점이 너무 많아 현업에서 쓰지 않는다고 한다. 단점을 나열하자면

 


  • JSP 컨테이너 안에서 뷰와 모델을 처리한다. 이는 곧 유지보수의 여러움을 의미한다.
  • 프론트엔드와 백엔드의 의사소통의 어려움.

 

뭐 지금은 이정도라고 생각한다.

 

 

Model 2


 

모델 2 구조는 1과 달리 사용자의 요청을 서블릿에서 받음, 서블릿은 요청에 따라 바로 뷰를 보여줄 것인지 Model로 요청할 것인지 결정한다. 결국 이것으로 인해 보여주는 프레젠테이션 영역과, 기능을 담당하는 부분이 구분되어져 유지보수가 쉬워진다.

 

역시 단점이라면 좀 더 체계화 되고 복잡해진 만큼 설계가 어렵고 힘들다는 점? 당연히 개발 자체도 Model 1 보다 힘들 것이다.

 

장점이라면 역시 유지 보수의 용이성이고, 프론트와 백엔드의 역할이 완벽히 나눠진다는 점? 대규모 프로젝트에 대부분 쓰인다고들 한다.