복제는 가용성과 재해 복구를 제공하기 위해 수십 년 동안 데이터베이스 시스템의 중요한 부분으로 자리 잡았습니다. 최근에는 여러 디바이스에서 운영되는 고가용성, 확장성, 전 세계적으로 분산된 배포의 필요성을 해결하기 위해 분산 데이터베이스가 발전하면서 복제의 역할이 진화하고 그 어느 때보다 중요해졌습니다. 데이터베이스 시스템은 클러스터 내, 클러스터 간, 에지-코어 간 등 다양한 수준의 요구 사항을 해결하기 위해 광범위한 복제 솔루션을 개발하고 있으며, 클라우드, 모바일 및 기타 IoT 사용 사례도 포괄하고 있습니다. 

가장 인기 있는 NoSQL 데이터베이스 다목적 복제 솔루션을 갖춘 시스템으로는 Couchbase와 MongoDB가 있습니다. 이러한 각 솔루션에 대해 자세히 살펴보고 이러한 요구 사항을 해결하는 방법을 살펴보겠습니다. 간단하게 비교하기 위해 여러 DC에 걸쳐 고가용성 및 글로벌 배포를 위한 복제에 초점을 맞춰 보겠습니다. 

글로벌 배포를 위한 MongoDB의 복제

마스터-슬레이브 아키텍처 

몽고 복제 아키텍처는 복제본 세트를 기반으로 하며, 다음과 같이 구성됩니다. 단 하나의 기본 모든 데이터 변경 사항을 캡처하고 쓰기를 확인합니다. 보조 데이터는 일반적으로 기본 데이터로 선출되지 않는 한 읽기 전용인 기본 데이터의 데이터를 복사합니다. 각 복제본 세트는 최대 50개의 보조로 구성할 수 있습니다. 복제 세트의 구성원은 데이터 센터 장애 및 지리적으로 분산된 애플리케이션에 대한 보호를 위해 여러 데이터 센터에 배포할 수도 있습니다. 데이터는 비동기식으로 보조 데이터센터에 복제됩니다. 

그림. 몽고의 복제 모델

기본에서 보조로 자동 장애 조치하는 데 걸리는 평균 시간은 약 12초이며, 네트워크 지연 시간으로 인해 보조를 다른 DC에 배포하는 경우 이보다 더 길어질 수 있습니다. 이는 보조가 쓰기를 수행할 수 없기 때문에 단일 장애 지점이 될 가능성이 있습니다. 

기본값은 기본에서 읽기이지만, 사용자는 대기 시간을 최소화하기 위해 읽기 기본 설정을 보조에서 수행하도록 지정할 수 있습니다. 그러나 복제는 비동기식이기 때문에 특히 지리적으로 분산된 애플리케이션에서 오래된 데이터를 읽을 수 있는 위험이 있을 수 있습니다. 

멀티센터 배포 및 액티브-액티브와 같은 설정 

멀티센터 배포의 경우, 복제본 세트의 보조를 다음 위치에 배포할 수 있지만 모든 데이터 센터가 쓰기를 수행할 수 있을 때까지는 충분하지 않습니다. 여러 데이터센터에서 동시에 쓰기를 수행할 수 있는 액티브-액티브 배포는 지리적으로 분산된 애플리케이션에 매우 중요합니다. Mongo는 기본 데이터센터에서만 쓰기를 수행할 수 있기 때문에 액티브-액티브 사용 사례를 해결하기 위해 아래에 언급된 접근 방식을 권장합니다. 

그림: MongoDB를 사용한 액티브-액티브 같은 설정 

A shard 는 논리적 저장소 단위로, 여기에는 하위 집합 의 데이터 집합을 생성합니다. 액티브-액티브와 같은 설정을 활성화하기 위해, Mongo는 모든 샤드에 기본 샤드를 배포할 것을 권장합니다. 모든 샤드에는 별개의 데이터 하위 집합이 포함되어 있기 때문에, 애플리케이션은 서로 다른 데이터 하위 집합만 동시에 수정할 수 있습니다. 따라서 동일한 데이터 세트가 다른 사이트에서 수정될 수 있는 완전한 액티브-액티브가 아닙니다. 

샤드는 애플리케이션에 완전히 투명하며 쿼리 라우터가 배포되어 애플리케이션에서 각 샤드로 쿼리를 라우팅합니다. 쿼리 라우팅은 또한 추가적인 오버헤드를 추가합니다.

이 설정을 통한 배포는 모든 샤드에 기본 샤드가 있어야 할 뿐만 아니라 모든 샤드의 기본 샤드에 대해 보조 샤드가 고가용성을 위해 다른 샤드에 위치해야 하며 기본 샤드는 계속해서 단일 장애 지점 역할을 하기 때문에 확장에 따라 매우 복잡해질 수 있습니다. 모든 샤드에 대해 복제본의 수는 샤드 수 * 데이터센터 수와 같습니다. 또한 모든 복제본 세트에 대해 언제든지 프라이머리를 선출할 수 있는 쿼럼을 유지해야 합니다. Learn 더 보기.  

