프로젝트 배경
1) 문제점 - 채널 1.8M rows 환경에서 라이브 메인 응답이 채널당 1+N 쿼리 발생 → 트래픽 급증 시 DB 부하 심각 - 캐시 만료 직후 동시 요청이 모두 DB로 쏟아지는 thundering herd - 대시보드가 4개 endpoint 별도 호출 + 7쿼리 실시간 집계로 응답 느림 - 월배치 명예의 전당 집계가 애플리케이션 N회 쿼리로 처리 2) 프로젝트 목표 - 라이브 메인 응답 쿼
프로젝트 성과
DB 쿼리 횟수 96% 감소
라이브 메인 51쿼리 → 2쿼리, cache hit 시 Redis HMGET 1회. 50채널 기준.
대시보드 메트릭 7쿼리 → 2쿼리 (71% 감소)
MemberMetricsTotal 단일 집계 테이블 + Subscription count 1쿼리
API 호출 4회 → 1회 (BFF 통합)
metrics·level·signatures·tendency 4 endpoint → /dashboard/ 통합 응답
코드 -444 라인 (대시보드 + 라우터 누적)
캐시 분기·forceRefresh 옵션 등 불필요한 분기 제거
thundering herd 차단
SET NX PX 8000ms single-writer + Lua own-lock 해제로 캐시 만료 시 DB 부하 분산
핵심 기능
진행 단계
측정·프로파일링
2025.11.
N+1 발생 지점 확인, 쿼리 횟수 51개 측정
프로젝트 상세
라이브스트리밍 플랫폼의 Node.js 백엔드 작업을 6.3개월간 376 커밋으로 진행했습니다. 모든 작업을 측정 가능한 단위로 남기는 편이라, PR 본문·README 에 before/after 수치를 항상 명시했습니다. 주요 성과: 1) 라이브 스트림 목록 N+1 → 캐시 (3-phase 점진 개선) - v1: N+1 제거 — whereIn batch + Map 으로 per-channel O(N)







