C언어로 만든 현대적 상용 웹앱

원제: A Modern Web App in C

왜 중요한가

AI 에이전트 공급망 공격이 빈번해지는 시대에, 의존성 최소화 전략이 상용 서비스에서도 실현 가능함을 보여준 사례다.

개발자 Corey Prophitt가 2026년 CGI 방식으로 C언어 기반 상용 웹 서비스 'marketyour.games'를 출시했다. 스택은 OpenBSD, C, httpd, SQLite로 구성된 BCHS이며, 외부 의존성은 libcurl, libsodium, libcjson 단 3개다. 빌드 결과물은 단일 바이너리 하나로, 클린 빌드에 수 초, 재빌드에 0.5초 미만이 소요된다.

Prophitt는 사용자 계정, 콘텐츠 검색 대시보드, 폴더 관리, Stripe 결제, Postmark 트랜잭션 이메일 등 현대적 기능을 갖춘 서비스를 1994년식 CGI 방식으로 구현했다고 밝혔다. 프레임워크도, 템플릿 엔진도, 별도의 DB 서버도 없다. C 프로그램이 CGI 환경 변수를 직접 읽고 HTML을 출력하며, SQLite C API로 데이터베이스 파일을 여는 구조다.

정적 자산은 별도로 서빙하지 않고 모든 트래픽을 CGI 바이너리 하나로 라우팅한다. 이미지 등 에셋은 실행 파일에 컴파일해 메모리에서 직접 제공한다. 배포는 바이너리 파일 교체로 끝나며 서버 재시작이나 다운타임이 없다. 새 요청은 즉시 새 바이너리를 실행한다.

OpenBSD의 pledge·unveil 메커니즘으로 C 프로그램을 샌드박싱하고, httpd는 기본적으로 chroot 환경에서 CGI 바이너리를 실행해 보안을 강화했다. 공급망 리스크 측면에서도 패키지 저장소 의존성이 거의 없어 최근 증가하는 오픈소스 공급망 공격에 덜 노출된다고 그는 강조했다.

Prophitt는 CGI가 nginx 같은 웹 서버와 애플리케이션 서버를 이중으로 운용하는 현대적 아키텍처보다 역할 구분이 명확하다고 평가했다. CGI 규격은 2004년 이후 변경된 적이 없으며, HTTP 기초만 이해하면 언어·플랫폼에 무관하게 적용 가능하다는 점도 장점으로 꼽았다.

출처

prophitt.me — 원문 읽기 →