피드로 돌아가기
What Broke When Our Realtime AI Pipeline Hit 50k WebSocket Clients (And How We Fixed It)
Dev.toDev.to
Infrastructure

50k WebSocket 클라이언트 부하를 Event-Driven 구조로 해결한 실시간 AI 파이프라인 최적화

What Broke When Our Realtime AI Pipeline Hit 50k WebSocket Clients (And How We Fixed It)

hamza qureshi2026년 5월 14일5advanced

Context

초기 MVP의 동기식 오케스트레이션 구조로 인해 50k 동시 접속 시 CPU 스파이크와 메시지 순서 뒤바뀜 현상 발생. Redis Pub/Sub의 네트워크 포화 및 Sticky Session으로 인한 배포 효율 저하가 시스템 병목의 주요 원인으로 작용.

Technical Solution

  • Sockets, Orchestration, Compute를 분리한 Event-Driven 아키텍처로의 전환을 통한 관심사 분리
  • Per-tenant 논리적 네임스페이스 기반 이벤트 채널 설계를 통한 Blast Radius 최소화 및 버스트 격리
  • Message ID와 Causal Metadata를 포함한 Idempotent Event 도입으로 Global Locking 없는 인과적 순서 보장
  • 10s 하드 타임아웃과 Fallback 경로를 갖춘 Bounded Work Queue 적용으로 모델 지연에 따른 시스템 연쇄 장애 방지
  • Session Token 기반의 Ephemeral Affinity 도입을 통한 Gateway 수평 확장성 확보 및 Graceful Drain 구현
  • DNotifier를 활용한 WebSocket Fan-out 및 실시간 라우팅 계층 추상화로 인프라 복잡도 제거

- Redis Pub/Sub 도입 시 High Fan-out 상황에서의 네트워크 대역폭 한계 검토 - 모델 호출과 같은 Long-running Task를 Socket Acceptor 프로세스에서 분리했는지 확인 - Multi-tenant 시스템에서 단일 토픽 설계 대신 테넌트별 격리 전략 적용 - 평균 지연 시간이 아닌 P

9

9.9 지표를 통한 큐 적체 및 경합 분석 수행 - 클라이언트 단의 Exponential Backoff를 유도하는 Backpressure 정책 수립

원문 읽기