CGI 란
서버와 애플리케이션 간에 데이터를 주고받는 이 프로세스 또는 규칙을 공통 게이트웨이 인터페이스(CGI)라고 한다. 동적인 컨텐츠를 생성할 수 있는 프로그램을 갈망하는 사람들의 요구로 인해 만들어진 규약이다.
CGI 작동 방식
프로세스기반으로 동작한다. 즉 매 요청마다 프로세스를 새로 시작하는 방식이다.
이로 인해 요청 수가 많아 지면 서버에 많은 프로세스가 생성되고,요청을 처리 후 종료 된다. 그래서 요청 수가 많아지면 서버에 부담을 준다.
FastCGI 의 탄생
이를 보완하기 위해 FastCGI와 같은 대안이 나왔다.
개선점은 매 요청 프로세스를 생성하지 않고 프로세스를 재사용할 수 있게 했다.
그래서 FastCGI 부터는 프로세스 풀이 생김.
IPC 최적화로 인해 멀티스레드와 멀티프로세스 지원이 가능해짐
결과적으로, FastCGI의 프로세스 풀 개념은 CGI가 겪던 성능 문제를 크게 개선해주었다. 이후의 다른 웹 애플리케이션 인터페이스들이 이러한 개념을 적용하면서 더 발전하게 됨.
참고
- https://jongminlee0.github.io/2020/10/10/cgivsservlet/
- https://www.geeksforgeeks.org/difference-between-java-servlet-and-cgi/
- https://www.javatpoint.com/difference-between-java-servlets-and-cgi
'서버 > 네트워크' 카테고리의 다른 글
비 연결형(connectionless) 서비스를 할 때 역다중화가 어떻게 처리되는가 (1) | 2021.03.30 |
---|---|
역 다중화가 어떻게 작동하는가 (0) | 2021.03.30 |
Multiplexing/demultiplexing (네트워크 4주차) (0) | 2021.03.30 |
network of networks (0) | 2021.03.24 |
페킷스위칭과 서킷스위칭의 비교 (0) | 2021.03.24 |