엔지니어로 가는 길

Common Gateway Interface(CGI)란 무엇인가 본문

프로그래밍

Common Gateway Interface(CGI)란 무엇인가

탐p슨 2020. 8. 18. 12:34
728x90

Common Gateway Interface(CGI)란

서버와 애플리케이션 간에 데이터를 주고 받는 방식 또는 컨벤션을 CGI라고 한다. 아래 그림을 참고하자.

https://www.loginsoft.com/blog/2018/07/25/introduction-to-common-gateway-interface-and-cgi-vulnerabilities/

 

https://electricalfundablog.com/common-gateway-interface-cgi/

 

https://electricalfundablog.com/common-gateway-interface-cgi/

 

유저가 웹페이지를 요청했을 때 서버는 요청된 페이지를 보내준다. 하지만 유저가 웹페이지에서 특정 form을 채운 뒤 웹페이지를 보내면 이는 보통 애플리케이션에 의해 처리되어야 한다. 웹서버는 보통 form 정보를 처리해줄 애플리케이션 프로그램에 정보를 보내고, confirmation 메시지를 돌려준다. 예를 들어, 회원가입 정보라면 서버는 이 정보를 애플리케이션에 보내 회원가입 관련 로직이 수행되도록 할 것이고, 애플리케이션은 회원가입 로직을 수행한 뒤 결과를 서버에 다시 보내줄 것이다. 이렇게 서버와 애플리케이션이 소통할 때 CGI 기반으로 만들어진 프로그램이라면 CGI 스펙을 따라 소통이 이루어진다.

 

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

 

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

 

CGI의 장점과 단점


CGI 장점

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

 

CGI 단점

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

 

 

참고

https://whatis.techtarget.com/definition/common-gateway-interface-CGI

https://electricalfundablog.com/common-gateway-interface-cgi/

https://www.loginsoft.com/blog/2018/07/25/introduction-to-common-gateway-interface-and-cgi-vulnerabilities/

https://www.quora.com/What-are-the-advantages-and-disadvantages-of-CGI-programming

https://www.geeksforgeeks.org/common-gateway-interface-cgi/

728x90
Comments