Redis 아키텍처
- Replication 아키텍처
- Sentinel 아키텍처
- Cluster 아키텍처
Replication 아키텍처
- 기본적인
Master - Slave
구조 Master
노드에서 모든 쓰기 작업 수행Slave
노드는 읽기 작업만 수행
장점
- 향상된 읽기 성능 보장
단점
- 수동 Failover 작업 필요
Sentinel 아키텍처
- 여러 개의
Master - Slave
구조의 Redis 인스턴스를Sentinel
중앙 관리자가 관리하는 아키텍처
Sentinel 노드
Sentinel
노드는 Redis 서버와 별도로 실행되는 프로세스- 여러 개의
Sentinel
노드로 구성하여 Redis 인스턴스를 모니터링 및 장애 감지 Sentinel
노드의 장애 대응을 위해 3개 이상 노드로 구성 필요Master
노드가 장애 발생 시,Slave > Master
승격 작업 자동 처리Master
노드 장애 발생 시점,Sentinel
노드 중 과반수 이상의 동의(Quorum)되어야 Failover 작업 수행
장점
- 자동 Failover 작업 처리가 가능하여 HA(High Availability) 보장
단점
Sentinel
노드 수에 따라 장애 감지 및 복구 불안정- 복잡한 설정 및 과도한 리소스 확보 필요
Cluster 아키텍처
- Reids 3.0 버전 이후 제공하는
Cluster
기능 - 여러 개의 Redis 노드가 서로 통신하며 HA 를 유지/보장하는
Cluster
구성 - 같은
Cluster
구성된 Redis 노드는Master
orSlave
역할 분담 - 각 Redis 노드는 각자의 특정 범위의
Hash Slot
을 가지고 있어, 데이터 분산 처리 가능Hash Slot
은 각 Redis 노드에 할당된 데이터 범위를 나타내는 개념- Redis Cluster 는 총 16384개의
Hash Slot
보유 - 각 Redis 노드는 자신의
Hash Slot
범위 내에서 데이터 저장 및 조회 처리
Cluster 아키텍처 작동 방식
- 데이터 파티셔닝
Cluster
는 Key 를Hash Slot
에 할당하여 데이터를 분산 저장 처리- 각
Master
노드는 특정Hash Slot
을 소유하여, 해당 슬롯의 데이터를 처리
- 자동 장애 조치(Failover)
Master
노드가 장애 발생 시,Slave
노드가Master
노드로 승격되어 장애 조치 처리
- 수평적 확장(Scale-out)
Cluster
는 수평적으로 확장 가능하여, 데이터 처리 능력 향상- 새로운 노드가 추가된 경우, 기존 노드로부터
Hash Slot
을 재분배받아 데이터 관리
- 데이터 일관성
Cluster
는 데이터 일관성을 유지하기 위해, 데이터 복제 및 장애 조치 기능 제공- 각
Master
노드는 자신의Hash Slot
을 복제하여Slave
노드에 전달 - 장애 발생 시,
Slave
노드가Master
노드로 승격되어 데이터 일관성 유지
장점
- 수평적 확장을 통한 대규모 데이터 처리 & 높은 성능 지원 가능
- 자동 장애 조치 기능으로 높은 가용성 제공
- 데이터 파티셔닝 기능을 통해 부하 분산 처리 & 성능 최적화
단점
- 복잡한 설정 및 과도한 리소스 확보 필요
- 데이터 일관성 모델이 최종 일관성으로, 즉각적인 일관성이 필요한 서비스 특성에는 부적합