초창기에 정적인 웹사이트는 클라이언트와 웹서버만으로 구성되어 있었다.
이때에는 웹사이트는 그저 서버에서 정적인 페이지를 출력하면 되었기 때문에 로직처리나 데이터베이스 열람등이 불가능했다. 하지만 동적페이지를 만들기 시작하면서 이러한 작업들이 필요해졌고 이를 해결할 기술이 필요했다...
CGI란 위에 쓰여있는 문제를 해결하기위한 기술이다.
실제 CGI가 작동하는 방식은 아래와 같은데,
클라이언트가 html문서 안에 있는 코드로부터 요청을 웹서버에 보낸다
해당 요청의 주소가 CGI프로그램과 대응되는지 확인한다
대응된다면 해당 코드를 해석해 환경변수와 표준입력의 형태로 CGI 프로그램에 넘겨준뒤 CGI 프로그램을 실행한다
CGI 프로그램에서 나온 출력을 웹서버에서 그대로 응답으로 보내준다
이렇게 기존의 웹서버가 가지고 있던 문제를 해결한 CGI는 널리 쓰이게 되었다 하지만...
CGI는 위 처럼 훌륭한 확장성을 가지고 있다. 하지만 치명적인 문제점이 있는데 바로 프로그램에 요청이 올때마다 새로운 프로세스를 생성한다는 것이다. 최근에 웹사이트들은 동적인 부분이 많기에 이러한 문제는 시간이 지날수록 부각되었고, 사람들은 이에 대한 개선책을 만들어낸다.
위에 문제점을 해결하기위해 Fast CGI는 프로그램을 실행할때 매우 큰 프로세스를 하나 만들고 그 프로세스로 모든 요청을 처리한다.