이 설정은 토폴로지 측면에서도 매우 제한적이며, 배포는 기본이 병목 현상이므로 허브 및 스포크 모델을 준수해야 합니다.

클라우드 배포 - 글로벌 클러스터 

Mongo Atlas는 지역 복제 사용 사례를 개선하기 위해 글로벌 클러스터를 제공합니다. 글로벌 클러스터를 사용하는 배포는 클라우드 공급업체가 지원을 제공하는 모든 영역 및 지역에 샤드에 대한 기본 설정을 갖는 액티브-액티브 설정과 유사합니다. 

글로벌 클러스터를 통해 Mongo는 클라우드 제공업체로부터 얻은 위치 메타데이터를 사용하여 위치 인식 라우팅을 제공할 수 있습니다. 이를 통해 Mongo는 쿼리를 시작 지점에서 가장 가까운 데이터 센터로 라우팅하고 네트워크 지연 시간을 최소화할 수 있습니다. 이는 업데이트가 로컬인 대부분의 경우에 유용합니다. 쓰기가 비로컬인 경우에는 프라이머리만 쓰기를 수행할 수 있으므로 네트워크 지연 시간이 추가됩니다. 

글로벌 클러스터의 가장 큰 장점은 Atlas가 완전 관리형 서비스이기 때문에 설정 및 관리와 관련된 운영 및 배포의 복잡성을 몽고에서 처리한다는 점입니다. 이는 다시 한 번 단일 클라우드 공급업체의 배포로 제한됩니다. 글로벌 클러스터는 단일 클러스터이므로 하이브리드 배포를 지원하기 위해 여러 클라우드 공급업체 및 지역에 걸쳐 확장할 수 없습니다. 글로벌 클러스터에 대해 자세히 알아보기 여기를 클릭하세요.

글로벌 배포를 위한 Couchbase의 복제

피어 투 피어 아키텍처

Couchbase는 노드 수준 장애에 대한 클러스터 내 복제, 데이터센터 및 지역 수준 장애에 대한 클러스터 간 복제를 위해 서로 다른 복제 체계를 채택했습니다. 글로벌 배포에 관심이 있으므로 클러스터 간 또는 데이터센터 간 복제가 이 논의의 초점이 될 것입니다. 

Couchbase는 피어 투 피어 아키텍처를 따르며, 이는 데이터센터 간 복제 솔루션에도 반영되어 있습니다. Couchbase를 사용하면 여러 개의 독립 클러스터를 생성하고 클러스터 간에 단방향 또는 양방향 복제 스트림을 설정할 수 있습니다. 이러한 독립 클러스터는 동일한 데이터센터 내에 함께 위치하거나 완전히 다른 지역에 존재할 수 있습니다. 피어 투 피어 독립 클러스터를 사용하는 이 아키텍처는 워크로드 격리, 다양한 정책 설정 기능, 다양한 토폴로지 지원, 이기종 확장 등 다양한 이점을 제공하며 하이브리드 배포도 가능합니다. 

Couchbase의 솔루션은 메모리에서 메모리로 복제가 이루어지고 병렬성이 높기 때문에 성능도 뛰어난 것으로 평가됩니다. 병렬성은 성능 요구 사항에 따라 사용자 정의할 수 있습니다. 또한 기존 복제 스트림의 우선순위를 새 복제 스트림보다 우선시하거나 그 반대로 설정할 수 있는 기능도 있습니다. 또한 네트워크 중단 후에도 자동으로 복구됩니다. 

또 다른 큰 장점은 유연한 토폴로지로, 나머지 시스템에 영향을 주지 않고 언제든지 클러스터를 토폴로지에 추가하거나 제거할 수 있다는 점입니다. 따라서 리소스 활용도가 매우 우수합니다. 예를 들어 양방향 링 토폴로지에서 클러스터는 활성 트래픽을 처리할 뿐만 아니라 재해 복구 솔루션으로 작동할 수 있습니다. 

멀티 센터 및 액티브-액티브 설정

데이터센터 간 복제 솔루션은 고객이 데이터센터를 소유하고 있는 전 세계 어디에서나 배포할 수 있습니다. 몇 번의 클릭만으로 새 클러스터를 생성하고 클러스터 간에 복제를 설정할 수 있습니다. 

카우치베이스의 XDCR은 양방향 복제를 통해 전 세계 사용자가 여러 위치에서 동시에 동일한 데이터를 수정할 수 있는 진정한 액티브-액티브 설정을 지원합니다. 액티브-액티브 설정 중에 발생하는 모든 충돌을 해결하기 위해 대부분의 업데이트가 승리하는 모드와 마지막 쓰기가 승리하는 모드의 두 가지 충돌 해결 모드를 지원합니다. 

