피드로 돌아가기
How I Built a Real-Time Precious Metals Price Feed for 30,000 Concurrent Users in Laravel
Dev.toDev.to
Backend

Laravel Reverb와 Redis 기반 3만 동시 접속자 실시간 시세 피드 구현

How I Built a Real-Time Precious Metals Price Feed for 30,000 Concurrent Users in Laravel

Rana Subhan2026년 5월 23일7intermediate

Context

금속 시세 변동을 sub-second latency로 3만 명의 사용자에게 전송해야 하는 요구사항 발생. 기존 REST API Polling 방식의 과도한 DB 부하와 네트워크 오버헤드로 인한 시스템 붕괴 위험을 해결해야 함.

Technical Solution

  • ReactPHP 기반 non-blocking event loop를 사용하는 Laravel Reverb 도입을 통한 대규모 WebSocket 연결 유지
  • DB를 Hot Path에서 완전히 제거하고 Redis Cache(5s TTL)를 통한 API 응답 처리로 Read 부하 0 구현
  • broadcastWhen() 게이트 적용으로 가격 변동폭 0.001% 미만 데이터 필터링을 통한 Queue 메시지 80% 절감
  • Redis Pub/Sub 백본과 Laravel Horizon을 결합한 비동기 브로드캐스팅 파이프라인 구축
  • MySQL의 SELECT+UPDATE 구조를 단일 upsert 쿼리로 변경하여 OHLCV 캔들 데이터 저장 최적화
  • 페이로드 크기 최소화를 통해 3만 배수로 증폭되는 네트워크 대역폭 낭비 방지

1. WebSocket 도입 시 단순 전송이 아닌 Payload 최소화 전략 수립 여부 확인

2. 데이터 변경 빈도가 높을 경우 broadcastWhen과 같은 조건부 전송 로직 적용 검토

3. 읽기 요청 폭주가 예상되는 경로에 Redis Cache 레이어 배치 및 DB 의존성 제거

4. 쓰기 작업 시 SELECT 후 UPDATE 대신 단일 Upsert 쿼리 사용 고려

원문 읽기