토픽 189 / 192·시스템 설계 및 아키텍처 패턴
Cache Stampede 방지 (캐시 스탬피드)
Cache Stampede 방지 (캐시 스탬피드)
캐시 만료 시점에 다수의 요청이 동시에 캐시 미스를 경험하고, 모두가 DB/원본에 요청을 보내 시스템 과부하를 유발하는 현상(Thundering Herd)과 이를 방지하는 기법
특징: 동시 캐시 미스, 원본 과부하, 연쇄 장애 가능
발생 시나리오: 인기 데이터 캐시 만료 → 수백 요청 동시 캐시 미스 → 모든 요청이 DB에 동일 쿼리 → DB 과부하/장애
방지 기법
- •Lock(Mutex): 첫 요청만 DB 접근, 나머지 대기 후 캐시 사용 (분산 락 - Redis SETNX)
- •Probabilistic Early Expiration: 만료 전 확률적 갱신, TTL 만료 전 delta/beta 확률
- •Background Refresh: 만료 전 백그라운드 갱신, Stale-While-Revalidate
- •Request Coalescing: 동일 키 요청을 묶어 단일 DB 호출
- •External Refresh: 별도 워커가 주기적 갱신, 항상 캐시 히트
적용사례: 인기 상품 조회, 홈페이지 캐시, 세션 데이터
비교: Lock(순차 처리/락 오버헤드) vs Early Expiration(사전 갱신/확률적) vs Background Refresh(비동기/Stale 가능)
연관: 캐시 전략, Redis, 분산 락, Thundering Herd, 시스템 안정성