-
CGI 프로그래밍으로도 하루에 2억 건 이상의 웹 요청 처리가 가능함
- 최근 하드웨어 성능 향상으로 CGI 방식의 단점이 크게 줄어듦
-
Go와 SQLite를 활용한 CGI 프로그램이 16스레드 CPU에서 탁월한 성능을 보여줌
- CGI는 여러 CPU 코어 활용에 특히 적합한 구조 제공
- 현대 기술로 인해 과거의 웹 애플리케이션 개발 방식도 충분히 실용 가능성 보임
CGI의 과거와 현재
- 1990년대 후반, 필자는 CGI로 웹 개발을 시작하였으며 당시에는 NewsPro와 같은 시스템을 사용함
- CGI는 웹 요청마다 새로운 프로세스 실행 및 종료를 반복하여 높은 오버헤드 발생함
- 이런 이유로, 더 효율적인 PHP, FastCGI 등 대체 기술이 개발됨
하드웨어 성능 발전
- 지난 20여 년 동안 컴퓨터 속도와 성능이 급격히 증가함
- 2020년에 필자는 Go와 Rust로 개발된 툴(ripgrep 등)을 활용하며, 프로세스 실행 방식의 실용성을 재발견함
현대적 CGI 방식의 장점
-
Go와 Rust 같이 실행 속도가 빠른 언어로 CGI를 구현하면, 구식 CGI의 단점 대부분이 해소됨
- CGI 프로그램은 요청당 별도 프로세스로 동작함으로써 멀티코어 CPU 활용에 최적화됨
- 예를 들어, 16스레드 환경에서는 2400건 이상의 요청/초 = 2억+ 요청/일 처리 가능성 확인됨
- 대형 서버는 384개 이상의 CPU 스레드 제공 가능
개발 문화에 대한 인사이트
- 현재 Go, Rust와 같은 언어의 도입으로 1990년대 CGI 방식이 다시 의미를 가질 수 있음
- 다만, 여전히 모든 환경에 적합한 방식은 아니며 주류 방식으로 권장하지는 않음
- 중요한 점은 현 시점에서는 CGI가 예전만큼 비효율적인 솔루션이 아님을 실험적으로 증명함
결론
-
현대 하드웨어와 신속한 언어 지원을 통해 CGI 프로그래밍이 과거와는 비교할 수 없는 성능을 보임
- 멀티프로세스의 장점을 최대한 활용할 수 있는 사례로, 웹 개발자에게 흥미로운 시사점을 제공함