Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Redis Sentinel vs Redis Cluster: 차이점 완벽 비교 및 선택 가이드

Redis Sentinel과 Redis Cluster, 무엇이 다를까?

Redis를 서비스 운영 환경에서 사용하려면 단일 인스턴스 구조만으로는 부족합니다. 마스터 노드에 장애가 발생하면 서비스 전체가 중단될 수 있기 때문입니다. 이 문제를 해결하기 위해 Redis는 두 가지 대표적인 고가용성(HA) 아키텍처를 제공합니다. 바로 Redis SentinelRedis Cluster입니다.

두 방식 모두 장애 상황에서 자동 페일오버를 지원하지만, 설계 목적과 내부 동작 방식은 완전히 다릅니다. 이 글에서는 두 아키텍처의 차이점을 정리하고, 내 서비스에 어떤 것을 선택해야 하는지 판단 기준을 제시합니다.

Redis Sentinel이란?

Sentinel은 마스터-복제본(Replica) 구조의 Redis 위에서 별도의 프로세스로 동작하는 고가용성 솔루션입니다. Sentinel 자체는 데이터를 저장하지 않으며, 다음 네 가지 역할을 수행합니다.

  • 모니터링(Monitoring): 마스터와 복제본의 상태를 지속적으로 확인합니다.
  • 알림(Notification): 장애 발생 시 관리자나 외부 시스템에 통보합니다.
  • 자동 페일오버(Failover): 마스터 장애 시 복제본 중 하나를 새 마스터로 승격합니다.
  • 구성 제공(Configuration Provider): 클라이언트에게 현재 마스터 정보를 알려줍니다.

Sentinel은 반드시 3개 이상의 홀수 개 노드로 배포해야 하며, 과반수(quorum)의 동의를 통해 페일오버를 결정합니다. 이를 통해 잘못된 페일오버로 인한 스플릿 브레인(split-brain) 상황을 예방할 수 있습니다.

Redis Cluster란?

Redis Cluster는 고가용성뿐 아니라 데이터 분산(샤딩)까지 기본으로 제공하는 아키텍처입니다. 전체 키 공간은 16,384개의 해시 슬롯으로 나뉘며, 각 마스터 노드는 그중 일부 슬롯을 담당합니다.

  • 키는 CRC16 해시 기반으로 슬롯에 매핑되어 여러 노드에 분산 저장됩니다.
  • 각 마스터는 하나 이상의 복제본을 가질 수 있으며, 마스터 장애 시 복제본이 자동으로 승격됩니다.
  • 클라이언트는 MOVED/ASK 리다이렉션 또는 클러스터 인식 클라이언트를 통해 올바른 노드로 직접 연결됩니다.

다만 주의할 점도 있습니다. MSET, 트랜잭션, Lua 스크립트처럼 여러 키를 함께 다루는 연산은 같은 슬롯에 속한 키에만 허용됩니다. 따라서 필요한 경우 해시 태그({...})를 활용해 관련 키들을 같은 슬롯에 배치하도록 데이터 설계를 해야 합니다.

핵심 차이점 한눈에 비교

구분Redis SentinelRedis Cluster
데이터 분산미지원 (단일 마스터)지원 (16,384개 슬롯 샤딩)
확장 방식수직 확장 (스케일 업)수평 확장 (노드 추가)
페일오버Sentinel 노드가 감독 및 승격클러스터 내부에서 자동 수행
저장 용량단일 서버 메모리에 한정전체 노드 메모리 합산
운영 복잡도상대적으로 단순리샤딩, 토폴로지 관리 필요
클라이언트 요구사항Sentinel 지원 클라이언트클러스터 프로토콜 지원 클라이언트

어떤 상황에서 무엇을 선택해야 할까?

Sentinel을 선택하는 것이 적합한 경우

  • 전체 데이터셋이 단일 서버 메모리 안에 들어가는 경우
  • 현재 마스터 하나로 읽기·쓰기 처리량이 충분한 경우
  • 단순한 장애 조치만 필요하고 운영 복잡도를 낮추고 싶은 경우

Cluster를 선택하는 것이 적합한 경우

  • 데이터가 단일 서버 메모리 용량을 초과하는 경우
  • 쓰기 트래픽이 많아 여러 노드에 부하를 분산해야 하는 경우
  • 서비스 성장에 따라 노드를 추가하며 선형적으로 확장해야 하는 경우

실무 운영 팁

  • Sentinel 구성 시 노드는 최소 3개 이상으로 하고, 서로 다른 물리 서버(또는 가용 영역)에 분산 배치하세요.
  • Cluster 도입 전에는 애플리케이션의 멀티 키 연산 패턴을 먼저 점검하고, 필요한 곳에 해시 태그를 설계하세요.
  • 두 방식 모두 페일오버 발생 시 클라이언트 재연결 로직을 반드시 사전에 테스트하세요.
  • 중간 규모라면 Sentinel로 시작해 데이터가 커질 때 Cluster로 마이그레이션하는 전략도 현실적인 선택입니다.

마무리

Redis Sentinel은 안정성에, Redis Cluster는 확장성과 안정성을 동시에 충족하기 위한 솔루션입니다. 데이터 크기와 트래픽 규모가 명확하지 않다면 Sentinel로 시작하는 것이 운영 부담이 적고, 데이터 증가가 예상된다면 처음부터 Cluster를 검토하는 것이 좋습니다. 두 아키텍처의 특성을 정확히 이해하면 불필요한 재설계 없이 안정적인 Redis 운영이 가능합니다.