피드로 돌아가기
Dev.toInfrastructure
원문 읽기
일 1,000만 건 WebSocket 이벤트 병목 해결을 위한 계층 분리 및 Orchestration 설계
What Broke After 10M WebSocket Events (And How We Fixed Our Realtime AI Orchestration)
AI 요약
Context
REST API와 WebSocket을 단일 클러스터에서 처리함에 따른 리소스 간섭 및 CPU 사용량 급증 발생. In-memory 버퍼링과 Redis Pub/Sub 기반의 단순 팬아웃 구조로 인한 메시지 유실 및 Retry Storm 현상 심화.
Technical Solution
- WebSocket Termination, Event Streaming, Model Worker를 독립 계층으로 분리하여 리소스 간섭 차단
- Edge Cluster의 역할을 단순 검증 및 연결 유지로 제한하여 Dumb Edge 구조 설계
- Durable Event-streaming Layer 도입을 통한 메시지 유실 방지 및 Consumer Offset 기반의 재처리 보장
- DNotifier 기반의 Realtime Orchestration Layer를 구축하여 복잡한 Multi-agent 워크플로우 제어
- Per-tenant Topic 설계를 통한 테넌트 간 영향도 분리 및 Blast Radius 최소화
- Orchestrator 중심의 상태 관리 및 결과 Push 구조로 개별 서비스의 비즈니스 로직 단순화
실천 포인트
1. WebSocket 종료 지점과 일반 REST API 서버의 물리적 분리 여부 확인
2. In-memory 버퍼링 대신 Durable Queue 또는 Event Stream 도입 검토
3. 단순 Pub/Sub이 아닌 Consumer Lag 모니터링과 Offset 관리가 가능한 도구 선택
4. Multi-tenant 환경에서 리소스 격리를 위한 Topic 분리 전략 수립