피드로 돌아가기
Running Caddy on Cloudflare Workers via WebAssembly
Dev.toDev.to
Infrastructure

Caddy를 WASM으로 컴파일하여 Cloudflare Workers 기반 Serverless Edge Proxy 구현

Running Caddy on Cloudflare Workers via WebAssembly

Roman Bondarenko2026년 5월 2일6advanced

Context

컨테이너 기반 인프라의 과도한 설정 복잡성과 저부하 서비스에서의 유휴 비용 발생 문제 분석. 환경별로 상이한 라우팅 설정과 인프라 관리 체계로 인한 운영 오버헤드 해결 필요성 대두.

Technical Solution

  • Go 기반 Caddy 서버를 WebAssembly(WASM)로 컴파일하여 V8 Isolate 런타임에서 직접 실행하는 구조 설계
  • OS 커널 및 네트워크 네임스페이스 의존성을 제거하여 Cold Start 시간을 5ms 미만으로 단축
  • 표준 TCP Listener를 제거하고 Cloudflare fetch API와 WASM 선형 메모리를 연결하는 JS Shim 레이어 도입
  • FFI(Foreign Function Interface)를 통한 요청 데이터 직렬화 및 Go *http.Request 객체 역직렬화 처리
  • Caddy의 reverse_proxy 모듈을 Cloudflare fetch 메커니즘으로 라우팅하도록 내부 로직 수정
  • 단일 Caddyfile을 로컬, VPS, Edge 환경에서 공통으로 사용하는 Universal Configuration 체계 구축

1. V8 Isolate 기반 런타임 적용 시 메모리 제한(128MB)을 고려한 Streaming 아키텍처 검토

2. TCP 소켓 직접 제어가 불가능한 환경에서의 API 기반 네트워크 인터페이스 전환 가능성 분석

3. 환경별 설정 파일 분리가 아닌 단일 설정 소스(Single Source of Truth) 기반의 배포 파이프라인 설계

4. WASI-HTTP 및 Component Model 도입을 통한 제로 카피 효율성 및 모듈형 바이너리 배포 가능성 추적

원문 읽기