Cache Stampede 발생 메커니즘
Cache Stampede(Thundering Herd)는 병렬 캐싱 시스템에서 인기도 높은 캐시 키가 만료될 때 대량의 동시 요청이 동시에 동일한 데이터베이스 쿼리를 재실행하는 연쇄 실패(cascading failure) 현상입니다. 예를 들어 초당 1만 건의 접근이 발생하는 캐시 키가 만료되면, 수천 개의 요청이 밀리초 단위로 도착하여 모두 캐시 미스를 경험하고 데이터베이스를 동시에 과부하 상태로 빠뜨립니다.
완화 전략 비교
뮤텍스 잠금(Mutex Locking)은 결정적 접근으로서 캐시 미스 시 한 프로세스만 잠금을 획득하고 데이터를 재계산하며, 나머지는 대기하거나 부실(stale) 값을 반환합니다. 동시 재계산을 완전히 차단하나 잠금 메커니즘 구현의 복잡성과 경합 비용이 발생합니다. X-Fetch 알고리즘은 확률론적 조기 갱신으로, 각 프로세스가 독립적으로 재계산 필요성을 판단하며 만료 시점 접근 시 재계산 확률이 증가합니다. 공식 time() - delta · beta · log(rand()) ≥ expiry를 기반으로 하며, 메모리 오버헤드와 부분적 부실성이 트레이드오프입니다. 백그라운드 갱신은 외부 프로세스에서 주기적 또는 접근 기반으로 갱신하며 정적 캐시에 적합하나 별도 운영 부담이 있습니다.