백엔드 개발 · 중급
Redis의 영속성(Persistence)을 제공하는 RDB와 AOF 방식의 동작 원리, 장단점을 비교하고, 데이터 유실 허용 범위와 복구 속도 관점에서 어떤 상황에 어떤 방식을 선택해야 하는지 설명해 주세요.
힌트 · 스냅샷 방식과 로그 기록 방식의 차이, 데이터 유실 위험성, 파일 크기, 복구 속도를 비교하여 설명합니다.
RDBAOF스냅샷WAL (Write-Ahead Logging)복구 시간 (Recovery Time)
모범답안
Redis의 영속성을 제공하는 RDB와 AOF는 각각 장단점이 뚜렷합니다.
RDB는 특정 시점의 메모리 데이터를 스냅샷으로 저장하는 방식입니다. 장점은 복구 속도가 빠르고 파일 크기가 작아 백업에 용이하다는 점입니다. 단점은 마지막 스냅샷 이후의 데이터는 유실될 수 있다는 점입니다.
AOF는 모든 쓰기 명령을 로그 파일에 기록하는 방식입니다. 장점은 데이터 유실을 최소화할 수 있다는 점입니다. 단점은 파일 크기가 커질 수 있고, 복구 속도가 RDB보다 느릴 수 있다는 점입니다.
데이터 유실 허용 범위가 낮고 최신 데이터가 중요한 경우에는 AOF를 선택하는 것이 좋습니다. 반면, 데이터 유실을 어느 정도 감수할 수 있고 빠른 복구 속도가 중요한 경우에는 RDB를 선택하는 것이 좋습니다. 상황에 따라 두 방식을 혼합하여 사용할 수도 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 캐시 (Redis) 면접 질문
- 캐시 무효화 전략 중 Write-through, Write-back, Lazy loading(Write-aside) 방식의 차이점과 각각의 장단점을 설명하고, 특정 상황에 적합한 전략을 선택하는 기준에 대해 설명해 주세요.
- Redis에서 설정 가능한 다양한 eviction 정책(예: LRU, LFU, volatile-lru 등)에 대해 설명하고, 서비스 특성을 고려하여 적절한 정책을 선택하는 기준과 그 이유를 설명해 주세요.
- Redis의 String, Hash, List, Set, Sorted Set과 같은 주요 데이터 구조 각각의 특징과 실제 서비스에서 어떤 용도로 활용될 수 있는지 구체적인 예시를 들어 설명해 주세요.
- Redis Sentinel은 무엇이며, 어떤 문제를 해결하기 위해 사용되는지 설명해 주세요. 또한, Sentinel이 제공하는 고가용성(High Availability) 기능과 동작 방식에 대해 구체적으로 설명해 주세요.
- 분산 환경에서 캐시를 사용할 때 발생할 수 있는 데이터 불일치(Stale Data) 문제의 원인을 설명하고, 이를 해결하기 위한 일반적인 방법들을 제시해 주세요.
- 캐시 스탬피드(Cache Stampede) 또는 썬더링 허드(Thundering Herd) 현상이 무엇인지 설명하고, 이로 인해 시스템에 어떤 문제가 발생할 수 있는지, 그리고 이를 방지하기 위한 기술적인 해결책은 무엇인지 설명해 주세요.