Servlet을 공부하던중 CGI에 대한 내용이 나와 CGI의 개념과 Servlet의 개념 그리고 차이점을 정리해 보았습니다.

CGI(Common Gateway Interface)

CGI, 공용 게이트웨이 인터페이스는 웹 서버와 외부 프로그램간의 데이터를 주고 받는 방법에 대한 규격입니다. (특정 플랫폼에 의존하지 않고 웹서버등으로 외부 프로그램을 호출하는 조합)

이 CGI 표준을 따라서 만들어진 프로그램을 CGI 프로그램 CGI 스크립트라고 합니다.

CGI는 서버측에서 웹 브라우저가 웹서버의 프로그램과 상호작용 할수 있게 해줍니다. 예를 들면 웹페이지가 데이터베이스를 쿼리하거나 사용자가 양식 정보를 서버에 제출하는 경우 CGI 스크립트가 호출됩니다.

Servlet

서블릿은 웹 브라우저 또는 HTTP 클라이언트와 HTTP 서버 간의 상호 작용을 용이하게 하는 중간 프로그램 역할을 하는 Java 기반 웹 구성 요소 입니다.

그렇다면 CGI와 Servlet의 차이는 무엇일까?

둘의 차이

비교 CGI Servlet
기본 프로그램은 기본 OS로 작성됩니다. 자바 기반 프로그램
프로세스 생성 각 클라이언트 요청은 자체 프로세스를 생성 클라이언트 요청 유형에 따라 프로세스가 생성
실행 환경 별도의 프로세스 JVM
보안 서블릿에 비해 취약합니다. 공격에 저항이 가능합니다.
속도 느림 빠름
스크립트 처리 즉시 실행하기전에 스크립트가 번역되고 컴파일됩니다.

정리

  • CGI는 웹서버와 동적 컨텐츠를 만들어내는 프로그램간의 대화방법을 정의한 규격입니다.
  • 보통 CGI가 사용될때는 C나 Perl로 프로그램을 만들어 사용하였으나 속도등 여러문제를 개선 시켜 나온 기술이 서블릿입니다.

Reference

https://techdifferences.com/difference-between-cgi-and-servlet.html

위키백과(CGI)