Common Gateway Interface(CGI)란

춘식이 개발로그·2022년 3월 27일
0

유저가 웹 페이지를 요청했을 때 서버는 요청된 페이지를 보내준다. 하지만 유저가 웹페이지에서 특정 form을 채운 뒤 웹페이지를 보내면 이는 보통 애플리케이션에 의해 처리 되어야 한다. 웹서버는 보통 form 정보를 처리해줄 애플리케이션 프로그램에 정보를 보내고, confirmation 메시지를 돌려준다.

예를 들어, 회원가입 정보라면 서버는 이 정보를 애플리케이션에 보내 회원가입 관련 로직이 수행되도록 할 것이고, 애플리케이션은 회원가입 로직을 수행한 뒤 결과를 서버에 다시 보내줄 것이다. 이렇게 서버와 애플리케이션이 소통할 때 CGI 기반으로 만들어진 프로그램이라면 CGI 스펙을 따라 소통이 이루어진다.

그러니까 CGI도 그냥 인터페이스인데, 무엇과 무엇 사이의 인터페이스냐면 웹 서버와 요청을 받아 처리해줄 로직을 담고 있는 애플리케이션 프로그램 사이의 인터페이스인 것이다. 웹 서버가 특정 언어로 쓰인 구체적인 프로그램이 아니라 이 인터페이스에 의존하고 있기 때문에 어떤 언어든 이 인터페이스를 구현하기만 한다면(CGI 스펙을 따른다면) 웹 서버와 소통할 수 있다.

CGI에 문제가 있어서 servlet이 나온 것으로 알고있는데 CGI의 장점과 단점을 알아보면.

장점

  • 언어, 플랫폼 독립적이다(스펙만 준수하면 된다).
  • 매우 단순하고 다른 server-side 프로그래밍 언어에 비해 advanced task를 훨씬 쉽게 수행할 수 있다.
  • 재사용할 수 있는 CGI 코드 라이브러리가 풍부하다.
  • CGI가 웹 서버에서 실행될 때 안전하다.
  • CGI 코드를 수행하는데 특정 라이브러리가 필요하지 않기 때문에 매우 가볍다.

단점

  • 느리다(요청이 올 때마다 DB connection을 새로 열어야 한다).
  • HTTP 요청마다 새로운 프로세스를 만들기 때문에 서버 메모리를 많이 잡아먹는다.(servlet은 요청마다 스레드를 만든다.)
  • 페이지 로드 사이에 데이터가 메모리에 캐시될 수 없다.

어디에 주로 사용되는 웹 기술인가?

카운터, 방명록, 인터넷 쇼핑몰, 게시판, 검색엔진 등등에 사용된다.

CGI 프로그램 언어 종류는?

유닉스, 리눅스 계열의 서버에서는 보통 Perl, PHP라는 프로그램을 사용한다. 여기서 php는 DB와의 연동이 쉽다는 이유로 perl보다 많이 사용된다고 한다. 윈도우NT계열은 ASP라는 기법을 많이 사용하고 있음.

요약.

  • CGI란 서버와 애플리케이션 간에 데이터를 주고 받는 방식 또는 컨벤션을 CGI라고 한다.
  • 주로 방명록 같이 방문객과 홈페이지 주인이 소통하기 위한 기술.

참고 글
https://live-everyday.tistory.com/197
https://blog.daum.net/nikkiji/10340710

0개의 댓글