Django

4. CGI (Common Gateway Interface)

테니드2 2021. 4. 7. 23:02

초창기 웹 서버는 정적 페이들을 보여주는 것이 주된 역할이였지만, 점차 동적 페이지에 대한 요구사항이 생기고, 필요한 데이터를 저장하고 꺼내오는 등의 데이터베이스 처리에 대한 요구가 많아짐에 따라 웹 서버와는 다른 별도의 프로그램이 필요하게 되었다. 이러한 별도의 프로그램과 웹 서버 사이에 정보를 주고받는 규칙을 정의한 것이 바로 CGI 이다.

 

- CGI 방식의 단점

CGI 방식의 근본적인 문제점은 각각의 클라이언트 요청에 대하여 독립적인 별도의 프로세스가 생성된다는 것이다. 요청이 많아질수록 프로세스가 많아지고, 프로세스가 많아질수록 빌{적으로 프로세스가 점유하는 메모리 요구랑도 커져서 시스템에 많은 부하를 주는 요인이 된다. 현재는 CGI 방식을 거의 사용하지 않고 , 이러한 단점을 해결하기 위한 대안책으로 여러가지 기술이 등장했다.

 

- CGI 방식의 대안 기술

CGI 방식의 대한 기술 중 하나는 별도의 애플리케이션(CGI 프로그램과 같은 역할을 하는 프로그램)을 PHP 등의 스크립트 언어로 작성, 스트립트를 처리하는 스크립트 엔진(인터프리터)을 웹 서버에 내장시켜 별도의 프로세스를 기동시키는 오버헤드를 줄이는 방식으로 파이썬에서는 예전의 mod_python 모듈은 더 이상 사용하지 않고, 현재는 mod_wsgi 모듈을 사용

 

또 다른 하나는 애플리케이션을 처리하는 프로세스를 미리 데몬으로 가동시켜 놓은 후, 웹 서버의 요청을 데몬에서 처리하는 것이다. 이것 또한 프로세스 생성 부하를 줄일 수 있는 방법이다. 파이썬의 경우에는 데몬 방식에도 mod_wsgi 모듈을 사용한다. mod_wsgi 모듈을 앞에서처럼 웹 서버 내장 방식으로도 실행이 가능하고, 별도의 데몬 방식으로도 실행 가능하다.

 

CGI 애플리케이션을 별도의 데몬으로 처리하는 방식이 발전하여 스레드 처리 보강, 객체 지향 기술 반영으로 애플리케이션 전용 데몬인 애플리케이션 서버 방식으로 발전했다. 가장 많이 사용되고 있는 JSP(Java Server Page), ASP(Active Server Page) 기술에서 애플리케이션 서버 방식을 사용중이다.

 

파이썬에서 웹 서버 연동용으로 사용하는 mod_wsgi, uwsgi, gunicorn 프로그램들이, 웹 서버 프로그램인 httpd, nginx와는 별개의 애플리케이션 전용 데몬으로 동작한다는 점에서 웹 애플이케이션 서버라고 할 수 있다.

 

출처: 한빛미디어, Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹 프로그래밍