피드로 돌아가기
I got tired of wiring the same caching stack every project, so I built LayerCache
Dev.toDev.to
Backend

LayerCache 도입으로 L1/L2 계층화 및 Stampede 방지로 Origin 부하 98% 감소

I got tired of wiring the same caching stack every project, so I built LayerCache

날다람쥐2026년 4월 18일7intermediate

Context

단일 L1 Memory Cache의 데이터 불일치 문제와 Redis 도입 후 발생하는 Round-trip 지연 및 Cache Stampede 현상이 병목 지점으로 작용. 다층 캐시 구조 설계 시 발생하는 복잡한 동기화 로직과 장애 전파 차단 설계의 반복적 구현 비용 발생.

Technical Solution

  • Memory → Redis → Disk 순의 Multi-layer Cache Stack 구조 설계를 통한 데이터 접근 경로 최적화
  • L1 Cold 상태에서 L2 Hit 시 상위 계층으로 데이터를 자동 Backfill 하는 메커니즘 구현
  • Promise 공유 기반의 Single-flight 로직을 적용하여 동시 요청 시 Fetcher 중복 실행을 원천 차단
  • Redis pub/sub 기반의 Invalidation Bus를 통한 분산 환경 내 L1 Cache 일관성 유지
  • Graceful Degradation 모드 설계를 통해 Redis 장애 시 Fetcher로 직접 연결하는 Circuit Breaking 전략 채택
  • RedisSingleFlightCoordinator를 통한 다중 인스턴스 간 분산 락 기반의 중복 fetch 방지

- 다중 인스턴스 환경에서 L1 Cache 사용 시 Redis pub/sub 기반 무효화 전략 검토 - DB 부하가 높은 Key에 대해 Single-flight 패턴을 적용하여 Cache Stampede 방어 - 외부 캐시 저장소 장애가 서비스 전체 장애로 이어지지 않도록 Graceful Degradation 경로 설정 - 데이터 변경 빈도에 따라 L1/L2 TTL을 차등 설정하여 메모리 효율과 정합성 균형 최적화

원문 읽기