제목 : DCL 기반의 서블릿을 사용한 웹 서비스의 성능향상
석사학위논문
DCL 기반의 서블릿을 사용한 웹 서비스의 성능향상
Performance Upgrade of Web Services using DCL-based Servlet
요약
웹 서버 어플리케이션에 있어서 동적인 콘텐츠를 생성하는 기술은 매우 다양하다. 이러한 기술들은 ASP나 PHP의 경우와 같은 인터프리터 기반의 기술과 JSP나 ASP.NET과 같은 컴파일러 기반의 기술이 있으며, 이들 각각은 그들의 특징에 포함된 단점으로 인하여 시스템 자원의 효율을 높이는데 있어서 한계점을 가진다.
시스템 자원을 최대한 효과적으로 사용하는 방법은 네이티브 바이너리 코드로 개발된 어플리케이션을 사용하는 것이다. 본 논문은 동적인 콘텐츠를 생성하는 어플리케이션을 위하여 운영체제의 동적공유객체(DSO: Dynamic Shared Object)를 사용하는 기술인 DCL HTTP 서버 확장(DHE: DCL HTTP Server Extension)에 대하여 다룬다.
DHE는 DHE 서블릿과 DHE 서블릿 컨테이너로 이루어져 있다. 서블릿은 DHE 환경에서 HTTP 요청에 대한 구체적인 처리를 하도록 개발된 DSO이고 서블릿 컨테이너에 의하여 실행된다. 서블릿 컨테이너는 이미 널리 사용되고 있는 웹 서버 소프트웨어인 Apache나 IIS의 플러그인(plug-in)으로 개발되며 웹 서버간의 API의 차이점을 흡수하여 서블릿이 다양한 웹 서버 소프트웨어에 이식이 가능하도록 하는 독립된 환경을 제공한다.
DHE 서블릿은 표준 C언어 함수호출 규약을 제공하고 DSO를 개발할 수 있는 모든 프로그래밍 언어를 사용해서 개발할 수 있다. DCL(Daejung's Class Library) 프로젝트를 통해 개발된 C++ 클래스 라이브러리를 사용할 경우 운영체제 이식성과 더불어 객체 지향적 방법을 통한 생산성 향상을 얻을 수 있다.
DHE의 유효성을 검증하기 위해 동일한 알고리즘이 적용된 PHP, ASP, ASP.NET, JSP 서버 어플리케이션과의 성능비교 실험을 실시하였다. 실험의 결과는 DCL 기반의 서블릿을 사용한 DHE 환경이 가장 적은 가상메모리를 사용하고 있었고 200라인(2 -Kbytes)이상의 문자열을 생성하는 실험에서 단위 시간당 처리된 HTTP 요청의 개수가 JSP에 비하여 3배 이상, ASP, PHP에 비하여 6배 이상의 결과를 얻었다.
목차
서 론
관련연구 및 배경지식
Apache HTTP 서버
- 프로세스 구조와 프로세싱 모델
- Apache 확장모듈
Microsoft IIS 5.0
- 응용프로그램과 프로세스 구조
- ISAPI 확장모듈
웹 서버 어플리케이션 기술
- PHP
- ASP와 ASP.NET
- JSP와 자바 서블릿
- CGI와 FastCGI
동적공유객체
- UNIX의 공유객체
- Windows의 DLL
DCL 프로젝트
DCL HTTP 서버 확장
기본개념
구성요소
- HTTP 서버
- DHE 서블릿
- DHE 서블릿 컨테이너
- DHE 관리서버
DHE 인터페이스
- 역할과 특징
- 콜백함수
- 엔트리포인트 함수
- 데이터 구조
서블릿 컨테이너의 구현
서블릿 컨테이너의 설정과 제어
- DHE.INI
- DHEAdmin.dhe
Apache 1.3.x, Apache 2.x
Microsoft IIS 5.0
명령행
DCL의 서블릿 개발환경
서블릿 프레임워크
HTTP 관련 클래스
HTML 관련 클래스
데이터베이스 연결성
서블릿의 실행시간 디버깅
- AssertException
- 서블릿 컨테이너의 에러표시
- HttpServletEx의 디버깅 정보 표시
성능평가
하드웨어 구성
소프트웨어 구성
- 클라이언트 소프트웨어
- 시스템 모니터링 소프트웨어
- HTTP 서버의 설치와 구성
- 서버 어플리케이션
실험과 결과분석
- 성능측정의 초기상태
- 단일 호출에서의 시스템 자원사용
- 단위시간당 처리된 요청의 개수
결 론
참고문헌
ABSTRACT
부 록
표목차
- <표 2-1> UNIX의 공유 라이브러리 검색순서
- <표 2-2> Microsoft Windows의 DLL 검색순서
- <표 3-1> 웹 서버 어플리케이션 기술의 비교
- <표 4-1> 명령행 서블릿 컨테이너의 파일명
- <표 6-1> 성능평가를 위한 하드웨어 구성
- <표 6-2> HTTP 서버의 설치와 구성
- <표 6-3> ApacheBench의 사용
- <표 6-4> ApacheBench 실험에서 서버의 가상메모리 사용
그림목차
- <그림 2-1> Apache의 프로세스 구조
- <그림 2-2> IIS 5.0의 응용프로그램의 보호와 프로세스 구조
- <그림 3-1> DHE 기본 구성요소
- <그림 3-2> DHE 관리서버
- <그림 3-3> DHE 인터페이스
- <그림 4-1> dhe.ini
- <그림 4-2> DHEAdmin.dhe
- <그림 4-3> 서블릿 컨테이너의 서비스 거부
- <그림 4-4> httpd.conf에서 DHE의 설정
- <그림 4-5> IIS를 위한 서블릿 컨테이너의 레지스트리 내용
- <그림 4-6> DHE를 위한 IIS 5.0 응용프로그램 구성
- <그림 4-7> 명령행 서블릿 컨테이너의 실행
- <그림 5-1> 서블릿 프레임워크
- <그림 5-2> HTTP POST 데이터의 디코드
- <그림 5-3> DCLCore의 데이터베이스 클래스
- <그림 5-4> 템플릿 파일의 예: zipcode_search.html
- <그림 5-5> 템플릿과 데이터베이스 질의: zipcode_search.cpp
- <그림 5-6> HtmlTemplate을 적용한 데이터베이스 질의결과
- <그림 5-7> MyServlet.cpp
- <그림 5-8> 서블릿 컨테이너에 의한 에러표시
- <그림 5-9> MyServlet.cpp
- <그림 5-10> HttpServletEx의 디버깅 정보 표시
- <그림 6-1> 서버 어플리케이션의 실행결과
- <그림 6-2> 10만 라인 생성에 소요된 시간과 가상메모리
- <그림 6-3> ApacheBench 실험결과: 20라인(2,964Bytes)
- <그림 6-4> ApacheBench 실험결과: 200라인(28,525Bytes)
- <그림 6-5> ApacheBench 실험결과: 2,000라인(284,126Bytes)