문제 상황
Redis write-back 구조는
데이터를 바로 DB에 저장하지 않고
Redis에 먼저 누적한 뒤 일정 주기로 DB에 반영하는 방식이다.
이 방식은 성능 개선에는 효과적이지만,
- Redis 장애 발생 시
- DB에 반영되지 않은 데이터가
유실될 수 있는 문제가 존재한다.
데이터 유실 방지 방법
데이터 유실 방지는 크게 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를 통한 고가용성 전략
을 함께 고려해야 한다.
즉,
"데이터를 복구할 것인가"
"장애를 대비할 것인가"
두 가지 관점을 함께 이해하는 것이 중요하다.
'트러블슈팅' 카테고리의 다른 글
| Redis write-back 구조에서 벌크 업데이트 적용하기 (0) | 2026.03.20 |
|---|---|
| Redis write-back 구조에서 스케줄러와 벌크 처리 개념 혼동 (0) | 2026.03.20 |
| 리뷰 개수 조회 성능 개선 및 동시성 문제 해결 (0) | 2026.03.19 |
| Redis write-back 구조에서 스케줄러 주기와 벌크 처리 고민 (0) | 2026.03.18 |
| 캐시 적용 후 데이터 정합성 문제 해결 (CacheEvict 적용) (0) | 2026.03.18 |