관리 메뉴

거니의 velog

(1) 모델2 방식으로 효율적으로 개발하기 1 본문

Java/Java_JSP Model2

(1) 모델2 방식으로 효율적으로 개발하기 1

Unlimited00 2023. 9. 22. 19:43

1. 웹 애플리케이션 모델

* 보통 웹 애플리케이션을 개발할 때 화면은 디자이너가 맡아서 구현하고, 데이터베이스 연동 같은 비즈니스 로직은 프로그래머가 알아서 구현한다. 즉, 각자 맡은 기능을 좀 더 분업화해서 개발을 하는 것이다.
* 일반적으로 어떤 일을 맡아 진행하게 되면 일단은 기존에 주로 사용했던 방법이나 방식을 따르게 마련이다. 웹 애플리케이션을 개발할 때도 마찬가지이다. 일일이 처음부터 새로 개발하는 것이 아니라 기존에 웹 애플리케이션 개발 방법이나 방식을 따른다.
* 따라서 지금의 웹 애플리케이션 개발은 일반적으로 많이 사용하는 표준화 소스 구조를 만들어 개발을 진행한다. 이러한 표준화된 소스 구조를 웹 애플리케이션 모델이라고 한다. 웹 애플리케이션 모델의 종류에는 모델1과 모델2 방식이 있다.


(1) 모델 1 방식

* 지금까지 JSP 실습 예제를 구현한 방식이 바로 모델1 방식이다. 이는 데이터베이스 연동 같은 비즈니스 로직 작업과 그 작업 결과를 나타내주는 작업을 동일한 JSP에서 수행한다. 즉, 모든 클라이언트의 요청과 비즈니스 로직 처리를 JSP가 담당하는 구조이다.
* 다음 그림은 모델1 방식으로 웹 애플리케이션이 동작하는 과정을 나타낸 것이다.

* 모델 1 방식은 기능 구현이 쉽고 편리하다는 장점이 있는 반면에 요즘처럼 웹 사이트 화면 기능이 복잡해지면 화면 기능과 비즈니스 로직 기능이 섞이면서 유지보수에 문제가 생긴다.
* 예를 들어 의류 쇼핑몰을 모델1 방식으로 구현해 운영하고 있다고 치자. 계절이 가을에서 겨울로 바뀌면 화면에 나타낼 의류 상품의 이미지도 바꿔줘야 한다.

* 디자이너가 이 작업을 하려면 JSP에 개발자가 관계되는 비즈니스 로직 기능도 알아야 하므로 작업하기가 쉽지 않을 뿐 아니라 비즈니스 로직과 화면 기능이 섞여 코드 재사용성도 떨어진다. 이렇듯 모델1 방식으로 웹 애플리케이션을 구현할 경우 조금만 기능이 복잡해져도 유지보수가 어렵다는 단점이 있다. 모델1 방식의 이러한 단점을 보완한 것이 바로 모델2 방식이다.


(2) 모델2 방식

* 모델2 방식의 핵심은 웹 애플리케이션의 각 기능(클라이언트의 요청 처리, 응답 처리, 비즈니스, 로직 처리)을 분리해서 구현하자는 것이다. 객체 지향 프로그래밍에서 각각의 기능을 모듈화해서 개발하는 것과 같은 원리이다.
* 웹 프로그램 개발 시 개발자가 전체 기능을 몰라도 각 기능이 모듈화되어 있으므로 자신이 맡은 부분만 개발하면 된다. 각 부분을 조립만 하면 나중에 전체를 사용할 수 있어 개발 효율성도 높다. 물론 모델2 방식으로 개발하기 위해서 필요한 기술이나 개념을 숙지해야 하는 번거로움은 있지만 초급자라면 우선 자신이 맡은 부분만 개발하면 되므로 훨씬 효율적인 개발 방식이라고 할 수 있다. 그리고 개발 후 서비스를 제공할 때도 유지보수가 편할 뿐만 아니라 개발한 모듈들은 비슷한 프로그램을 만들 때 사용할 수 있어 코드 재사용성도 높다. 현재 모든 웹 프로그램은 모델2 방식으로 개발한다고 보면 된다.

* 모델2 방식의 특징은 다음과 같다.

- 각 기능이 서로 분리되어 있어 개발 및 유지보수가 쉽다.

- 각 기능(모듈)의 재사용성이 높다.

- 디자이너와 개발자의 작업을 분업화해서 쉽게 개발할 수 있다.

- 모델2 방식과 관련된 기능이나 개념의 학습이 필요하다.

* 다음 그림은 모델2 방식으로 동작하는 웹 사이트를 나타낸 것이다.


2. MVC 디자인 패턴

* 앞서 살펴본 모델2 구조에는 여러 가지 개념들이 사용되는데 그중 가장 자주 사용되는 개념이 MVC이다. MVC란 Model-View-Controller(모델-뷰-컨트롤러)의 약자로, 일반 PC 프로그램 개발에 사용되는 디자인 패턴을 웹 애플리케이션에 도입한 것이다. 즉, 웹 애플리케이션을 화면 부분, 요청 처리 부분, 로직 처리 부분으로 나누어 개발하는 방법이다.
* 원래 모델2 방식의 구조가 MVC를 포함하는 개념이지만 MVC가 모델2 방식의 뼈대를 이루므로 모델2 방식으로 구현한다는 말은 곧 MVC로 구현한다는 것과 같은 의미로 보면 된다.

* MVC의 특징은 다음과 같다.

- 각 기능이 분리되어 있어 개발 및 유지보수가 편리하다.

- 각 기능의 재사용성이 높아진다.

- 디자이너와 개발자의 작업을 분업화해서 쉽게 개발할 수 있다.

* 다음 그림은 MVC로 이루어진 웹 애플리케이션의 동작 과정을 나타낸 것이다.

* 컨트롤러는 사용자로부터 요청을 받아 어떤 비즈니스 로직을 처리해야 할지 제어한다. 모델은 데이터베이스 연동 같은 비즈니스 로직을 처리하고, 뷰는 모델에서 처리한 결과를 화면에 구현하여 클라이언트로 전송한다.


(1) MVC 구성 요소와 기능

* 그럼 MVC로 구현한 웹 애플리케이션은 어떤 구조인지 조금 더 면밀히 살펴보자.

* 웹 애플리케이션에서 컨트롤러 역할은 서블릿이 담당한다. 모델은 DAO나 VO 클래스가 담당하고, 뷰 역할은 JSP가 담당한다.