본문 바로가기

Development/etc

Servlet 이란

● CGI
CGI(Common Gateway Interface)는 동적인 웹 애플리케이션 작성기술로 서블릿보다 먼저 등장해 많은 웹 애플리케이션에서 사용됐다. CGI는 <그림 2>와 같은 동작 방법으로 클라이언트에서 요청을 받아 요청에 해당하는 프로세스(프로그램)를 실행시킨다. CGI는 대부분의 프로그래밍 언어로 작성할 수 있지만 그중에서도 펄(Perl) 언어로 많이 작성됐다.



● 서블릿

서블릿은 CGI와 동일하게 동적인 웹 애플리케이션을 작성할 수 있는 기술이다. 현재 서비스되고 있는 대부분의 웹 애플리케이션은 서블릿으로 작성됐다. CGI와 비슷하게 클라이언트의 요청을 받아 해당하는 프로그램을 실행시켜주지만 CGI와는 조금 다른 동작 형태를 보인다.


서블릿이란?


● 플랫폼 독립성
자바로 작성된 서블릿은 자바의 특징 중 하나인 플랫폼 독립성을 지니고 있다. 플랫폼 독립성 지원이 갖는 장점은 하드웨어와 운영체제에 따라 다른 애플리케이션을 구현하지 않아도 된다는 점이다. 이러한 장점이 생기게 된 이유는 서블릿이 JVM 위에서 동작해 하드웨어와 운영체제가 달라져도 동일한 동작을 보여주기 때문이다

● 안전성
자바로 작성된 서블릿은 자바의 장점 중 하나인 안전성을 가진다. 악의적이거나 잘못 작성된 서블릿이 서버의 파일시스템에 손상을 입히지 않도록 JVM에서 접근제어를 실행한다.

● 효율성
서블릿은 CGI와 달리 효율적이다. CGI의 멀티프로세스 동작이 아닌 멀티스레드 동작으로 서블릿이 생성되면 서버가 종료되지 않는 이상 메모리로 남게 된다. 따라서 이후에 오는 요청에 대해서는 서블릿을 새로 생성하지 않고 동작을 이어갈 수 있기 때문에 시스템 자원(메모리)에서 큰 이점이 있다.


왜 서블릿이 사용되는가?
CGI 기술이 있음에도 불구하고 서블릿이 등장한 가장 큰 이유는 CGI 기술의 동작 방법 때문이다. CGI 기술은 요청이 많으면 많을수록 시스템 자원을 많이 사용하는 구조다. 안전성을 위해서 시스템 자원을 넉넉하게 만들어야 하기 때문에 많은 비용이 들게 된다. 그에 비해 서블릿은 적은 시스템 자원으로 많은 요청을 처리할 수 있는 구조를 가지고 있다.


CGI 멀티프로세스 동작




Servelt 멀티프로세스 동작



출처 : http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=40915