백엔드 개발 · 중급
캐시 무효화 전략 중 Write-through, Write-back, Lazy loading(Write-aside) 방식의 차이점과 각각의 장단점을 설명하고, 특정 상황에 적합한 전략을 선택하는 기준에 대해 설명해 주세요.
힌트 · 데이터 일관성, 쓰기 성능, 읽기 성능 측면에서 각 전략의 동작 방식과 특징을 비교하고, 사용 시나리오에 따른 적합성을 고려해야 합니다.
Write-throughWrite-backLazy loading (Write-aside)일관성성능
모범답안
면접관님, 캐시 무효화 전략에 대해 설명드리겠습니다.
Write-through는 캐시에 데이터를 쓸 때마다 DB에도 즉시 반영하는 방식입니다. 데이터 일관성은 높지만 쓰기 성능이 떨어집니다. Write-back은 캐시에만 쓰고, 나중에 DB에 비동기적으로 반영합니다. 쓰기 성능은 좋지만, 시스템 장애 시 데이터 손실 위험이 있고, 구현이 복잡합니다. Lazy loading (Write-aside)은 캐시에 데이터가 없을 때만 DB에서 가져오는 방식입니다. 읽기 성능은 좋지만, 캐시 미스 시 DB 부하가 증가할 수 있습니다.
전략 선택 기준은 데이터 일관성 요구 수준과 성능 요구 사항에 따라 달라집니다. 높은 일관성이 중요하다면 Write-through, 쓰기 성능이 중요하다면 Write-back, 읽기 성능이 중요하고 DB 부하를 감당할 수 있다면 Lazy loading을 선택할 수 있습니다. 예를 들어, 금융 거래처럼 데이터 정확성이 중요한 경우에는 Write-through가 적합하고, 소셜 미디어의 게시글처럼 약간의 데이터 손실이 허용된다면 Write-back이 더 나은 선택일 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 캐시 (Redis) 면접 질문
- Redis에서 TTL(Time To Live)은 무엇이며, 캐시 데이터의 유효성을 관리하는 데 어떻게 사용되는지 설명해 주세요.
- 캐시 무효화(Cache Invalidation)는 왜 중요하며, 이를 관리하기 위한 기본적인 방법으로는 어떤 것들이 있을까요?
- 가장 기본적인 캐싱 전략 중 하나인 'Cache-Aside' 패턴에 대해 설명해 주세요. 데이터 읽기 및 쓰기 시 어떻게 동작하나요?
- Redis에서 설정 가능한 다양한 eviction 정책(예: LRU, LFU, volatile-lru 등)에 대해 설명하고, 서비스 특성을 고려하여 적절한 정책을 선택하는 기준과 그 이유를 설명해 주세요.
- Redis의 String, Hash, List, Set, Sorted Set과 같은 주요 데이터 구조 각각의 특징과 실제 서비스에서 어떤 용도로 활용될 수 있는지 구체적인 예시를 들어 설명해 주세요.
- Redis의 영속성(Persistence)을 제공하는 RDB와 AOF 방식의 동작 원리, 장단점을 비교하고, 데이터 유실 허용 범위와 복구 속도 관점에서 어떤 상황에 어떤 방식을 선택해야 하는지 설명해 주세요.