티스토리 뷰

반응형

 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





반응형
최근에 올라온 글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함
Total
Today
Yesterday