cloudflare

Cloudflare Workers와 Containers, 이제 인바운드 TCP 연결 및 gRPC 지원 (새 탭에서 열림)

Cloudflare는 Workers에 인바운드 TCP 소켓을 직접 처리하는 connect(socket) 기능과 컨테이너 기반의 양방향 gRPC 지원을 추가했습니다. 이를 통해 클라이언트의 TCP 연결을 Worker, Durable Object, Container로 전달하고, 다양한 언어로 작성된 gRPC 서버를 Cloudflare 네트워크에서 실행할 수 있습니다. 특히 저지연·양방향 통신이 중요한 음성 AI와 실시간 애플리케이션을 클라이언트 가까이에서 처리하는 것이 목표입니다.

Workers의 인바운드 TCP 지원

  • 기존 Workers는 주로 HTTP 요청을 처리하거나 아웃바운드 TCP 연결을 생성하는 방식이었지만, 이제 connect(socket) 핸들러로 들어오는 TCP 연결을 받을 수 있습니다.
  • 소켓은 readablewritable 스트림으로 제공되며, 다음과 같이 데이터를 읽고 쓸 수 있습니다.
    • socket.writable.getWriter()로 데이터 전송
    • socket.readable.pipeTo(...)로 다른 소켓에 데이터 전달
  • TCP 연결을 Worker에서 직접 종료하거나, 다른 Worker·Durable Object·Container로 라우팅할 수 있습니다.

Durable Objects와 Container로 소켓 전달

  • Worker는 Durable Object의 connect() 메서드를 호출해 인바운드 소켓을 특정 객체로 전달할 수 있습니다.
  • Durable Object는 양방향 스트림을 연결해 클라이언트와 서버 사이의 바이트를 그대로 중계할 수 있습니다.
  • Durable Object에서 Container의 TCP 포트에 연결한 뒤 다음과 같이 양방향 파이프를 구성합니다.
    • 클라이언트 → Container
    • Container → 클라이언트
  • Container에서는 Python, Go 등 원하는 언어와 TCP 서버 구현을 사용할 수 있습니다.
  • 따라서 특정 RPC 프레임워크에 종속되지 않고, TCP를 사용하는 어떤 프로토콜이나 프로그램도 Cloudflare에서 처리할 수 있습니다.

Spectrum을 이용한 TCP 진입점

  • Cloudflare Spectrum은 HTTP가 아닌 TCP·UDP 트래픽을 Cloudflare 네트워크로 받아들이는 인그레스 프록시입니다.
  • 새로운 Spectrum 애플리케이션 유형에서는 유입된 TCP 연결을 지정한 Worker의 connect(socket) 핸들러로 전달할 수 있습니다.
  • 결과적으로 클라이언트부터 Cloudflare Worker, Durable Object, Container 내부 서버까지 전체 네트워크 경로를 제어할 수 있습니다.

Cloudflare Containers의 양방향 gRPC

  • gRPC는 HTTP/2와 TCP를 기반으로 하는 RPC 프레임워크로, 모바일 앱·분산 시스템·음성 AI 서비스에서 널리 사용됩니다.
  • 실시간 음성 애플리케이션은 단일 연결에서 클라이언트와 서버가 모두 지속적으로 메시지를 보내야 하므로 양방향 스트리밍이 중요합니다.
  • Cloudflare의 새 기능을 사용하면 다음과 같은 gRPC 서버를 Container에 배포할 수 있습니다.
    • 모든 언어로 작성된 gRPC 서버
    • 클라이언트와 서버 간 full-duplex 양방향 스트리밍
    • 지속적인 단일 TCP 연결
  • 예시 gRPC 서버는 연결 직후 connected 메시지를 보내고, 클라이언트 메시지마다 echo 응답을 보내며, 연결 종료 시 goodbye 메시지를 전송합니다.
  • Cloudflare는 330개 이상의 위치에서 요청을 처리하므로, 서버를 사용자와 가까운 위치에서 실행해 지연 시간을 줄일 수 있습니다.

Workers 기반 gRPC API

  • Workers에서는 gRPC 서버를 직접 구현하거나 기존 gRPC 서버를 호출할 수 있습니다.
  • 개발자는 gRPC-web 방식으로 코드를 작성하고, Cloudflare가 요청과 응답을 실제 gRPC 형식으로 변환합니다.
  • 지원 범위에는 다음이 포함됩니다.
    • 단일 요청·응답 방식인 unary RPC
    • 서버가 여러 메시지를 보내는 server-streaming RPC
    • Container로 소켓을 직접 전달하는 양방향 스트리밍 gRPC
  • 이 기능을 활용하면 기존 gRPC 생태계를 유지하면서 Cloudflare의 글로벌 네트워크와 Workers의 라우팅 기능을 함께 사용할 수 있습니다.

음성 AI와 실시간 서비스에 대한 의미

  • AI 음성 비서, 실시간 받아쓰기, 음성 기반 에이전트는 모델·클라이언트·지원 서비스 사이의 낮은 지연 시간이 필수적입니다.
  • WebSockets와 Durable Objects도 적합하지만, 이미 gRPC를 사용하는 기존 시스템은 새 인프라로 전면 재작성할 필요가 줄어듭니다.
  • Cloudflare는 TCP 연결을 직접 전달하므로 음성 데이터나 스트리밍 추론 요청처럼 연결을 오래 유지하는 서비스에 적합합니다.
  • 해당 기능은 현재 프라이빗 베타로 제공되며, 사용을 위해 별도 신청이 필요합니다.

실시간 음성 AI나 기존 gRPC 시스템을 Cloudflare에 배포하려는 경우, connect(socket)을 이용해 Worker–Durable Object–Container 간 양방향 스트림을 구성하는 방식이 유용합니다. 다만 현재는 프라이빗 베타이므로 실제 도입 전 지원 프로토콜, 연결 수명, 지연 시간, 비용 및 운영 제한을 확인하는 것이 좋습니다.