티스토리 뷰
MVC패턴은 웹 애플리케이션 개발 방법론(혹은 아키택쳐) 중 하나로 유명하다. 대한민국에서도 인기있는 프레임워크는 대부분 MVC패턴을 채택하고 있다.
그림1. MVC 아키텍쳐를 도식화한 이미지
먼저 모델(Model), 뷰(View), 컨트롤러(Controller)에 대한 정의를 내리면 다음과 같다.
Model: 데이터를 가진 객체, 파라미터로 자주 쓰인다. DB의 테이블과 대응하는 경우가 많다.
View: UI를 담당한다. 클라이언트 측 기술인 Html, Css, Javascript등으로 만들어진 컨테이너이다.
Controller: UI를 통한 사용자의 입력 명령에 응답하고, 및 데이터 흐름 제어를 담당한다.
MVC의 흐름에 대해 간략히 설명하면 다음과 같다. 사용자(User)는 컨트롤러(Controller)를 사용(Uses)하여 웹 애플리케이션을 다룰 수 있다. 컨트롤러는 사용자의 요청에 맞는 데이터를 모델(Model)에 요청한다.(Manipulates) 뷰(View)는 모델이 리턴한 결과를 반영한다(Updates)
그림과 설명에서 유추할 수 있겠지만, MVC패턴의 최대 장점은 사용자에게 보여지는 프레젠테이션 영역과 비즈니스 로직, 데이터 구조가 서로 완전히 분리되어 있다는 점이다. 프레젠테이션 영역은 다른 영역에 비해 수정이 매우 잦다는 것을 감안한다면 어느정도의 장점인지 알 수 있을 것이다.
그림2. MVC Model1과 Model2를 도식화한 이미지
한편, 모델1과 모델2는 MVC를 구현하는 방식이라고 할 수 있다. 먼저 모델1과 모델2의 정의는
모델1: 비즈니스 로직 영역(Controller)에 프레젠테이션 영역(View)을 같이 구현하는 방식이다.
모델2: 비즈니스 로직 영역과 프레젠테이션 영역이 분리되어 있는 구현 방식이다.
JAVA의 경우, 모델1은 JSP에 비즈니스 로직과 프레젠테이션 영역을 함께 구현하는 방식이다. 이 방식은 비즈니스 로직이 복잡하지 않을 때 주로 쓰인다. 모델1 방식을 채택하면 빠르고 쉽게 개발할 수 있다는 장점이 있다. 하지만, JSP 파일 자체가 너무 비대해지고, Controller와 View가 혼재하므로 향후 유지보수에 어려움을 겪을 수 있다.
모델2 방식은 View와 Controller를 분리하는 방식이다. 그래서 디자이너와 개발자의 분업이 가능하며 유지보수에 유리하다. 하지만 설계에서 어려움을 겪을 수 있고, 개발 난이도가 높다는 단점이 있다. (설계가 잘못될 경우, 웹 애플리케이션 전체가 망가질 수 있다.)
모델1과 모델2를 비교한 내용을 표로 정리하면 다음과 같다.
|
모델1 |
모델2 |
컨트롤러와 뷰의 분리 여부 |
통합(JSP파일) |
분리(JSP, Servlet) |
장점 |
쉽고 빠른 개발 |
디자이너/개발자 분업 유리 유지보수에 유리 |
단점 |
유지보수가 어려움 |
설계가 어려움 개발 난이도가 높음 |
사실, 모델1 방식으로 웹 서비스를 개발하는 사례는 아예 없다고 봐도 무방하다. 지금은 프론트엔드 개발자와 백엔드 개발자의 역할이 명확해졌고, 모델1은 백엔드와 프론트엔드 역할 분담이 모호해서 오히려 협업의 걸림돌이 되기 때문이다.
-끝-
출처
그림1: https://ko.wikipedia.org/wiki
그림2: http://myblog.opendocs.co.kr/archives/tag/mvc-model2
'IT > 기술면접' 카테고리의 다른 글
[IT 기술면접 준비자료] Wrapper Class와 AutoBoxing (0) | 2016.10.30 |
---|---|
[IT 기술면접 준비자료] CPU 스케줄링 기법 (선점 스케줄링, 비선점 스케줄링) (0) | 2016.10.16 |
[IT 기술면접 준비자료] 교착상태(Deadlock)와 식사하는 철학자들(Dining Philosophers) (0) | 2016.10.02 |
[IT 기술면접 준비자료] HTTP Method, GET과 POST의 비교 (0) | 2016.09.18 |
[IT 기술면접 준비자료] JVM(Java Virtual Machine)의 구조와 구동원리 (4) | 2016.08.21 |