CGI 개념 및 설명


CGI : Common Gateway Interface


CGI 개념 설명

초창기의 웹 서버는 단순히 클라이언트의 요청에 정적 파일을 응답했다. 하지만 이제는 동적인 사이트가 확대됨에 따라 PHP, Python 같은 애플리케이션으로 처리된다. 웹 서버는 요청을 받아 애플리케이션에 전달하고, 애플리케이션에서 요청을 처리한 후 응답을 웹 서버에 반환하며, 이 응답을 클라이언트에 보낸다. 이 처럼 웹 서버와 애플리케이션이 연동될 수 있도록 CGI 규약이 개발됐다. 즉, CGI는 웹 서버와 게이트웨이 애플리케이션 간에 정보를 교환할 방법을 기술한 규약이다.

CGI의 동작 방식은 다음과 같은 결점을 가진다.

  • 요청마다 새로운 프로세스를 생성하기 때문에 상태 정보가 요청과 요청 사이에 상실된다.
  • 요청 수 만큼 프로세스가 생성되기 때문에 쉽게 부하가 발생한다.

Fast CGI

CGI의 결점을 보완한 Fast CGI는 다음과 같은 개선점을 가진다.

  • 영구적으로 지속되는 프로세스가 여러 요청을 처리하게 된다.
  • 웹 서버와 게이트웨이 애플리케이션은 TCP나 IPC 소켓 같은 소켓을 사용해서 통신한다. 그렇기 때문에 두 컴퓨터로 분산 배치할 수 있다.
  • 이어지는 요청에 대해 부가 생성하지 않고도 이어서 처리할 수 있다.
  • 소켓 기반의 프로토콜인 만큼 어떤 언어를 사용해도 구현할 수 있다.

uWSGI와 SCGI

uWSGI 모듈은 엔진엑스와 애플리케이션이 uwsgi 프로토콜로 통신하게 해준다. uwsgi 프로토콜은 WSGI(웹 서버 게이트웨이 인터페이스)에서 파생됐다. WSGI는 웹 서버와 웹 애플리케이션의 인터페이스를 위한 파이썬 프레임워크이다.
SCGI는 Simple Common Gateway Interface의 약자로, FastCGI와 유사하다.

Comments