Products & Services/Django

CGI, FastCGI

TechNote.kr 2015. 5. 25. 22:48
728x90

CGI (Common Gateway Interface)

Web Server와 program 간에 데이터를 어떻게 주고 받을 것인가에 대한 규약.

Web Server : Client로부터 요청을 직접적으로 받는 부분으로 대표적으로 Apache.

CGIs (CGI scripts) : Web Server를 통해 전달되는 정보에 따라 html content를 생성. Web Server 외부의 Program.  C/C++, Perl, python 등 cgi규격에만 맞으면 가능.

CGI (Common Gateway Interface) : CGIs와 Web server간의 정보를 주고 받는 interface.

 

일반적인 경우

1. Client로 부터 page요청 받음. (예> http://www.example.com/index.html)

2. 해당 index.html 을 Client로 전달. (즉, 고정된 Data 전달)

 

CGI를 사용한 경우

1. Client로 부터 page요청 받음. (예> http://www.example.com/cgi-bin/sample.pl)

2. Web server가 해당 요청을 CGI를 통해 CGIs로 전달. (요청은 GET/POST 모두 가능)

3. CGIs 가 전달받은 정보를 기반으로 html 생성하여 Web Server로 전달. (전달받은 정보에 따라 html이 다양하게 생성)

4. Web Server에서 Client로 정보 전달

 

장단점

장점 : CGI 규격 자체가 Simple하여 확장이 용이

단점 : Web Server에서 CGIs를 호출하는 방식이 Fork로 구현되어 있어, 요청이 올때 마다 신규 Process를 생성해야 하여 요청이 많으면 부하가 심할 수 있다.

 


FastCGI

CGI의 변형.

기존 CGI에서는 request 마다 process를 생성해 간결한 구조에 비해 overhead가 많았는데, 

이런 Overhead를 줄이기 위해 request마다 process를 생성하지 않고, 상시 Process를 두어 지속적으로 들어오는 request들을 처리.

Web Server내에 FastCGI Server가 존재하는 경우, Web Server외부에 FastCGI Server가 존재하는 경우가 있는데, 전자의 경우는 socket을 이용하여 연결, 후자의 경우 tcp connection을 이용하여 서로 연결한다.   

 

728x90

'Products & Services > Django' 카테고리의 다른 글

matplotlib, mpld3, django  (0) 2015.09.21
Apache module  (0) 2015.05.26
CGI, FastCGI  (0) 2015.05.25