면접대비

MVC 패턴(Model, View, Controller)

코딩하는흑구 2021. 4. 4. 12:41

안녕하세요. 오늘은 MVC 패턴에 대한 이야기를 하고자 합니다. 

신입 기술면접에서 자주 등장하는 내용인데요. 패턴은 정해져있지만 각자가 이해하는 내용이 달라서 다양한 답이 나오는 주제인것 같아요.

 

그래서 오늘은 MVC 패턴은 어떤 히스토리를 가지고 탄생하게 되었는지와 M.V.C. 를 이루는 각 개념에 대해서 이야기해보려 합니다.

 


히스토리

모델 1

  •  JSP를 활용하여 출력 로직과 비즈니스적인 처리 로직이 함께 혼용되어 개발되는 개발 방법.
  • 코딩은 매우 직관적으로 한 페이지에서 일어나는 내용이 하나의 소스코드 페이지에 모두 담겨져 있다.
  • 따라서 코딩은 매우 쉽지만 여러 중복코드가 반복되어 유지보수가 매우 어렵다.
  • 또한 HTML 태그와 <%%> 안의 자바 코드의 혼용으로 인해 일명 스파게티 코드로 불리우는 읽기 매우 껄끄러운 코드가 될 가능성이 높다.
  • 현재의 backend와 frontend의 분업을 구분하기 어렵다.

 

모델 2

  • MVC 패턴을 웹에 적용한 케이스
  • 비즈니스 로직과 출력 로직을 분리하여 개발 -> 뷰 로직 / 데이터 처리 로직 분업 개발 가능
  • 유지보수 가능해짐
  • 서블릿을 통해 알맞는 JSP 페이지를 호출하여 특정 데이터를 넘겨 보낼 수 있는 구조.

MVC 패턴이란?

클라이언트(사용자의 행위)가 필요한 기능을 Controller에 요청하면 Controller는 알맞는 Model에게 안내해주고 비즈니스 로직을 수행한 후, View를 찾고 결과에 맞는 데이터를 View에 전달하여 화면을 구성하도록 하는 패턴.

 

구성요소

M(Model)

  • 모델은 데이터와 처리 로직을 한번에 일컫는 말이다. 모델이란 말이 데이터 덩어리의 결과 모델을 이야기 하는 것 같지만 내부 비즈니스까지 포함하는 개념을 말한다. 
  • Controller에 의해 수행되는 요소로 어플리케이션의 상태 변화, 상태 정보 반환 등을 수행한다.

V(View)

  • Model 에서 데이터를 처리하고 수행한 결과를 반환받아 화면을 구성하는 로직이다.(사실 결과반환은 컨트롤러에서 이루어진다.)
  • 일절 비즈니스 처리로직은 포함되어서는 안되고 오로지 Model에게 받은 데이터(컨트롤러를 통해)를 통해서만 화면을 구성해야한다.
  • Controller에 의해서 결정되는 요소로 출력 처리 담당이다.

C(Controller)

  • 사용자의 요청해석하여 처리하고 결과를 반환하는 역할이다.
  • ModelView를 느슨하게 연결해주어 어플리케이션을 이루고 데이터의 흐름을 관장한다.

 

사용이유
  • 코드의 재사용 : Model 1에서 발생되는 코드의 중복을 Model2에서 해결한 것 처럼 MVC 패턴을 활용하여 재사용할 수 있는 코드의 비율을 높여 어플리케이션이 좀 더 가벼워진다.
  • 확장성 : 코드의 재사용성을 좀더 높였기 때문에 비교적 추가적인 업데이트 부분이나 기능 확장에 대비하여 유연함을 챙길 수 있다.
  • 요소에 집중 가능 : 모델, 뷰, 컨트롤러 세가지의 역할을 따라 데이터 처리로직, 출력 로직, 제어 로직 등 요소마다의 역할에 집중할 수 있다.