피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Durable Objects 기반 Edge State 관리로 VPS 없는 Realtime Chat 구현
How to Build a Realtime Chat App on Cloudflare Workers (Without Managing a Socket Fleet)
AI 요약
Context
Cloudflare Workers의 Stateless 특성으로 인한 WebSocket 상태 유지 및 메시지 동기화의 한계 발생. 기존 VPS 기반 Socket Fleet 운용 방식은 단일 리전 의존성과 높은 Ops 비용을 초래함.
Technical Solution
- Room당 하나의 Durable Object를 할당하여 Edge단에서 WebSocket 연결을 유지하는 Coordination Layer 구축
- WebSocketPair를 통한 서버-클라이언트 간 연결 수립 및 RoomDurableObject 내 Set 구조를 활용한 Client 관리
- Durable Object가 Pub/Sub 레이어 역할을 수행하여 수신 메시지를 연결된 모든 클라이언트에 Fan-out 하는 구조 설계
- D1(Edge SQLite) 연동을 통한 메시지 영속성 확보로 Worker 재시작 시에도 대화 이력 유지
- JWT 기반 인증 및 Room Membership 검증 로직을 Worker 진입점에 배치하여 보안성 강화
- WebSocket 차단 환경 대응을 위한 SSE 및 Polling Fallback 메커니즘 적용
실천 포인트
- 실시간 상태 공유가 필요한 서비스 설계 시 Durable Object를 통한 State Coordination 검토 - WebSocket 연결 유지 비용 절감을 위해 Serverless Edge Runtime 활용 가능성 평가 - 클라이언트 재접속 전략 수립 시 Exponential Backoff 및 Cursor 기반 History Pagination 구현 여부 확인 - 네트워크 제약 환경을 고려한 Transport Fallback(SSE, Polling) 전략 수립