패스잇
백엔드 개발 · 중급

캐시 스탬피드(Cache Stampede) 또는 썬더링 허드(Thundering Herd) 현상이 무엇인지 설명하고, 이로 인해 시스템에 어떤 문제가 발생할 수 있는지, 그리고 이를 방지하기 위한 기술적인 해결책은 무엇인지 설명해 주세요.

힌트 · 캐시 만료 시점에 많은 요청이 동시에 DB로 전달되는 상황을 방지하기 위한 뮤텍스(Mutex), probabilistic early expiration 등의 방법을 설명합니다.

캐시 만료경쟁 조건분산 락확률적 지수 백오프캐시 채우기

모범답안

캐시 스탬피드, 또는 썬더링 허드 현상은 캐시에 저장된 데이터가 만료되었을 때, 동시에 많은 요청이 발생하여 데이터베이스와 같은 원본 서버에 과부하가 걸리는 상황을 말합니다. 마치 짐승 떼가 한꺼번에 몰려드는 모습과 같다고 해서 붙여진 이름입니다.

이 현상이 발생하면 시스템 응답 시간이 급격히 느려지거나, 심한 경우 서버가 다운될 수도 있습니다.

이를 방지하기 위한 해결책으로는 여러 가지가 있습니다. 첫째, 캐시 갱신 시점에 경쟁 조건을 막기 위해 분산 락(Distributed Lock)을 사용할 수 있습니다. 둘째, 모든 요청이 동시에 캐시를 갱신하려 하지 않도록 확률적 지수 백오프(Probabilistic Exponential Backoff)를 적용할 수 있습니다. 셋째, 캐시 만료 시간을 무작위로 분산시켜 요청이 특정 시점에 몰리는 것을 방지하는 방법도 있습니다. 마지막으로, 캐시가 만료되기 전에 미리 갱신하는 방식도 고려해볼 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 캐시 (Redis) 면접 질문

← 캐시 (Redis) 면접 질문 전체 보기