CGI-bin으로 하루 2억 건 요청 처리하기

3 weeks ago 8

  • 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 프로그래밍이 과거와는 비교할 수 없는 성능을 보임
  • 멀티프로세스의 장점을 최대한 활용할 수 있는 사례로, 웹 개발자에게 흥미로운 시사점을 제공함

Read Entire Article