Redis Software 내구성과 고가용성
Redis Software 내구성과 고가용성
데이터베이스를 운영하다 보면, 데이터를 잃지 않으면서도(내구성) 서비스가 끊기지 않게(고가용성) 유지할 방법이 항상 고민돼요. Redis Software는 복제·클러스터링·랙/존 인식 같은 기능을 묶어서 이 두 가지를 동시에 해결해 줘요. 이 글에서는 지속성, 복제, 클러스터링, Active-Active 지리 분산 복제, 랙-존 인식, 디스커버리 서비스가 각각 어떤 문제를 맡는지 정리해 볼게요.
이 기능들이 각각 맡는 일
Redis Software가 내구성과 가용성을 얻는 방법은 크게 몇 갈래로 나뉘어요. 각각을 하나씩 보면 전체 그림이 자연스럽게 잡혀요.
복제 (Replication)
데이터베이스를 복제하면 각 데이터베이스 인스턴스(프라이머리 샤드)가 레플리카 샤드로 복사돼요. 그러다 프라이머리 샤드가 실패하면, 클러스터가 자동으로 레플리카 샤드를 프라이머리로 승격시켜요. 단일 노드가 죽어도 데이터를 계속 제공할 수 있는 기반이 되는 기능이에요.
클러스터링 (Clustering)
클러스터링(또는 샤딩)은 데이터베이스를 개별 인스턴스(샤드)로 쪼개고, 이들을 여러 노드에 분산해요. 클러스터링은 클러스터에 리소스를 추가해 데이터베이스를 확장할 수 있게 해주고, 노드 하나가 죽어도 가용성이 떨어지지 않게 막아줘요.
데이터 지속성 (Database persistence)
데이터 지속성은 정해진 시간 간격으로 데이터를 디스크에 저장해, 프로세스나 서버 실패에도 데이터가 사라지지 않게 해줘요. 내구성 측면을 담당하는 기능이죠.
Active-Active 지리 분산 복제
Active-Active Redis Software 데이터베이스는 서로 다른 지리적 위치의 여러 클러스터에서 같은 데이터셋을 읽고 쓸 수 있게 해줘요. 데이터 손실이나 가용성 손실 가능성을 줄여 내구성을 높이고, 가장 가까운 클러스터에서 요청을 처리해 데이터 접근 지연도 줄여줘요.
랙-존 인식 (Rack-zone awareness)
랙-존 인식은 Redis Software 클러스터의 각 노드를 물리적 랙이나 논리적 존에 매핑해요. 클러스터는 이 정보를 이용해 프라이머리 샤드와 그 레플리카 샤드를 서로 다른 랙이나 존에 분산 배치해요. 이렇게 하면 특정 랙이나 존이 실패해도 데이터를 계속 제공할 수 있어요.
디스커버리 서비스 (Discovery service)
디스커버리 서비스는 Redis Software 데이터베이스에 연결할 때 쓰는 IP 기반 연결 관리 서비스예요. 애플리케이션이 데이터베이스 엔드포인트를 호스팅하는 노드를 알아낼 수 있게 도와줘요. 이 디스커버리 서비스 API는 Redis Sentinel API를 준수합니다.