Upstash가 다중 영역 복제(Multi Zone Replication) 기능을 정식으로 공개합니다. 이 기능을 활성화하면 데이터가 여러 가용성 영역(Availability Zone)에 복제되어, 높은 가용성과 향상된 확장성을 동시에 확보할 수 있습니다.
높은 가용성(High Availability)
다중 영역 데이터베이스는 서로 다른 영역에서 복제본(replica)이 실행되기 때문에 장애에 훨씬 더 탄력적으로 대응합니다. 특정 가용성 영역에 장애가 발생하더라도 요청이 자동으로 정상 상태의 영역으로 리디렉션되므로, 애플리케이션에는 거의 영향이 없습니다.
특히 장애 조치(failover) 시간에서 그 차이가 두드러집니다. 단일 영역 데이터베이스의 장애 조치에는 수 분이 소요되지만, 다중 영역 데이터베이스는 몇 초 만에 복구됩니다.
향상된 확장성(Better Scalability)
다중 영역 데이터베이스에서는 요청이 라운드 로빈(round robin) 방식으로 각 복제본에 분산됩니다. 처리량(throughput) 수요가 증가하면 클러스터에 새로운 복제본이 자동으로 추가되어 트래픽 급증에도 안정적인 성능을 유지합니다.
아키텍처
Upstash는 단일 리더(single leader) 복제 모델을 사용합니다. 각 키(key)는 하나의 리더 복제본이 소유하고, 나머지 복제본들은 해당 리더의 백업 역할을 수행합니다. 특정 키에 대한 쓰기 작업은 먼저 리더 복제본에서 처리된 후 백업 복제본들로 전파됩니다. 읽기 작업은 일관성 설정에 따라 리더 또는 아무 복제본에서나 처리할 수 있습니다. 이 모델은 우수한 쓰기 일관성과 함께 읽기 확장성을 제공합니다.
각 복제본은 장애 감지기(failure detector)를 통해 리더 복제본의 생존 여부를 지속적으로 추적합니다. 리더 복제본에 장애가 발생하면 나머지 복제본들이 새로운 리더 선출(leader election) 라운드를 시작하여 새 리더를 선택합니다. 이 순간이 클러스터 전체에서 유일하게 요청이 잠시 차단될 수 있는 비가용 구간입니다.
일관성(Consistency)
Upstash는 두 가지 일관성 모드를 제공합니다.
최종 일관성(Eventual Consistency)
쓰기 요청은 리더 복제본이 작업을 처리하는 즉시 반환되며, 쓰기 작업은 백업 복제본들에 비동기적으로 복제됩니다. 읽기 요청은 어떤 복제본에서든 처리할 수 있어 수평적 확장성이 뛰어나지만, 동일 키에 대한 쓰기 작업이 백업 복제본으로 전파되는 동안 읽기 요청이 이전(stale) 값을 반환할 수 있습니다.
강력한 일관성(Strong Consistency)
쓰기 요청에 대한 응답은 리더 복제본에 더해 최소 하나 이상의 백업 복제본이 쓰기 작업을 처리한 후에만 클라이언트에 반환됩니다.
또한 강력한 일관성 모드에서는 응답을 반환하기 전에 쓰기 데이터가 디스크에 동기화(sync)됨을 보장합니다. 따라서 클라이언트는 승인(acknowledgement)을 받은 시점부터 리더 복제본에 장애가 발생하더라도 데이터가 안전하다고 가정할 수 있습니다. 다만 읽기 요청이 리더 복제본에서만 처리되기 때문에 일관성은 강화되지만 클러스터의 확장성은 다소 감소합니다.
업그레이드 방법
Upstash 콘솔에서 데이터베이스의 다중 영역 복제를 손쉽게 활성화할 수 있습니다. 복제 모델 덕분에 업그레이드 중 다운타임은 전혀 없습니다. 마이그레이션 중 약간의 성능 저하가 있을 수 있으며, 소요 시간은 데이터베이스 크기에 따라 몇 초에서 수 분까지 달라집니다.
요금
인프라 비용 증가에 따라 다중 영역 데이터베이스의 가격은 기존보다 높습니다. 요금은 10만 건의 요청당 $0.4, GB당 $0.5입니다.