Web?

자바 서블릿, JSP로 본 웹 어플리케이션의 발전 흐름

디자인인스 2016. 7. 15. 13:49

1. 정적 / 동적 웹 컨텐츠 비교

1) 정적 컨텐츠(Static Contents)

- 정적 컨텐츠는 사전에 제작되어서 더 이상 어떤 처리도 하지 않고 단순히 반환된는 모든 종류의 데이터들을 의미한다.

- HTML 페이지, 단순 텍스트 파일, 이미지 파일(GIF, JPG), 비디오(MPEG)등

- 임의의 사용자가 페이지를 가져와서 브라우저상에 보기 전에 이미 그 페이지의 모든 내용이 정해져 있다.




2. 웹 어플리케이션 발전 흐름

1) 초기 전통적인 웹 어플리케이션 기술 - CGI 방식

① 정식 프로그래밍 언어나 스크립트가 아니라 웹 서버와 서버에서 수행 중인 일반 프로세스 사이에 정보를 주고받는 방식

- 유닉스 플랫폼에서 웹서버가 CGI 호출하는 방식은 fork()이나 exec()로 구현되어 있다.

- 요청이 옥 되면 프로세스를 하나씩 더 만든다.

- CGI 프로세스는 요청을 처리하도록 CGI 프로그램을 수행시키고 그 결과를 웹 서버에 반환하면 웹 서버는 다시 클라이언트로 응답한다.


② Perl, C, C++등의 언어를 지원



[전통적인 CGI 방식의 웹 요청 처리 방식]


③ 문제점

- 각각의 클라이언트 요청에 대하여 독립적인 별도의 프로세스가 생성된다.

- 가령, 5개의 웹 브라우저가 똑같은 URL을 통하여 동일한 CGI실행을 요청하면 요청 갯수만큼 동일한 시간에 같은 프로세스를 5개 생성

: fork() / exec()

- 이러한 CGI 방식은 프로세서 단위로 동작하기 때문에 웹 서버에 큰 부담이 될 수 있다.

 또한 프로세서 간 데이터 교환의 제약이 있어 구현상 어려움이 있을 수 있다.



[중복된 같은 요청에 대한 CGI의 대처 방법]


2) 서블릿 방식의 웹 어플리케이션 기술

① 서블릿이란 요청과 응답 기반의 서비스에 내장되어 실행되는 자바 기반의 모듈이다.


② 서블릿은 자바 가상 머신(SVM)이라는 단일 프로세스 환경에서 클라이언트의 요청에 따라 다중 스레드로 동작 시킨다.

여기서 생성된 스레드는 객체가 차지하고 있는 메모리 영역을 공유하게 된다.




③ CGI에 비해 가지는 장점

- 다수의 웹 브라우저가 같은 요청을 하더라도 어플리케이션 서버는 관련된 스크립트에 대한 프로세스를 하나만 수행한다.

- CGI 방식에 비하여 CPU 점유도나 메모리 점유도에 있어서 상당히 효율적이다.

- 동시에 더 많은 웹 브라우저의 요청을 처리할 수 있다는 것을 의미하며 이는 곧 안정적인 웹 서비스를 제공할 수 있는 기반이 될 수 있다.

- 각 웹 요청에 대해서 어플리케이션 서버는 쓰레드(Thread)로서 처리한다.

- CGI 방식의 프로세스 실행 방식에 비해 웹 서버에 주는 오버헤드가 적으면서 스레드간 통신이라는 이점을 제공한다.


④ 서블릿 방식의 문제점

- 서블릿은 자바 소스내부에 Output Stream에 ""문자열 안에 HTML문서를 구현해야 하는 번거로움이 있다.

이로인해 컨텐츠 관리자, 디자이너, 개발자들이 각자의 역활에 충실하기가 어렵다.

- 서블릿은 컴파일된 바이트 코드로 제공되어야 하므로 코드 수정이 이루어질 때마다 다시 컴파일해서 웹 어플리케이션 서버에 제공해야 한다.


구분

컴파일 코드 방식

스크립팅 코드 방식

종류

CGI관련 프로그램인 Perl, C, C++ / 서블릿 프로그램

JSP, PHP, ASP

ㅋㅗ드형태

컴파일된 Binary Code 또는 Byte Code

ㅋㅓㅁ파일 되기 전 상태인 일반적인 스크립트 코드

ㅋㅓㅁ파일 방법

코드 구현 이후 컴파일 과정을 직접 수행해야 함

코드 구현 이후 컴파일 과정은 웹 요청 시 자동으로 수행됨

코드변경

