패스잇
백엔드 개발 · 심화

분산 환경에서 Redis 캐시를 사용할 때, 데이터 일관성을 유지하기 위한 전략과 발생할 수 있는 문제점(예: stale data)을 설명하고, 이를 해결하기 위한 구체적인 방안들을 제시해 주세요.

힌트 · Write-through/back, Cache-aside 패턴의 한계, 분산 락, 버전 관리, Pub/Sub 기반 무효화 등을 고려할 수 있습니다.

캐시 무효화Write-ThroughWrite-BackRead-Through/Lazy LoadingTTL(Time-To-Live)

모범답안

분산 환경에서 Redis 캐시를 사용할 때 데이터 일관성을 유지하는 것은 중요한 과제입니다. 캐시 데이터가 원본 데이터와 달라지는 stale data 문제가 발생할 수 있기 때문입니다.

가장 기본적인 방법은 TTL(Time-To-Live)을 설정하는 것입니다. 하지만 TTL만으로는 완벽한 일관성을 보장하기 어렵습니다.

Write-Through나 Write-Back 패턴을 사용하면 데이터 변경 시 캐시에도 즉시 반영하여 일관성을 높일 수 있지만, 성능 저하를 야기할 수 있습니다. Cache-Aside 패턴은 가장 일반적이지만, 데이터 업데이트 시 캐시를 무효화하는 과정에서 경쟁 조건이 발생할 수 있습니다.

이러한 문제점을 해결하기 위해 몇 가지 전략을 고려할 수 있습니다. 첫째, 분산 락을 사용하여 캐시 업데이트 과정에서의 경쟁 조건을 방지할 수 있습니다. 둘째, 데이터에 버전 정보를 추가하여 캐시의 유효성을 검증할 수 있습니다. 셋째, Pub/Sub 기반의 캐시 무효화 시스템을 구축하여 데이터 변경 시 관련 캐시를 즉시 무효화할 수 있습니다.

각 전략은 장단점이 있으므로, 시스템의 요구사항과 트레이드오프를 고려하여 적절한 방법을 선택해야 합니다.

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

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

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

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