백엔드 개발 · 기초
가장 기본적인 캐싱 전략 중 하나인 'Cache-Aside' 패턴에 대해 설명해 주세요. 데이터 읽기 및 쓰기 시 어떻게 동작하나요?
힌트 · 애플리케이션이 직접 캐시와 데이터베이스를 관리하며, 읽기 시 캐시를 먼저 확인하고, 쓰기 시 데이터베이스를 업데이트 후 캐시를 무효화합니다.
캐시 미스캐시 히트데이터 일관성읽기 쓰기원본 데이터 저장소
모범답안
Cache-Aside 패턴은 애플리케이션이 직접 캐시와 데이터베이스를 관리하는 전략입니다.
데이터를 읽을 때는 먼저 캐시를 확인합니다. 만약 캐시에 데이터가 있다면 (Cache Hit), 캐시된 데이터를 반환합니다. 캐시에 데이터가 없다면 (Cache Miss), 데이터베이스에서 데이터를 가져와 캐시에 저장한 후 반환합니다.
데이터를 쓸 때는 먼저 데이터베이스를 업데이트합니다. 그 후 캐시에 있는 해당 데이터를 무효화(invalidate)합니다. 이렇게 하면 다음에 데이터를 읽을 때 캐시 미스가 발생하고, 데이터베이스에서 최신 데이터를 가져와 캐시에 저장하게 되어 데이터 일관성을 유지할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 캐시 (Redis) 면접 질문
- 캐시 히트(Cache Hit)와 캐시 미스(Cache Miss)는 무엇을 의미하며, 각각 발생했을 때 시스템은 어떻게 동작하는지 설명해 주세요.
- Redis에서 TTL(Time To Live)은 무엇이며, 캐시 데이터의 유효성을 관리하는 데 어떻게 사용되는지 설명해 주세요.
- 캐시 무효화(Cache Invalidation)는 왜 중요하며, 이를 관리하기 위한 기본적인 방법으로는 어떤 것들이 있을까요?
- 캐시 무효화 전략 중 Write-through, Write-back, Lazy loading(Write-aside) 방식의 차이점과 각각의 장단점을 설명하고, 특정 상황에 적합한 전략을 선택하는 기준에 대해 설명해 주세요.
- Redis에서 설정 가능한 다양한 eviction 정책(예: LRU, LFU, volatile-lru 등)에 대해 설명하고, 서비스 특성을 고려하여 적절한 정책을 선택하는 기준과 그 이유를 설명해 주세요.
- Redis의 String, Hash, List, Set, Sorted Set과 같은 주요 데이터 구조 각각의 특징과 실제 서비스에서 어떤 용도로 활용될 수 있는지 구체적인 예시를 들어 설명해 주세요.