-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
Description
이벤트 기능 Redis 장애시 복구 전략
간단 설명
- Redis는 인메모리 저장소로 속도는 빠르지만 데이터 휘발성 있음
- 투표 중 좋아요 수는 Redis에서만 저장됨.
- Redis가 죽거나 장애 발생 시 좋아요 데이터 유실 없이 복구 가능해야 함
상세 설명
방안 1: Kafka + In-Memory Cache 기반 Fallback
- Redis에 저장되는 좋아요 이벤트를 Kafka에도 동시에 보내고, 장애 발생 시 Kafka 데이터를 소비하여 in-memory cache에 임시 저장
- 서버 메모리를 통해 랭킹/좋아요 수 계산 및 사용자에게 제공
- Redis 완전 장애 시에도 실시간에 가까운 데이터 제공 가능
방안 2: Redis Sentinel/Cluster 기반 고가용성 구성
- Redis를 Sentinel 또는 Cluster로 구성하여 장애 발생 시 자동 failover 또는 replica 전환으로 Redis를 계속 사용 가능하게 함
- Redis 자체적으로 대응하여 서비스 중단 최소화, 사용자에게는 변화 없음
- 하지만 구성 복잡, 장애 감지 및 전환까지 수초 딜레이 발생
- 중단된 동안의 이벤트 기능은 불가능?
방안 3: Kafka + Fallback + Sentinel/Cluster
- Redis의 고가용성 구성(Sentinel/Cluster)으로 빠른 장애 복구
- 동시에 좋아요 이벤트를 Kafka로도 전송하여 이벤트 로그를 저장
- 장애 전환이 완료되기 전(수 초 내)에는 서버 In-Memory Cache에서 실시간으로 데이터 응답
- 장애 복구 후 Kafka 로그를 기반으로 Redis 재적재 가능
방안 4: In-Memory Cache 단독 장애 대응
- Redis와 동시에 서버 메모리 캐시에 좋아요 수를 저장하고, Redis 장애 시 메모리 캐시로 랭킹 및 좋아요 수 처리
- Redis 장애 중에도 메모리 캐시를 이용해 좋아요 수/랭킹 집계 및 사용자에게 실시간 응답
- 다중 서버 환경에서 캐시 일관성 유지 어려움 -> 지금은 단일 서버라 괜찮을지도?
- 영속성이 없음 -> 일부 유실 가능성
Reactions are currently unavailable