티스토리 뷰

ETC

[용어] CGI 와 FastCGI

주인장 진빼이

1. CGI (Common Gateway Interface)

 

과거 웹은 정적 웹사이트만 존재했었다. 쉽게 말해 웹 서버만 존재한다는 의미로 아파치 서버만 존재했다고 볼 수 있다.

정적 웹사이트는 단순히 *.html만 표시하는 사이트였다.

 

하지만 사용자가 증가하면서 여러 상황에 알맞는 데이터들을 보여주어야했으며 결국  동적 페이지가 개발되었다.

 

동적 페이지는 상황에 알맞게 데이터를 계산하여 변하는 ui를 표현하는 페이지를 의미한다.

대표적으로 php에서 변수를 선언 및 데이터를 가공하여 표현하는 사이트임을 의미한다.

 

사용자가 브라우저를 통해 요청을 보내고 서버는 이 요청을 처리하게 되는데

이때 처리하는 프로세스가 존재하는데 이 프로세스가 CGI라는 체계를 통해 만들어진 것이다.

또는 이 프로그램을 CGI라고도 간략히 표현할 수 있다.

 

요청(request)이 생길 때 마다 child process를 새로 만들어 요청을 처리하고 다시 삭제하는 방식으로 이루어진다.

쉽게 말해 멀티 프로세스 방식을 통해 처리하여 불필요한 프로세스 생성 비용이 존재하여

사용자가 몰리는 경우 과부하가 발생하여 서버에 문제가 발생할 수 밖에 없다.

 

PHP 같은 경우 5.3 버전 이하는 CGI를 사용하여 요청을 처리하고 있다.

 

2. FastCGI (Fast Common Gateway Interface)

CGI의 문제점을 해결한 체계로서 요청(request)을 보내면 웹 서버는 CGI와 다르게

하나의 큰 프로세스가 담당하여 모든 요청을 처리하는 것을 의미한다. 자식 프로세스를 생성하지 않는 것이 주요 특징이다.

자바에서는 서블릿(Servlet) 이라는 체계를 통해 대신하여 사용하기도 한다. (서블릿은 멀티스레드 방식으로 처리를 담당)

 

가장 큰 장점으로는 CGI와 다르게 요청이 많아도 하나의 큰 프로세스가 계속 처리하기 child process 생성 비용이 없어 처리가 빠르다.

PHP 7.0 이상 버전에서는 FastCGI를 기본으로 채택하여 사용한다.

 

 

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함