- Static VS Dynamic Page 과 Web Server와 (Web) Application Server 에서 언급한 Static page와 Web Server의 한계(개인화된 페이지 제공 어려움, DB 사용 어려움 등)이 해결이 필요했음
이를 해결하기 위해 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 Specification 예시
- 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
'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 |