현재 Couchbase는 위치 인식 라우팅을 제공하지 않지만, 마스터-마스터 아키텍처이므로 읽기 및 쓰기는 항상 로컬로 이루어집니다. 고객은 데이터 센터의 어느 곳에나 데이터를 배포하여 충분한 데이터 로컬리티를 확보할 수 있습니다. 또한 고객은 고급 필터링을 사용하여 해당 지역과 관련된 데이터만 복제함으로써 데이터 상주 및 지리적 펜싱 요건을 충족할 수 있습니다. 

클라우드 배포 

카우치베이스는 모든 주요 클라우드에서 사용할 수 있습니다: AWS, Azure, GCP 및 Oracle Cloud. 

Couchbase 클러스터는 모든 클라우드에 배포할 수 있으며, 클러스터 간에 복제 스트림을 설정할 수 있습니다. 여기에는 프라이빗과 퍼블릭 또는 두 개 이상의 퍼블릭 클라우드와 같은 다양한 클라우드에 클러스터를 배포할 수 있는 멀티 클라우드 및 하이브리드 클라우드 배포가 포함됩니다. 

복제 시스템의 배포와 관리는 매우 간단하고 직관적입니다.

Couchbase에는 아직 DBaaS 솔루션이 없지만 곧 출시될 예정입니다. 그러나 현재 자동화된 배포에 대한 지원은 다음을 통해 제공됩니다. 카우치베이스 자율 운영자. 

카우치베이스 및 몽고 DB의 복제 특성 요약

기능 카우치베이스 MongoDB
아키텍처 종속성 없이 확장 및 관리할 수 있는 완전히 독립적인 클러스터 독립 시스템이 아닌 클러스터 내 확장
성능 메모리-메모리, 스트림 기반, 고도로 병렬화된 복제. 노드당 복제 스트림 수는 (2-100)이 될 수 있습니다. 보조 로그는 기본 로그 또는 다른 보조 로그의 데이터를 복제합니다. 병렬이지만 스트림은 1-1(기본-보조)입니다.
우려 사항 작성 모든 클러스터가 쓰기를 허용하도록 구성할 수 있습니다. 쓰기 가용성에 영향을 주는 쓰기 작업은 기본 쓰기만 가능하며 비로컬 쓰기는 매우 비쌉니다.
우려 사항 읽기 항상 로컬 비용이 많이 들 수 있는 기본 기본값은 보조에서 읽도록 구성할 수 있습니다.
자동 장애 조치 SDK 수준에서 클러스터 간 자동 페일오버를 활성화할 수 있습니다. 단일 클러스터, 자동 
복제 유연성 매우 유연함 - 버킷 수준, 고급 최적화 기술을 통한 사용자 지정 튜닝, 속도, 대역폭 선택이 불가능합니다.
대역폭 최적화 기술 고급 필터링, 데이터 압축, 네트워크 대역폭 제한, 복제의 우선 순위를 정하는 서비스 품질.  데이터 압축
토폴로지 복잡한 토폴로지 지원 - 양방향, 스타, 메시, 체인, 링 등 무엇이든 가능 복잡한 토폴로지를 지원하지 않음 - 단방향, 스타. 기본은 병목 현상입니다.
활성-활성 지원 진정한 지원 없음(단일 마스터)
충돌 해결 예 - 대부분 쓰기 승리, 마지막 쓰기 승리(LWW) 충돌 해결 없음. 하나의 기본값만 지원됩니다.
설정 및 구성 몇 번의 클릭만으로 직관적인 UI와 CLI로 간편하게 구성할 수 있습니다. 복제본 세트 배포는 까다롭고 복제본 세트가 늘어날수록 힘들어질 수 있습니다.
하위 집합 복제를 위한 필터링 문서 키 ID, 값 또는 메타데이터를 사용하여 데이터의 하위 집합을 복제하는 고급 필터링. 필터링이 지원되지 않음
복제 우선순위 지정 진행 중인 복제를 새 복제에 비해 우선순위를 정하거나 그 반대의 경우도 가능합니다.  복제 우선순위 지정은 지원하지 않습니다.

 

작성자

게시자 Chaitra Ramarao, Sr. 제품 관리자, Couchbase Inc.

Chaitra Ramarao는 데이터베이스 툴링, 데이터센터 간 복제 및 파트너 통합을 선도하는 NoSQL 데이터베이스 회사인 Couchbase의 선임 제품 관리자입니다. 이전에는 카이저 퍼머넌트에서 데이터 분석 제품 관리와 휴렛팩커드에서 소프트웨어 개발을 담당했습니다. 그녀는 카네기 멜론에서 ECE 학사 학위와 엔지니어링 및 기술 혁신 관리 석사 학위를 받았습니다.

댓글 남기기