데이터베이스 복제

컴퓨터과학·AI
한 줄 정의: 하나의 데이터베이스 내용을 여러 서버에 똑같이 복사해두어 장애 대응력과 읽기 성능을 높이는 기법입니다.

쉽게 풀면

중요한 계약서를 은행 금고 하나에만 보관하지 않고, 여러 지점 금고에 똑같은 사본을 나눠 보관하는 상황을 떠올려 보세요. 한 지점에 화재가 나도 다른 지점의 사본으로 업무를 이어갈 수 있습니다. 데이터베이스 복제도 마찬가지로, 원본 데이터가 있는 주 서버(마스터)의 내용을 하나 이상의 복제 서버(레플리카)에 실시간 또는 준실시간으로 동기화합니다. 이렇게 하면 주 서버에 장애가 생겨도 복제본으로 서비스를 계속할 수 있고, 읽기 요청을 여러 복제 서버로 나눠 처리해 전체 처리량도 높일 수 있습니다.

왜 중요한가

서비스가 중단 없이 계속 운영되어야 하는 시스템에서는 단일 서버 장애가 전체 서비스 중단으로 이어지지 않도록 하는 것이 필수적입니다. 데이터베이스 복제는 이러한 고가용성을 확보하는 핵심 기법이기 때문에, 분산 시스템·클라우드 인프라를 다루는 논문에서 시스템의 신뢰성과 확장성을 논할 때 자주 등장합니다. 또한 복제는 읽기 부하를 여러 서버로 분산시켜 성능을 높이는 방법이기도 해, 대규모 서비스의 아키텍처 설계 논의에서 빠지지 않는 주제입니다.

논문에서는 이렇게 쓰입니다

"가용성을 높이기 위해 마스터-슬레이브 구조로 데이터베이스 복제를 구성했으며, 장애 발생 시 평균 3초 이내에 복제본으로 전환되었다."

이 문장은 주 서버가 고장 났을 때 미리 복제해둔 서버로 자동 전환되기까지 걸린 시간이 3초였다는 뜻으로, 분산 시스템의 장애 복구 성능을 설명할 때 사용됩니다.

"지리적으로 분산된 여러 데이터센터에 데이터베이스를 복제하여, 사용자와 가장 가까운 지역의 복제본에서 읽기 요청을 처리하도록 설계하였다."

전 세계 사용자를 대상으로 하는 서비스에서, 지역별로 데이터베이스 복제본을 두어 응답 지연을 줄였다는 뜻입니다.

"멀티 마스터 복제 구조를 채택하여 여러 노드에서 동시에 쓰기 작업을 처리할 수 있도록 하되, 충돌 해결을 위한 별도의 정책을 적용하였다."

하나의 주 서버만 쓰기를 담당하는 방식이 아니라 여러 서버가 동시에 쓰기를 처리하는 구조를 택했고, 이때 발생할 수 있는 데이터 충돌을 해결하는 규칙을 함께 마련했다는 의미입니다.

조금 더 깊게 보면

복제 방식은 하나의 서버만 쓰기를 담당하고 나머지는 읽기 전용 복제본으로 두는 마스터-슬레이브(또는 프라이머리-레플리카) 구조와, 여러 서버가 동시에 쓰기를 처리하는 멀티 마스터 구조로 크게 나뉘며, 후자는 쓰기 성능을 높일 수 있지만 서버 간 데이터 충돌을 해결하는 절차가 추가로 필요합니다. 동기화 방식도 모든 복제본에 즉시 반영한 뒤 완료를 알리는 동기식 복제와, 일단 완료를 알리고 뒤이어 복제를 진행하는 비동기식 복제로 나뉘는데, 동기식은 데이터 일관성이 높은 대신 응답 속도가 느려지고 비동기식은 그 반대의 특성을 가집니다.

주의할 점

복제된 서버들 사이에는 동기화에 시간이 걸리기 때문에, 특정 순간에는 서버마다 보여주는 데이터가 살짝 다를 수 있습니다(복제 지연). 이는 CAP 정리에서 다루는 일관성과 가용성 사이의 트레이드오프와 직결되는 문제이며, 여러 복제본의 데이터가 항상 완벽히 일치한다고 가정하면 안 됩니다.

관련 용어