개요
Cloudflare Tunnel (cloudflared)은 사용자 컴퓨터에서 Cloudflare의 엣지 네트워크로 아웃바운드 연결을 생성합니다. 이는 리버스 프록시 역할을 하여 외부 요청이 Cloudflare에 도달하면 터널을 통해 로컬 서버로 전달됩니다. TLS는 엣지에서 종료되며 라우터에 인바운드 포트가 열리지 않습니다.
LLM 사용 시 cloudflared을 로컬 Ollama 또는 vLLM 포트에 연결하고 DNS 레코드를 설정하면 llm.example.com과 같은 공개 URL을 통해 모델에 접근할 수 있습니다. 작동은 하지만 Cloudflare의 프록시 계층에서는 스트리밍 추론 트래픽에 영향을 주는 제약 사항들이 존재합니다.
Tokios 역시 아웃바운드 전용 연결 모델을 사용하지만 그 앞단에 LLM에 최적화된 API 게이트웨이가 추가되어 있습니다. SSE 스트리밍이 기본적으로 지원되며 생성 길이에 따른 프록시 타임아웃도 발생하지 않고 사용자별 API 키 기능도 내장되어 있습니다.
비교 표
Cloudflare가 우위를 점하는 부분입니다
- 무료 요금제. Cloudflare Tunnel은 표준 요금제에서 무료로 제공됩니다. 단일 서비스를 공개하려는 개인 개발자에게는 $0의 비용이 발생합니다
- 방대한 엣지 네트워크. Cloudflare는 전 세계에 300개 이상의 데이터 센터를 운영하고 있습니다. 거의 모든 지역에서 엣지까지의 지연 시간이 매우 낮습니다
- DDoS 방어 기능. Cloudflare 네트워크는 기본적으로 대용량 공격을 차단합니다. 사용자의 실제 IP 주소는 절대 노출되지 않습니다
- Custom domains. Point
llm.yourdomain.comat your tunnel. Tokios usesapi.tokios.com— you don’t get a custom hostname. - 어떤 HTTP 서비스에도 적합. 웹 애플리케이션, API, 정적 사이트 등 무엇이 뒤에 있든 상관없습니다. 모델과 함께 웹 대시보드도 공개하려는 경우에도 하나의 터널으로 모두 처리 가능합니다
Tokios가 우위를 점하는 부분입니다
- 네이티브 SSE 스트리밍. 버퍼링이나 헤더 설정이 전혀 필요하지 않습니다. 생성된 토큰들이 클라이언트로 실시간으로 전송되며, Tokios 게이트웨이는 이러한 트래픽 패턴에 최적화되어 있습니다.
- 생성 길이에 따른 프록시 타임아웃 없음. Cloudflare의 약 100–120초 수준의 읽기 타임아웃은 긴 생성 작업을 방해합니다. 일반 하드웨어에서 4,000개의 토큰을 생성하는 대형 모델이라면 이 시간을 쉽게 초과할 수 있습니다. 하지만 Tokios에는 그러한 제한이 전혀 없습니다.
- 내장형 API 키 관리. 각 사용자별로 특정 배포 환경에만 적용되는
sk-tok-…형식의 API 키가 제공됩니다. Cloudflare를 사용할 경우 인증 체계를 직접 구축해야 하는데, Cloudflare Access나 미들웨어, 별도의 API 게이트웨이가 필요합니다. - 프로토콜 변환 기능. 게이트웨이 수준에서 OpenAI 및 Anthropic API와의 호환성을 제공합니다. Cloudflare는 원시 포트 데이터를 그대로 전달합니다.
- 2분 만에 설정 완료. 설치 명령어 한 번만 입력하고 대시보드에서 승인한 뒤 API 키를 생성하면 됩니다. 반면 Cloudflare Tunnel을 사용하려면 DNS 레코드 생성,
cloudflared개의 설정 파일 작성, 그리고 원한다면 Cloudflare Access 정책 설정까지 필요합니다.
SSE 버퍼링 문제에 대하여
Cloudflare 프록시는 기본적으로 응답 본문을 버퍼링합니다. 이는 일반 웹 트래픽에서는 올바른 동작이지만, SSE 스트리밍에서는 문제가 됩니다. 클라이언트는 토큰을 기다리다가 결국 전체 응답이 한꺼번에 전달되거나 타임아웃이 발생하게 됩니다. Cloudflare 문서에 따르면 프록시된 HTTP 트래픽은 원본 서버가Content-Type: text/event-stream 헤더를 보내지 않는 한 버퍼링됩니다. 일부 LLM 백엔드는 이 헤더를 설정하지만 그렇지 않은 경우도 많습니다. 설령 설정되더라도 중간 프록시나 잘못 설정된 백엔드에서 이 헤더가 제거될 수 있습니다. 그 결과 스트리밍 엔드포인트가 작동하는 것처럼 보이지만 실제로는 모든 토큰이 마지막에 한꺼번에 전달되어 스트리밍의 의미가 사라집니다.
Tokios 게이트웨이는 LLM 특성을 인지합니다. 스트리밍 완료 요청을 감지하여 백엔드의 헤더 설정과 무관하게 각 토큰을 즉시 클라이언트에 전달합니다.
타임아웃 문제에 대하여
Cloudflare의 프록시는 엔터프라이즈 플랜이 아닌 경우 약 100–120초 정도의 읽기 시간 제한을 적용합니다. 생성에 오랜 시간이 소요되는 경우, 즉 높은max_tokens 값을 사용하거나 큰 컨텍스트 창을 설정하거나 일반 하드웨어에서 느린 모델을 실행할 때는 이 시간 제한을 초과하는 것이 자연스럽습니다. 이럴 때 클라이언트 측에서는 생성 도중 524 오류가 발생하게 됩니다. 실제로 모델은 계속 작동 중이었으나 프록시가 연결을 강제로 끊어버린 것입니다.
엔터프라이즈 고객이라면 이 타임아웃을 연장할 수 있지만, 원래 무료 기능인데도 비용이 크게 상승하게 됩니다.
Tokios는 요청 처리 시간에 어떠한 제한도 두지 않습니다. 5분이 소요되는 생성 작업도 완벽하게 처리됩니다.
Cloudflare Tunnel을 선택해야 하는 경우
- 이미 Cloudflare 생태계를 사용 중입니다. 도메인의 DNS가 Cloudflare에 등록되어 있고 다른 서비스에도 Cloudflare Access를 활용하고 있으므로 터널 추가는 간단한 작업에 불과합니다.
- LLM과 웹 애플리케이션을 함께 노출해야 할 때. 대시보드, 데모 UI, 모델 API를 모두 하나의 터널과 맞춤형 도메인으로 제공할 수 있습니다.
- 맞춤형 도메인이 필요한 경우.
llm.yourdomain.com은 브랜딩이나 기존 인프라와의 통합 측면에서 매우 중요합니다. - 일반적인 리버스 프록시 기능이 필요할 때. 단순히 LLM API뿐만 아니라 다양한 서비스를 외부에 노출해야 할 경우입니다.
Tokios를 선택해야 하는 경우
- LLM 전용 활용이 목적일 때. 주된 목적은 안정적인 스트리밍 기능을 갖춘 모델 API를 제공하는 것이지 일반적인 웹 서비스 구축이 아닙니다.
- 안정적인 스트리밍이 필수일 때. SSE 토큰이 실시간으로 전달되어야 하며 프록시 타임아웃으로 인해 지연되거나 끊기면 안 됩니다.
- API 키가 필요한 경우. 여러 사용자나 에이전트가 별도의 인증 레이어 구축 없이도 권한이 제한된 자격 증명을 사용해야 할 때입니다.
- 최소한의 설정만 원할 때. 2분만 소요되는 설정 과정이 30분 이상 걸리는 DNS, 설정, Access 정책 구성과 대비됩니다.
터널과 스트리밍 기능
SSE 버퍼링 및 프록시 타임아웃 현상이 어떻게 LLM 스트리밍 기능을 중단시키는지에 대한 심층 분석입니다.
Tokios를 사용해야 하는 경우에 대해 알아보겠습니다.
Tokios가 적합한 선택인지 아닌지를 판단하는 데 도움이 되는 솔직한 가이드입니다.