고가용성과 복제

고가용성과 복제 (High availability and replication) (high-availability)

Redis 공식 문서의 high-availability 페이지를 한국어로 풀어드릴게요. 옆에서 하나씩 설명해 드리는 느낌으로 읽으시면 돼요.

출처: Redis 공식 문서 — high-availability

데이터베이스 복제(replication)가 어떻게 고가용성(high availability)을 보장하는지 알려드릴게요. 핵심 한 줄은 이거예요. 복제를 켜면 데이터를 복제본(replica)에 복사해 두고, 주 데이터(primary)에 문제가 생겨도 자동으로 복제본이 이어받아 서비스가 끊기지 않게 해 준다는 거죠.

왜 복제가 필요한가요?

복제(replication)가 활성화되면 데이터셋이 복제되어 primary 데이터셋과 동기화되는 복제본이 생겨요. 이를 통해 **자동 페일오버(failover)**와 더 높은 **내결함성(fault tolerance)**을 얻을 수 있어요. 하드웨어 장애나 가용영역(zone) 장애가 나도 데이터 손실을 막아주죠.

옵션과 플랜 지원

Redis Cloud는 세 가지 복제 수준을 지원해요.

  • 복제 없음 (No replication): 데이터베이스의 복사본이 하나뿐이에요.
  • 단일 영역 복제 (Single-zone replication): primary와 replica가 같은 클라우드 영역(zone)에 있어요. primary에 문제가 생기면 replica가 이어받아 새로운 primary가 돼요. 가용영역이 3개 미만인 리전은 단일 영역 복제만 쓸 수 있어요.
  • 다중 영역 복제 (Multi-zone replication): primary와 replica가 서로 다른 영역에 있어요. 그래서 영역 하나가 통째로 사용 불가가 돼도 데이터베이스는 계속 온라인 상태를 유지해요. 이 기능은 가용영역이 3개 이상인 리전에서만 가능해요.

복제 옵션은 구독 플랜에 따라 달라져요.

  • 무료 Redis Cloud Essentials 플랜은 복제를 지원하지 않아요.
  • 유료 Redis Cloud Essentials 플랜과 Redis Cloud Pro 플랜은 구독을 만들 때 다중 영역 또는 단일 영역 복제를 고를 수 있고, 복제를 끄는 것도 가능해요.

생성 후 복제 설정 변경 가능 여부

데이터베이스를 만든 뒤 복제 설정을 바꿀 수 있는지는 플랜 종류와 처음 고른 복제 유형에 따라 달라요.

  • Redis Cloud Essentials: 데이터베이스를 만들 때 복제 종류를 골라요. 만들 때 다중 영역 복제를 골랐다면 나중에 단일 영역으로 바꾸거나 끌 수 없어요. 하지만 복제 없음이나 단일 영역 복제를 골랐다면 Essentials 구독을 편집해서 언제든 둘 사이를 오갈 수 있어요.
  • Redis Cloud Pro: 구독을 만들 때 다중 영역 배포 여부를 골라요. 이 설정이나 영역 설정은 구독을 만든 뒤에는 바꿀 수 없어요. 다만 구독 안의 각 데이터베이스에 대해 복제를 켜거나 끄는 것은 데이터베이스를 편집해 언제든 가능해요.

성능 영향 (Performance impact)

복제를 하면 모든 복사본을 동기화하기 위한 트래픽이 늘어나면서 성능에 영향을 줄 수 있어요.

데이터셋 크기 (Dataset size)

Essentials와 Pro 모두에서 복제를 쓰려면 메모리 한도가 데이터셋 크기의 2배는 되어야 해요.

  • Redis Cloud Essentials: 플랜 크기에 복제가 포함돼요. 복제를 고르면 실제로 쓸 수 있는 데이터셋 크기는 플랜 표시 크기의 절반이에요. 예를 들어 1 GB 플랜을 고르면 Redis는 데이터셋에 512 MB, 복제에 나머지 512 MB를 할당해요.
  • Redis Cloud Pro: 데이터베이스를 만들 때 데이터셋 크기를 직접 고르고, 고른 복제 설정에 따라 메모리 한도가 계산돼요.

영역 설정 유지 (Zone setting maintenance)

영역(zone) 설정은 구독을 만들 때만 정의할 수 있어요. 구독이 활성화된 뒤에는 이 설정을 바꿀 수 없어요. 즉 다중 영역 구독을 단일 영역으로(또는 그 반대로) 바꿀 수 없죠.

다른 영역 설정을 쓰려면 원하는 설정으로 새 구독을 만들고, 기존 구독에서 데이터를 마이그레이션하면 돼요.

가용영역 (Availability zones)

Redis Cloud Pro 클러스터와 애플리케이션을 같은 가용영역에 두면 네트워크 전송 비용과 지연 시간을 줄일 수 있어요. 클러스터의 가용영역을 지정하려면 커스텀 설정으로 Pro 데이터베이스를 만들고, Advanced optionsAllowed Availability Zones에서 Manual Selection을 선택하면 돼요.

  • Google Cloud 클러스터와 Redis Cloud BYOC에서는 Zone name 목록에서 가용영역을 골라요.
  • 그 외 AWS 클러스터에서는 Zone IDs 목록에서 가용영역 ID를 골라요. 가용영역 ID를 찾는 방법은 AWS 문서를 참고하세요.
  • Multi-AZ가 활성화되어 있으면 목록에서 가용영역 3개를 골라야 해요.

가용영역에 대한 더 자세한 내용은 Google Cloud 문서AWS 문서를 확인해 보세요.

더 알아보기 (Learn more)

고가용성과 복제에 대해 더 자세히 알고 싶다면 아래 링크를 참고하세요.