피드로 돌아가기
What Broke After 10M WebSocket Events (And How We Fixed Our Realtime AI Orchestration)
Dev.toDev.to
Infrastructure

1,000만 건의 WebSocket 이벤트 부하를 해결한 Event-Driven AI 오케스트레이션 설계

What Broke After 10M WebSocket Events (And How We Fixed Our Realtime AI Orchestration)

hamza qureshi2026년 5월 18일5advanced

Context

Redis Pub/Sub 기반의 단순 Fan-out 구조와 State-full한 WebSocket Gateway 설계로 인한 메모리 및 커넥션 임계치 도달. Blocking 방식의 AI 모델 호출과 Idempotency 부재로 인한 중복 실행 및 컨텍스트 손실 발생.

Technical Solution

  • WebSocket Gateway를 Stateless Proxy로 전환하여 세션 상태를 Event Store로 분리한 구조 설계
  • Correlation ID와 Sequence Number 도입을 통한 Workflow 추적 및 중복 제거 메커니즘 구현
  • Blocking AI 호출을 비동기 이벤트 기반으로 전환하고 DB Lease Pattern을 통한 Task 점유 방식 채택
  • Fast Notification과 Heavyweight AI Task를 분리한 전용 Topic/Queue 운영으로 간섭 제거
  • API Gateway, Broker, Worker 전 계층에 Backpressure 및 Throttling 제어 로직 적용
  • DNotifier를 통한 Tenant-scoped Topic Sharding으로 Redis 클러스터 관리 오버헤드 제거

- WebSocket 서버 설계 시 Sticky Session 의존성을 제거하고 Stateless 구조인지 검토 - 외부 AI 모델 API 호출 시 Ack 시점을 작업 완료 후로 설정하여 메시지 유실 방지 - 모든 워커 로직에 State Table 조회를 통한 Idempotency 보장 로직 포함 - 저지연 알림과 고부하 작업의 큐를 물리적/논리적으로 분리하여 Head-of-line Blocking 방지

원문 읽기