Git HTTP 서버가 CGI 방식을 사용하여 확장성 문제를 겪고 있다는 점을 지적함
CGI 방식은 매 요청마다 새로운 프로세스를 생성하여 Forkbomb 공격에 취약하다는 문제점을 제기함
개발자는 git-http-backend의 대안으로 지속적이고 동시성을 지원하는 HTTP 서버를 제안함
CGI(Common Gateway Interface) 방식은 웹 서버가 각 요청마다 새로운 프로세스를 생성하는 방식으로, Fork/Exec 오버헤드가 발생한다. 구체적으로, 환경 변수와 표준 입력을 통해 요청 정보를 전달받아 표준 출력으로 결과를 반환한다. 따라서, 대규모 트래픽 발생 시 서버 자원 고갈로 인한 서비스 거부 공격(DoS)에 취약하며, 서버 확장성을 저해한다.
git-http-backend는 CGI 핸들러를 사용하여 Git repository를 HTTP로 제공하는 방식이다. 반면, 이 방식은 매 클론 요청마다 새로운 프로세스를 생성하여 CPU 사용량 급증을 유발한다. 따라서, 대량의 클론 요청이 발생하는 경우 서버가 과부하되어 가용성 저하를 초래할 수 있으며, 특히 무분별한 클론 시도가 있을 경우 더욱 심각해진다.
CGI 방식의 한계를 극복하기 위해, 지속적으로 실행되며 동시성을 지원하는 HTTP 서버를 구축해야 한다. 구체적으로, 멀티 스레딩 또는 비동기 I/O를 활용하여 여러 요청을 효율적으로 처리해야 한다. 따라서, Nginx 또는 Node.js와 같은 기술을 사용하여 git-http-backend를 대체하는 방안을 고려해 볼 수 있으며, 서버 성능과 안정성을 동시에 확보할 수 있다.