피드로 돌아가기
Dev.toBackend
원문 읽기
Local Mirror 기반 Subscription 최적화로 WebSocket 연결 안정성 확보
Dynamic Forex Pair Subscription in Python: Stop Spamming Your WebSocket Data Feed
AI 요약
Context
전략 변경에 따른 빈번한 구독 요청이 서버 Rate Limit을 유발하여 연결이 끊기는 문제 발생. WebSocket을 REST API처럼 Stateless하게 처리하며 발생하는 중복 요청이 시스템 가용성을 저해하는 병목 지점으로 작용함.
Technical Solution
- Client-side Subscription Mirror 도입을 통한 현재 구독 상태의 Local State 관리
- 요청 데이터와 Local State를 비교하여 실제 변경분만 전송하는 Diff 기반 필터링 로직 구현
- redundant request 제거를 위해
safe_subscribe및safe_unsubscribe래퍼 함수 적용 - 단일 Round trip으로 다수 심볼을 처리하는 Command Batching 설계를 통한 네트워크 오버헤드 감소
- I/O 병목 방지를 위해
on_message콜백과 데이터 처리 로직을 분리한 Asynchronous 읽기 구조 채택 - Database 쓰기 부하 경감을 위해 500ms 단위의 Write-behind 캐싱 전략 적용
실천 포인트
1. WebSocket 요청 전 Local Mirror를 통해 중복 전송 여부를 검증하고 있는가?
2. 개별 요청 대신 Diff를 계산하여 Batch 단위로 메시지를 전송하는가?
3. I/O 스레드와 비즈니스 로직 스레드를 분리하여 GIL 및 Blocking 현상을 방지했는가?
4. 데이터베이스 쓰기 주기를 설정하여 TPS 부하를 제어하고 있는가?