PS-01캐시 만료 순간 DB 부하가 급증하는 문제
문제 상황인기 상품 통계 캐시가 만료되는 순간, 다수의 요청이 동시에
DB로 몰려 응답 지연과 커넥션 포화가 발생했다.
원인동일 캐시 키가 같은 시점에 만료되면서 모든 요청이 캐시 미스
→ DB 재조회로 이어지는 캐시 스탬피드(cache stampede)가
발생했다.
해결 방법
캐시 만료 시 발생하는 스탬피드를 단일 서버와 다중 서버
환경으로 나누어 2단계로 방어.
인스턴스 내부에서는 @Cacheale(sync = true)를 적용해 동일
키에 대한 동시 캐시 미스를 하나의 재계산으로 통합.
다중 서버 환경에서는 Redis 기반 분산 락을 적용해
클러스터 전체에서 재계산이 한 번만 수행되도록 구현.
핵심 교훈캐시는 히트율만이 아니라 "만료가 몰리는 순간"까지 설계해야
한다.