Redis 도입 시 가장 먼저 하는 고민은 "어떤 아키텍처로 구성할 것인가?"임. 서비스 규모, 가용성(HA), 데이터 분산 필요성에 따라 크게 세 가지 방식(Replication, Sentinel, Cluster)으로 나뉨.
각 방식의 특징과 장단점을 정리함.
1. Standalone (Replication) : 기본 복제 구성
가장 기본적인 형태. Master 노드 1개와 Replica(Slave) 노드 1개 이상으로 구성됨.
동작 원리
- Master: 데이터 쓰기(Write)와 읽기(Read) 모두 수행.
- Replica: Master 데이터를 비동기(Asynchronous)로 복제해 유지. 주로 읽기 전용(Read-Only)으로 설정해 Read 트래픽 분산 용도로 사용.
장점
- 구성이 가장 간단함.
- Replica를 늘려 Read 성능 확보 가능.
단점
- SPOF (Single Point of Failure): Master 장애 시 쓰기 불가.
- 수동 복구: 장애 시 관리자가 직접 Replica를 Master로 승격시켜야 함.
- Scale-up 의존: 데이터 증가 시 장비 스펙 업(Scale-up) 외엔 방법 없음.
2. Redis Sentinel : 고가용성(HA) 확보
Replication의 '수동 복구' 한계를 해결하기 위한 구조. 별도의 Sentinel(감시자) 프로세스가 Redis를 모니터링함.
동작 원리
- Monitoring: Sentinel이 Master, Replica 상태 주기적 감시.
- Notification: 장애 감지 시 관리자에게 알림 발송.
- Automatic Failover: Master 다운 시, Sentinel 투표로 Replica 중 하나를 Master로 승격.
- Configuration Provider: 클라이언트는 Sentinel에 접속해 현재 Master 주소를 받아옴.
특징
- 홀수 구성: 과반수 투표(Quorum) 위해 Sentinel은 최소 3개 이상 홀수로 구성 필요.
- 데이터 샤딩 불가: 모든 데이터가 하나의 Master에 저장되므로 대용량 처리에 한계 존재.
3. Redis Cluster : 샤딩 + 고가용성
단일 서버 메모리 초과나 쓰기 트래픽 분산이 필요할 때 쓰는 수평 확장(Scale-out) 구조.
동작 원리 (Hash Slot)
- Sharding: 전체 데이터를 16,384개 Hash Slot으로 분할.
- 분산 저장: Key를 CRC16 해시 함수로 돌려 저장할 슬롯(노드) 결정.
SLOT = CRC16(key) mod 16384
- Failover: Master별로 Replica를 가지며, 장애 시 해당 Replica가 자동 승격 (Sentinel 없이 자체 수행).
장점
- 무한한 확장성: 노드 추가로 용량과 처리량 증대 가능.
- HA: 일부 노드 장애에도 전체 서비스 중단 없음.
단점
- 설정과 관리가 복잡함.
- Multi-key 연산 제한: 서로 다른 노드에 있는 Key 간 트랜잭션이나
MGET 사용이 어려움.
4. 비교
| 특징 | Standalone (Replication) | Sentinel | Cluster |
|---|
| 목적 | 단순 복제, 읽기 분산 | 고가용성 (HA) | 확장성 (Sharding) + HA |
| 데이터 분산 | 불가 | 불가 | 가능 (노드별 분할) |
| 장애 복구 | 수동 | 자동 (Sentinel 개입) | 자동 (자체 수행) |
| 쓰기 성능 | Master 1대 한계 | Master 1대 한계 | 노드 추가 시 증가 |
| 구현 난이도 | 하 | 중 | 상 |
5. 결론: 선택 가이드
- 소규모 / 단순 캐시:
Standalone (Replication)으로 충분함.
- 다운타임 치명적 / 데이터 적음:
Sentinel 도입해 자동 장애 복구 체계 구축.
- 대규모 데이터 / 쓰기 트래픽 많음:
Cluster로 데이터 분산 처리 필요.