2007년 12월 18일
CGI 방식의 웹 애플리케이션
CGI(Common Gateway Interface) 방식으로 동적인 웹 문서를 만들기 위해 웹 서버와 CGI 프로그램의 관계는 그림1과 같은 구조로 구성된다.

[그림1] CGI를 사용하여 동적인 웹 문서를 처리할 수 있는 웹 서버의 구조
그림2 처럼 CGI 프로그램을 이용하여 원하는 방식으로 비즈니스 로직을 처리하여 동적인 웹 문서를 만들 수 있다.

[그림2] CGI 프로그램이 데이터 베이스를 이용하여 동적인 HTML을 생성하는 구조
CGI는 웹 서버와 외부 프로그램을 연결하는 규약으로 CGI 방식을 따르는 프로그램을 포함하기도 한다. CGI는 웹 서버가 사용자의 리퀘스트를 외부 응용 프로그램에 전달하고 처리 결과를 사용자에게 전달하기 위한 표준적인 방법이다. 이렇게 웹 서버와 외부 프로그램이 데이터를 주고 받기 위한 방법이나 규약을 CGI라고 부른다.
CGI 프로그램을 만들기 위해 사용되는 언어는 Perl, C/C++, Visual Basic, Apple Script, Tcl 등이 있다. 각 언어마다 특징에 따라 적합한 언어로 CGI 프로그램을 개발한다. 만약 C로 CGI 프로그램을 만든다면 CGI 프로그램은 다음과 같은 방식으로 작성하게 된다.
int cgiMain(void) {
/* 입력 값 처리 */
...
printf("<HTML>\n\n");
printf("<HEAD> <TITLE> CGI Sample </TITLE> </HEAD>\n\n");
printf("<BODY>\n\n");
printf(" <H2>Subject</H2>\n");
printf(" 회원수 : %d명<BR>\n", count);
...
}
C로 작성하는 CGI 프로그램은 동적인 웹 문서를 만들기 위해 printf() 메소드를 사용하여 출력할 HTML 내용을 직접 적어 넣는 방식을 사용한다. 이 때 비즈니스 데이터를 웹 문서에 포함시켜 원하는 문서를 만들 수 있다.
그러나, 여기에서 볼 수 있는 가장 큰 문제점은 화면 처리를 위한 작업과 비즈니스 로직을 분리해서 작업하기가 매우 힘들다는 것이다. 하지만 이 보다 더 큰 문제점은 사용자의 리퀘스트마다 이를 처리하기 위해 다 수의 동일한 프로세스를 메모리로 로딩해야 한다는 것이다.
웹은 불특정 다수를 위한 것이기 때문에 동시에 많은 수의 사용자가 웹 서버에 리퀘스트할 수 있다. 따라서 사용자의 리퀘스트를 처리하기 위해 기하급수적으로 많은 자원을 사용할 가능성이 있으며, 하드웨어 시스템이 이를 감당하지 못할 상태에 쉽게 이를 수 있는 마치 폭탄을 떠안고 있는 것과 같은 문제점이 남아있는 것이다.
이러한 이유 때문에 웹 애플리케이션을 위한 서버의 아키텍처에 변화를 가져올 방법이 필요했다. 서버에서 작동하는 애플리케이션은 적은 자원을 소모하면서도 빠른 처리 능력을 가질 수 있어야 했다. 경량의 프로세서로 사용자의 리퀘스트를 처리할 수 있는 외부 애플리케이션의 필요성을 만족시키기 위해 자바에서는 서버에서 경량의 쓰레드 방식으로 작동할 수 있는 애플리케이션인 서블릿(Servlet)을 고안해 내었다.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- 1. 웹 서버 동작 방법 개요 by jessica
- 10. 웹 어플리케이션 기술 by jessica
- 4. 웹 서버에서 연결을 받아들이는 방법 by jessica
- 6. 성능을 고려한 웹 서버 구성 – 로드 밸런싱 by jessica
- HTML 보여주기 by 펜더곰
# by | 2007/12/18 02:10 | 스트럿츠2 | 트랙백 | 덧글(0)






☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]