-
CGI란?프로그래밍 기초 공부 2022. 10. 14. 23:26
열입곱 번째로 포스팅하게 하게 될 내용은 CGI에 관한 내용입니다.
CGI(Common Gateway Interface)란?
웹서버와 애플리케이션 간에 데이터를 주고 받는 방법이나 규약을 CGI라고 함
CGI란 서버와 외부 스크립트 또는 프로그램과 상호작용할 때 이루어지는 입출력을 정의한 표준
웹서버와 요청을 받아 처리해줄 로직을 담고 있는 애플리케이션 프로그램 사이의 인터페이스- CGI는 특별한 라이브러리나 도구를 의미하는 것이 아니고, 별도로 제작된 웹서버와 프로그램간의 교환방식
- 웹서버가 특정 언어로 쓰인 구체적인 프로그램이 아니라 이 인터페이스에 의존하고 있기 때문에 어떤 언어든 이 인터페이스를 구현하기만 한다면 웹서버와 소통할 수 있음
- 별도로 만들어 놓은 프로그램에 HTML의 Get or Post 방법으로 클라이언트의 데이터를 환경변수로 전달하고,
프로그램의 표준 출력 결과를 클라이언트에게 전송하는 것 - 즉, 자바 어플리케이션 코딩을 하듯 웹 브라우저용 출력 화면을 만드는 방법
CGI특징
- CGI는 가장 오래된 인터페이스이고, 거의 모든 웹서버를 지원 가능
- CGI를 구동하는 방법이 한가지는 아니지만, 대표적인 방법이 Apache HTTPd
- 웹서버와 통신하기 위해 CGI를 사용하는 프로그램은 매 리퀘스트마다 서버를 재시작해야 함
- CGI의 장점은 간편함, CGI를 사용하는 프로그램을 작성할 때 세줄 정도만 추가하면 됨
- 그러나 이런 간편함은 때로 대가를 치뤄야할 때도 있음
- 웹서버가 파일을 읽을 수 있어야 하기 때문에 파일을 항상 읽기 가능한 권한으로 만들어야 함
- 스크립트 파일이 Byte Order Mark를 포함하지 않아야 함
CGI 장점
- 언어, 플랫폼 독립적이다(스펙만 준수하면 됨)
- 매우 단순하고 다른 server-side 프로그래밍 언어에 비해 advanced task를 훨씬 쉽게 수행할 수 있음
- 재사용할 수 있는 CGI 코드 라이브러리가 풍부함
- CGI가 웹서버에서 실행될 때 안전함
- CGI 코드를 수행하는데 특정 라이브러리가 필요하지 않기 때문에 매우 가벼움
CGI 단점
- 속도가 느림
- 요청이 올 때마다 DB connection을 새로 열어야 함
- HTTP 요청마다 새로운 프로세스를 만들기 때문에 서버 메모리를 많이 잡아먹음
- 페이지 로드 사이에 데이터가 메모리에 캐시될 수 없음
CGI와 서블릿의 주요 차이점
- CGI 스크립트는 네이티브 OS로 작성되어 특정 디렉토리에 저장, 반면 서블릿 프로그램은 대개 Java로 작성되어 Java 바이트 코드로 컴파일되고 JVM에서 실행
- CGI는 플랫폼에 따라 다르므로 운영 체제간에 전환하기가 어려움, 반대로 서블릿은 JVM이 설치된 운영 체제에서 실행될 수 있으므로 플랫폼에 독립적임
- CGI 스크립트는 서버의 원시 OS에 작성된 실행 가능 프로그램, 반대로 서블릿은 JVM에서 실행되는 Java 바이트 코드로 컴파일
- Servlet은 Java를 사용하기 때문에 CGI보다 안전함
- 서블릿의 속도, 성능 및 효율성은 CGI보다 우수함
- CGI 스크립트는 직접 처리 할 수 있움, 반대로 서블릿은 먼저 프로그램을 변환하고 컴파일 한 다음 처리함
CGI와 서블릿은 같은 방식으로 작동하지만 서블릿은 빠르고 안전하며 플랫폼 독립적이며 쉽게 개발할 수 있으며
여러 API를 통해 액세스 할 수 있고 다양한 웹 서버에서 지원되므로 서블릿을 CGI보다 유리하게 사용할 수 있음
'프로그래밍 기초 공부' 카테고리의 다른 글
AJAX란? (0) 2022.10.17 JSP란? (0) 2022.10.17 HeidiSQL(하이디 SQL)이란? (0) 2022.10.10 Servlet이란? (0) 2022.10.10 HTML, CSS, JS란? (0) 2022.10.09