Java2EE Framework/프레임워크 개념

자바 웹 애플리케이션 계층 아키텍처 모델

본클라쓰 2010. 5. 5. 11:46

 

자바는 웹 어플리케이션 언어를 발표하면서 두 가지 모델의 아키텍처를 제시했다. 흔히 Model 1과 Model 2 아키텍처라고 부르는 구조로 각각의 아키텍처는 장단점을 가지고 있어 무엇이 좋고 나쁘다 할 수 없지만 그 특징을 이해해 둘 필요가 있다. Model 1 과 Model 2 아키텍처는 작업 처리의 위치에 있어서 차이를 보인다.

 

 

■ Model 1 방식

 

 모델1 방식은 JSP 페이지가 요청 처리와 클라이언트의 응답을 보내는 책임을 가지고 있다. 사용자는 직접 JSP 페이지를 호출하며, 호출받은 JSP 페이지는 결과를 출력하기 위해 필요한 로직을 수행한 후 결과를 바로 보여주는 개발방식이다.

 

 이 때 JSP 페이지는 사용자가 입력한 입력 값의 유효성 체크, 비즈니스 계층과의 통신, 화면 구성을 위한 프리젠테이션 로직 등을 수행하게 된다. 모델1 방식을 일반적인 개발방식이며 다음과 같은 장단점을 가진다.

 

장점

 개발 속도가 빠르다. 또한, 구조가 매우 간단하여 초보자도 쉽게 개발이 가능하다. 성능면에서도 비교적 유리해 초기 자바 기반의 웹 어플리케이션 구축에 널리 사용되고 지금까지 많이 적용되고 있는 모델이다.

 

단점

 개발 속도가 빠른 반면 프로젝트 중/후반부로 갈수록 요구사항 변경에 따른 대응 속도가 느리다. 또한, JSP 페이지에서 유효성 체크, 에러처리, 다국어 지원 등과 같이 너무 많은 일을 전담하고 있으므로 JSP 페이지가 복잡해지고 정교한 UI계층을 개발하기 힘들다. 또한, 비즈니스 로직과 프리젠테이션 로직이 같이 있어 모델과 뷰의 재사용성이 떨어진다.

 

결론

 이와 같이 Model 1 방식은 위와 같은 단점을 가지고 있지만 작은 규모의 어플리케이션 개발이나 요구 사항 변경이 많지 않은 개발 환경에 적합한 개발 방법이다.

 

 

■ Model 2 방식

 

 모델2 방식은 MVC(Model-View-Controller) 패턴에 기초하고 있다. MVC 패턴은 어플리케이션을 Model, view, controller로 분리하여 각 레이어에 맞게 처리하는 방식이다. GUI 프로그램을 작성할 때 프로그램을 수행하는 영역에 따라 분리한 것이 MVC 패턴인데, 로직의 분리가 MVC 패턴의 시작이다.

 

 

 MVC 패턴은 GUI 프로그램을 개발하면서 얻은 아키텍처로 사용자의 요청에 따라 어플리케이션이 수행해야 할 부분을 세 부분으로 나누고 세 부분에 맞게 따로 개발하여 연결하는 방식이다. 이와 같이 어플리케이션을 제작할 때, 모델, 뷰, 컨트롤러로 분리하여 작성하면 어플리케이션의 복잡성과 연관성을 줄일 수 있어 각 부분의 제작에 도움이 된다.

 

※ 로직의 분리

로직은 시스템의 상태를 나타내는 로지과 상태를 변경시키는 로직으로 구분할 수 있는데, 시스템의 상태를 나타내는 로직은 비즈니스 로직(모델)으로, 상태를 변경시키는 로직은 컨트롤러로 구분한 것이다.

 

 자바에서 발표한 Model 1과 Model 2은 처리하는 방식의 차이를 가지고 있다. Model 1 방식은 사용자의 요청을 받는 부분이 JSP 페이지이고, Model 2 방식은 사용자의 요청을 받는 부분이 서블릿이다. 즉, 사용자의 요청을 받는 부분이 JSP냐 서블릿이냐로 구분하는 것이 모델1과 모델2을 구분하는 방법이다.

 

 모든 요청이 컨트롤러인 서블릿에 전달되게 하는 방식이다. 진정한 MVC 패턴 방식이며 컨트롤러인 서블릿이 클라이언트의 요청을 받아 해당 비즈니스 계층에게 작업을 위임한다. 컨트로러가 비즈니스 계층에 작업을 위임할 때 클라이언트로부터 전달받은 데이터를 같이 전달하게 되며, 비즈니스 계층이 작업을 완료한 후 컨트롤러에게 결과물을 반환한다.

 

 모든 작업이 끝나면 컨트롤러는 비즈니스 계층에게 전달받은 결과물을 클라이언트의 요청에 따라 출력할 뷰를 결정하게 된다. 이 때 모델 데이터를 뷰에 전달하게 되며, 최종적으로 뷰는 컨트롤러에게 받은 모델 데이터를 클라이언트에게 보여준다. 모델2 방식의 장단점은 다음과 같다.

 

장점

 정교한 UI 개발이 가능하며, 모든 요청이 컨트롤러를 거치기 때문에 컨트롤러를 통해 화면에 대한 정교한 제어가 가능하다. 이에 에러처리, 유효성 체크 등의 기능을 컨트롤러가 담당하게 되면서 JSP는 단지 프리젠테이션을 위한 로직만을 가지고 있기 때문에 JSP 페이지 구현 코드가 상당히 단순해진다.

 

 그러므로 유지보수성이 향상되며, 뷰를 위한 기술로 JSP, XML, Velocity 와 같은 다양한 기술들을 이용하는 것이 가능해 진다. Model 2 방식은 개발 초기에 부하가 비교적 높고 아키텍처에 대한 수준 높은 이해를 요구하지만, 재사용성이 Model 1 방식에 비해 용이하다는 장점이 있다.

 

단점

 Model 1 방식에 비해 배우는데 많은 시간을 투자해야 하며, 새로운 기술을 익혀야 한다는 부담감이 있다. 또한, 컨트롤러의 역할을 하는 서블릿의 역할이 매우 중요하며, 그 구조상 잘못 개발된 경우 어플리케이션 전체에 미치는 영향이 매우 크다.

 

 또한, 컨트롤러 구현시 모델과 뷰를 호출해주는 부분이 하드 코딩되어 있거나 비효율적으로 구현되어 있다면 어플리케이션의 효율을 떨어뜨리고 구조만 복잡하게 되어 버리는 경우가 많다.

 

 

■ 모델1 방식과 모델2 방식의 결론

 

 모델1은 비즈니스 로직이 단순하고, 애플리케이션의 규모가 작다면 유용하다. 하지만 비즈니스 로직이 복잡해지고 처리해야 할 것이 많이지면 모델1의 한계가 나타난다. 모든 처리를 하나의 JSP 에서 처리하기 때문에 비즈니스 로직의 수정이나 뷰의 수정에 많은 시간이 걸리고 하나의 페이지가 처리해야 하는 부분이 많아 질 수록 수정이 더욱 어려워진다.

 

 이에 비해 모델2는 아키텍처의 수준 높은 이해를 요구하지만 잘 설계된 모델2 애플리케이션은 계층적인 구분이 명확해져 수정이나 확장에 열려있게 된다. 따라서 애플리케이션의 구조가 크거나 다양한 요구 사항을 반영하기에 적합한 모델이다.