피드로 돌아가기
layercache: Stop Paying Redis Latency on Every Hot Read
Dev.toDev.to
Backend

Redis Latency 제로 도전, L1-L2-L3 계층형 캐싱 전략

layercache: Stop Paying Redis Latency on Every Hot Read

날다람쥐2026년 4월 9일8intermediate

Context

트래픽 증가 시 Redis 네트워크 왕복 시간이 p95 지표를 악화시키는 병목 지점으로 작용. 수동으로 구현한 인프로세스 메모리 캐시는 일관성 유지와 Cache Stampede 방지 로직 구현에 한계 노출.

Technical Solution

  • Memory, Redis, Disk를 단일 API로 통합 관리하는 L1-L2-L3 계층형 캐시 스택 설계
  • 가장 빠른 레이어부터 순차적으로 응답하고 결과물을 상위 레이어로 자동 전파하는 Backfill 메커니즘 적용
  • 동일 키에 대한 동시 요청 시 단 한 번만 Fetcher를 실행하는 Single-flight 보장으로 Cache Stampede 원천 차단
  • Redis 장애 시 L1 메모리에 적재된 데이터만으로 서비스를 유지하는 Graceful Degradation 전략 구현
  • 페이로드 크기에 따른 성능 저하를 방지하기 위해 대형 객체 전용 L1 유지 및 Redis 레이어 압축 옵션 제공

Impact

  • Warm Hit Latency: Memory + Redis 조합 시 0.005ms 달성
  • Throughput: No Cache(161 req/s) 대비 캐싱 적용 후 17,184 req/s로 약 100배 향상
  • Origin Load: 75개 동시 요청 5회 반복 시 375회 호출을 5회로 감소
  • Redis 지연 영향: Redis에 500ms 지연 발생 시에도 L1 Hot Hit 성능은 0.196ms로 유지

Key Takeaway

분산 환경의 캐시 일관성과 로컬 캐시의 저지연 성능을 동시에 확보하려면 레이어 간의 자동 동기화와 요청 병합(Request Collapsing) 구조가 필수적임.


Redis 장애 시 Cold Miss 데이터는 타임아웃이 발생하므로, 예상 장애 복구 시간보다 L1 TTL을 길게 설정하여 가용성 확보할 것

원문 읽기