Computer Science

MVC 패턴

오늘은 기술 면접 단골 질문인 MVC 패턴에 대해 포스팅하기로 했다. 기존에도 MVC 패턴에 대해 어렴풋이 알고는 있었지만, 이번 기회에 확실히 개념을 잡아두려 한다.

 

MVC 패턴

모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

< 위키백과, 모델-뷰-컨트롤러 >

MVC 패턴은 웹 개발을 할 때 자주 사용되는 디자인 패턴 중 하나이다. 실제로 보편적으로 인기있는 대부분의 프레임워크(대표적으로 Spring framework)는 이 MVC 패턴을 채택하고 있다.

 

MVC 패턴의 구성요소는 크게 세 가지로 나눌 수 있다.


1. Model : 어플리케이션이 무엇을 할지 결정한다. 즉, 내부 비즈니스 로직과 관련된 코드가 포함되며, 대표적으로 DB 데이터 조작이 연관되어 있다.

 

2. View : 사용자가 보게되는 화면을 관리한다. 컨트롤러의 명령을 받아 화면에 무엇을 표시할 것인지 결정한다.

 

3. Controller : 사용자에게 입력을 받아 모델과 뷰를 조작하는 역할을 수행한다. 사용자가 어떤 데이터가 필요하다고 요청하면 이를 모델에 요청해 데이터를 받아오고, 받아온 데이터를 뷰로 보내서 뷰가 데이터를 뿌려줄 수 있도록 한다.


모델과 뷰는 서로의 존재를 알지 못하고, 컨트롤러의 요청만 받아서 동작을 수행하게 된다. 이렇게 구성요소를 세 개로 분리함으로써 서로가 서로에게 영향을 주지 않아 개발이나 유지 보수가 쉬워지는 장점이 존재한다.

 

MVC 패턴에는 두 가지 종류가 있는데, model 1과 model 2가 바로 그것이다.

 

MVC 패턴 - Model 1 & Model 2

model 1은 컨트롤러와 뷰를 같이 구현하는 방식이다. 빠르고 쉬운 개발이 가능하지만, 컨트롤러와 뷰의 코드가 섞여있어 유지보수가 어렵다는 단점이 있다.

model 2는 유지보수가 어렵고, 코드를 알아보기 힘들다는 model 1의 단점을 보완하기 위해 컨트롤러와 뷰를 분리해서 구현하는 방식이다. 작업 시간은 model 1보다 길어지지만, 추후에 프로그램이 커지고 유지보수가 필요할 때는 model 2 방식이 더 유리하다.

 

MVC 패턴에도 단점은 존재하는데, 바로 모델과 뷰를 완전히 분리하기가 어렵다는 점이다. 이는 코드가 복잡해지고, 설계시간이 길어지는 원인이 된다.

 

이러한 단점을 보완하기 위해 모델과 뷰를 완전하게 분리할 수 있는 MVP 패턴이 등장하기도 했다. MVP 패턴은 다음에 시간이 날 때 새로 포스팅 할 것이다.

 

이미지 출처 : myblog.opendocs.co.kr/archives/tag/mvc-model2

'Computer Science' 카테고리의 다른 글

정지 문제 (Halting problem)  (0) 2021.01.14
튜링 머신  (0) 2020.12.18