트러블슈팅

Redis write-back 구조에서 데이터 유실 문제

sudaruuu 2026. 3. 19. 16:08

문제 상황

Redis write-back 구조는
데이터를 바로 DB에 저장하지 않고
Redis에 먼저 누적한 뒤 일정 주기로 DB에 반영하는 방식이다.

이 방식은 성능 개선에는 효과적이지만,

  • Redis 장애 발생 시
  • DB에 반영되지 않은 데이터가

유실될 수 있는 문제가 존재한다.


데이터 유실 방지 방법

데이터 유실 방지는 크게 2가지 관점으로 나눌 수 있다.

  1. 데이터를 복구 가능하게 만드는 방법
  2. 장애가 발생해도 서비스가 유지되도록 하는 방법

1. 데이터 복구 기반 전략

AOF ( Append Only File)

Redis의 모든 쓰기 작업을 로그 형태로 저장하는 방식

  • 특징
    • 데이터 변경 이력을 계속 기록
    • 재시작 시 로그를 다시 실행하여 복구 가능
  • 장점
    • 데이터 유실을 최소화할 수 있음
  • 단점
    • 데이터를 파일로 저장하는 작업이 추가되어 성능 부담이 있음
  • 한계
    • 설정에 따라 일부 데이터는 유실될 수 있음

RDB (Snapshot)

특정 시점의 데이터를 통째로 저장하는 방식

  • 특징
    • 일정 주기로 데이터를 한 번에 저장
  • 장점
    • 복구 속도가 빠름
    • 백업 용도로 적합
  • 단점
    • 마지막 저장 이후 데이터는 유실될 수 있음
  • 한계
    • 실시간 데이터 보호에는 적합하지 않음

AOF + RDB

  • RDB → 전체 백업
  • AOF → 데이터 유실 최소

실무에서는 두 방식을 함께 사용하는 경우가 많음


2. 고가용성(HA) 기반 전략

Master / Replica

데이터를 복사한 서버를 하나 더 두는 구조

  • 특징
    • 메인 서버 장애 시 복사본 활용 가능
  • 한계
    • 자동 전환이 되지 않음

Sentinel

서버 상태를 감시하고 자동으로 서버를 교체해주는 시스템

  • 특징
    • 장애 발생 시 자동 failover
  • failover
    • 문제가 생기면 자동으로 다른 서버로 바꿔서 계속 동작하게 하는 것
  • 한계
    • 일부 데이터 유실 가능
    • 구조가 복잡해짐

Cluster

데이터를 여러 서버에 나눠서 저장하는 구조

  • 특징
    • 확장성과 가용성을 동시에 확보
  • 한계
    • 운영 난이도 높음
    • 작은 서비스에도 과할 수 있음

정리

Redis write-back 구조에서는
Redis에만 데이터가 존재하는 구간이 발생하기 때문에
장애 발생 시 데이터 유실 가능성이 존재한다.

이를 해결하기 위해서는


- AOF / RDB를 통한 데이터 복구 전략
- Sentinel / Cluster를 통한 고가용성 전략


을 함께 고려해야 한다.

즉,


"데이터를 복구할 것인가"
"장애를 대비할 것인가"


두 가지 관점을 함께 이해하는 것이 중요하다.