피드로 돌아가기
Dev.toBackend
원문 읽기
단일 WebSocket 연결 및 독립 Heartbeat 모니터링을 통한 금융 데이터 파이프라인 안정화
Fixing WebSocket Silent Disconnects for Financial Market Data
AI 요약
Context
심볼별 개별 WebSocket 연결 방식의 TCP Handshake 오버헤드로 인한 Reconnection Storm 발생. 네트워크 지터 발생 시 연결 상태는 유지되나 데이터 수신이 중단되는 False-Alive Socket 현상으로 인한 데이터 무결성 저해.
Technical Solution
- 단일 Persistent Connection 기반의 Dynamic Subscription 구조 설계를 통한 연결 생성/파괴 비용 최소화
- 데이터 처리 로직과 분리된 독립 Daemon Thread 기반 Heartbeat Monitoring 구현으로 블로킹 현상 방지
- 클라이언트 사이드 Deduplication 로직 적용을 통한 중복 Subscription 요청 및 서버 부하 차단
- 로컬 State Management(Set 구조)를 도입하여 서버와 클라이언트 간 Subscription 상태 동기화 유지
- 네트워크 단절 감지를 위한 Time Gap 기반 Timeout Detection 로직 구현으로 Silent Disconnect 즉각 대응
- 전송 전 빈 리스트 및 유효하지 않은 심볼 코드를 필터링하는 Pre-validation 단계 추가
실천 포인트
- WebSocket 연결 시 연결 상태(Connected)만 믿지 말고 애플리케이션 레벨의 Heartbeat Timeout을 설정했는가? - 빈번한 구독 변경이 필요한 경우 개별 연결 대신 단일 연결 내 Dynamic Subscription 패턴을 고려했는가? - 데이터 수신 콜백 함수가 무거워 Heartbeat 체크가 지연되지 않도록 별도 스레드로 분리했는가? - 서버 부하 및 상태 불일치 방지를 위해 클라이언트 단에서 요청 중복 제거 및 유효성 검증을 수행하는가?