이를 해결하기 위해 CGI(Common Gatgeway Interface)라는 규약이 제안됨

CGI(Common Gateway Interface)

  • 유저의 요청을 처리하기위해 Web server가 외부 app에 어떻게 data를 전달할 것인가를 명시한 interface
    • CGI Specification 예시
      • request information(request type, remote IP address)이 환경변수로 어떻게 전달될 것인가
      • request body가 어떻게 standard input으로 전달될 것인가
      • response가 어떻게 standard output으로 전달될 것인가
    • 웹 서버가 프로그램을 CGI로 실행하도록 해, 웹 서버가 request를 받으면 환경 변수를 설정하고 standard input & output을 통해 parameter를 모아 프로그램이 어디에서 무엇을 찾아야 하는지 알 수 있게 함
  • CGI Scripts(Program)
    • CGI Specification에 따라 작동하는 Server Software에 의해 호출되는 웹페이지(HTML) 생성 프로그램
  • 위 그림만 보면 CGI가 App Server의 역할을 하는 것 같은데 맞음
  • Web Server는 HTTP Request가 올 때마다 새로운 CGI Process를 실행하고, 응답이 끝나면 CGI Process를 파괴함
    • 이렇게 process를 실행하고 종료하는게 CPU와 메모리를 많이 사용하기에, 많은 수의 HTTP 요청을 처리하기에는 적절하지 않음
  • CGI Process의 생성과 종료 시 발생하는 오버헤드를 줄이기 위해서 여러 방법 중 하나로, JAVA EE는 Web Container에서 JAVA Servlet을 실행하여 Process를 Thread로 대체함
  • Web Frameworks를 사용하면, CGI Script를 대체할 수 있음

출처

Common Gateway Interface - Wikipedia

What is Common Gateway Interface (CGI)?

CGI와 웹서버

'Web' 카테고리의 다른 글

Web Framework란?  (0) 2021.08.02
Static VS Dynamic Page  (0) 2021.07.30
Web Server와 (Web) Application Server의 정의  (0) 2021.07.29
mobile에서 pc의 localhost에 sw 설치, 코딩 없이 접근하기  (0) 2021.07.14

+ Recent posts