개발 의문 해결

MVC 개발 패턴이란?

티시즌 2023. 6. 8. 11:40

MVC 패턴은 디자인 패턴 중 하나이다.

디자인 패턴이란 "소프트웨어 설계 과정에서 발생할 수 있는 일반적인 문제 및 검증된 해결책을 패턴화한 것" 으로, 특정 문제에 대한 일반적인 해결책을 쉽게 적용할 수 있도록 정리한 것이다. (참고: https://refactoring.guru/ko/design-patterns)

디자인 패턴 중 하나인 모델-뷰-컨트롤러 (Model-View-Controller) 개발 패턴은 하나의 프로젝트를 구성하는 요소를 Model, View, Controller의 세 가지 역할로 나누어 다루며, 영문 첫 글자를 따 MVC 패턴이라고 말한다.

다음 그림이 MVC 패턴을 잘 설명하고 있다.


위 그림을 풀어서 설명하자면 이렇다.

①클라이언트가 어떤 요청을 보내면,
②컨트롤러가 모델을 호출해서, 받아온 요청 데이터를 모델이 다룰 수 있도록 한다. 그러면 모델이 가지고 있는 내부 로직을 이용해 데이터를 처리하고 그 결과를 다시 컨트롤러로 보낸다.
③컨트롤러는 받아온 데이터를 뷰로 보내서 화면*을 생성하라고 요청한다. 뷰는 데이터를 받고 화면을 생성하여 결과를 컨트롤러로 보낸다.
④컨트롤러는 받아온 결과 화면을 클라이언트로 전달 (응답)한다.

*화면을 생성하라는 표현은 데이터를 사용자가 볼 수 있는 형태로 가공한다는 표현과는 다소 차이가 있다. 결과를 단순히 텍스트 형태로 print해도 사용자가 볼 수 있는 형태이기 때문이다. 따라서 화면 생성이란 '데이터 시각화' 에 가깝다고 볼 수 있을 것 같다.


따라서, MVC 패턴 각 요소의 역할을 요약하면 다음과 같다.

- 모델 (Model): 데이터 처리를 위해 내부 로직을 실행
- 뷰 (View): 컨트롤러가 모델로부터 받아온 결과 데이터를 가공해서 화면을 만듦
- 컨트롤러 (Controller): 클라이언트로부터 요청을 받아서 데이터 처리를 위한 모델을 호출 / 모델에서 실행한 로직의 결과를 받음 / 뷰에 화면 생성을 요청하고 생성된 결과 화면을 받아 클라이언트에게 전달

 

모델은 데이터베이스를 읽어오는 쿼리문일 수도 있고 그냥 자바 코드일 수도 있다. 예시로 예제 코드를 보여주는 경우가 있는데, 코드에 매몰되지 말아야 한다. MVC 패턴을 갖는 프로그램이 위와 같은 구조를 가지고 있음을 알면 된다.