본문 바로가기

IT 관련/java

java MVC 모델, mvc 모델2 패턴

웹 개발을 하면서 가장 흔하게 접하는 mvc 모델과 그와 관련된 내용을 적어볼까 합니다.

먼저 입구가 되는 뷰는 사용자가 결과를 보거나 입력을 할 수 있는 화면이라고 생각하면 됩니다.

이벤트를 발생시키고, 이벤트의 결과를 보여주는 역할을 합니다. 컨트롤러는 뷰에서 중간을 연결해 주는 연결자라고 생각하면 됩니다. 뷰에서 받은 이벤트를 모델로 연결하는 역할을 합니다. 여기서는 인터페이스를 제공하여 뷰에서 호출하는 부분입니다. 모델은 뷰에서 입력된 내용을 저장, 관리, 수정하는 역할을 합니다. 이벤트에 대한 실질적인 일을 하는 부분입니다.

 

이와 같이 웹이 아닌2 티어 구조에서는 이렇게 처리됩니다.

하지만 JSP를 사용하는 3 티어로 되어있는 JSP 모델은 주로 모델 1과 모델 2를 사용합니다.

 

JSP 모델1은 JSP에서 자바 빈을 호출하고 데이터베이스에서 정보를 조회, 등록, 수정, 삭제 업무를 한 후 결과를 브라우저로 보내주는 방식입니다. 간단하게 개발할 수 있다는 장점이 있지만, 개발 후 프로세스의 변경이 생길 경우 수정이 어렵다는 단점이 있습니다. 그리고 더 큰 문제는, 이러한 구조로 개발하면 화면 부분과 비즈니스 모델 부분의 분업화가 어려워 개발자의 역량에 따라서 코드가 많이 달라질 수 있다는 것입니다.

이는 컨트롤러가 없기 때문에 MVC 모델이라고 하기는 어렵습니다.

 

이러한 단점을 해결하기 위해서 나온 것이 JSP 모델 2입니다. JSP 모델 2는 MVC 모델을 정확하게 따른다. 위에 그린 구조는 스트럿츠와 같다. 요청을 JSP로 직접 하는 JSP 모델 1과 가장 큰 차이점은 서블릿으로 요청을 한다는 것이다. 여기서 서블릿이 컨트롤러 역할을 수행한다.

 

왜 우리는 모델1과 모델 2에 대해서 알아야 할까,,,,,,

이것은 성능과 관련이 있기 때문입니다. 개발자 한 명이 처음 개발할 때에는 MVC, JSP 모델1, 2 어느 것을 쓰더라도 성능은 별 차이가 나지 않습니다. 하지만 그 개발자가 프로젝트에서 철수하거나, 여섯 달 뒤 관련 시스템을 수정하면 어떻게 될까요?

한 달만 지나도 '이걸 내가 이렇게 했다고?' 하는 생각이 들것입니다.

요즘은 기본적으로 스프링을 사용해서 개발하지만 MVC 패턴을 벗어나지 않습니다.

어떤 프렘임워크를 사용하든 어떤 툴을 사용하든 기본적인 개념을 알고 개발을 해야 한다고 생각합니다.

 

이런 관점에서 모델1, 2 패턴에 대해서 알아야 하는 것은 기본이라고 생각합니다.

한 화면에서 모든걸 처리할 수 있는 모델 1은 단순하지만 유지보수와 성능면에서 좋지 못하고

그에 비해 개발이 어려운 모델2는 유지보수와 성능이 좋으니 혼자 하는 개발이 아니고 유지보수를 생각한다면 모델 2의 개념을 항상 생각해서 개발하는 것이 좋을 것입니다.

 

그럼 이만.

끝.