피드로 돌아가기
Dev.toInfrastructure
원문 읽기
1,000만 건의 WebSocket 이벤트 부하를 해결한 Event-Driven AI 오케스트레이션 설계
What Broke After 10M WebSocket Events (And How We Fixed Our Realtime AI Orchestration)
AI 요약
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 방지