코드 변경 코드를 직접 다시 재컴파일 해야 함

스크립트 내에서 코드를 수정만 하면 되며 재컴파일은 웹 요청시 자동으로 수행됨

[컴파일 코드 방식 VS 스크립팅 코드 방식]


3) 스크립팅 방식의 웹 어플리케이션 기술 - JSP(Java Sever Page)

① 스크립트 방식의 웹 어플리케이션은 위에서 언급한 사블릿의 단점을 아래와 같이 보완한다.

- JSP에서는 HTML과 자바 코드를 분리시킴으로써 웹 애플리케이션 개발시 컨텐츠 변경이 쉬워졌으며 관리가 쉽다.

- JSP파일 변경은 컴파일이 필요 없이 수정 시 실시간에 바로 적용된다.


② 여기서 언급되는 스크립트는 브라우저 등의 클라이언트에서 작동하는 Client Side 스크립트가 아니라, Server Side에서 작동하는 서버 스크립트를 의미한다. 서버 스크립트는

- HTML 문서 내에 프로그램 코드를 삽입하고 이를 서버특 웹 서버에서 분석하고 웹 클라이언트에 HTML 문서로 전송하는 기술을 말한다.

- 웹 서버로부터 전송된 HTML문서 내에는 서버측에서 원래 삽입된 프로그램 코드를 볼 수 없다. 처리된 결과만 HTML문서 내에 포함되어 전송된다.

- 서버측 스크립팅 기술을 통해 서버특에서는 클라이언트에 대한 요청에 근거한 동적인 문서를 응답으로 전송할 수 있게 된다.


③ 스크립트 방식은 마이크로소프트사의 ASP, JAVA 기반의 JSP, 오픈소스로 제공되는 PHP등이 있다. JSP는 서블릿 컨테이너에서 제공 되는 스크립트 방식의 기술로 JVM에서 작동하기 땨ㅐ문에 운영체제로부터 자유로운 적용이 가능한 기술이다.


④ JSP 서블릿 방식은 서블릿과 별개의 프로그램 방식이 아니라 서블릿의 확장 개념이다. 하나의 JSP파일은 하나의 서블릿으로 변경이 된다. JSP 페이지가 최초로 호출되면 서블릿 컨테이너는 JSP 페이지를 서블릿으로 컴파일한다. 이후 요청은 이렇게 만들어진 서블릿을 로드 각각의 요청에 따라 스레드가 작동하여 서블릿이 가진 출력 메커니즘을 이용해서 클라이언트에 전달한다.


⑤ 서블릿 컨테이너 기반의 웹 어플리케이션 서버는 JSP 스크립트 엔진을 제공한다. JSP Application 서버를 통하여 간접적으로 관련 스크립트를 호출하여 수행한다. 앞에서도 언급했듯이 JSP가 서블릿의 확장 개념이기 때문에 호출 및 작동원리는 아래의 그림에서 보듯이 서블릿과 비슷하다.



[JSP 웹 어플리케이션 방식의 웹 요청 처리 방식]



[중복된 같은 요청에 대한 JSP 웹 어플리케이션 방식의 대처 방법]


⑥ Tomcat 과 Resin, Jetty 등은 JSP 스크립트 엔진을 포함하는 어플리케이션 서버의 대표적인 소프트웨어 들이다. 그 외 상용으로 제공되는 웹 스피어, 웹로직, 제우스 등등이 있다.


4) 컴포넌트 기반의 웹 어플리케이션 기술 - MVC Arshitectetural Patterm 적용

① 웹 어플리케이션이 발전하면서 요구사항과 처리가 갈수록 많아지면서 웹 어플리케이션에서는 복잡하고 다층적인 구조가 요구되었다.

이러한 많은 복잡한 일을 처리할 수 있기 위해서는 다양한 컴포넌트 기술을 개발하고 적용할 필요가 있었다.


② 재 사용이 가능한 바자빈(JAVA Bean)이나 EJB(Enterprise Java Bean)외에 다양한 컴포넌트 기술을 적용함으로써 같은 기능을 갖는 프로그램 개발을 중복으로 개발 하지 않을 수 있게 된다. 그래서 프로그램 개발을 더욱 빠르게 개발할 수 있다.


③ 화면 단 처리와 업무 처리 즉, 프리젠테이션 로직과 비지니스 로직이 분리되는 방식의 패턴이 각광을 받게 된다. 이러한 방식의 대표적인 모델이 MVC(Model & View & Controller) Arshitectural Patterm이다.


3. 웹 어플리케이션 발전 흐름 요약