728x90
* 이 글을 읽기 전에 어느 정도 DCD(데이터 중심 구조)에 대해 이해하고 오길 바람.
복제 : 네트워크로 연결된 여러 장비에 동일한 데이터의 복사본을 유지한다는 의미
복제가 필요한 이유
- 지리적으로 가깝게 유지해 지연 시간을 줄임
- 장애가 발생해도 지속적으로 동작하여 가용성 높임
- 장비의 수를 확충하여 읽기 처리량을 늘림
복제를 위한 알고리즘
- Single Leader (단일 리더)
- 이 알고리즘은 하나의 리더 노드가 전체 복제본의 주도권을 가지고 있다.
- 리더는 쓰기 작업을 처리하고, 이를 팔로워에게 복제한다. 팔로워는 리더의 상태를 동기화하여 일관성을 유지한다.
- 읽기 작업은 주로 팔로워에서 처리되며, 리더의 부하를 줄이고 응답 시간을 최적화한다.
- 주로 일관성과 가용성을 균형있게 제공하며, 복제 관리가 비교적 간단다.
- Multi Leader (다중 리더)
- 다중 리더 알고리즘은 여러 개의 리더 노드가 존재하고, 각 리더가 독립적으로 쓰기 작업을 처리합니다.
- 리더 간에는 비동기적인 복제가 이루어집니다. 이는 각 리더가 서로 독립적으로 쓰기 작업을 수행하기 때문에 발생합니다.
- 다중 리더는 지리적으로 분산된 사용자들에 대한 지역적인 가용성을 제공할 수 있습니다.
- 하지만 일관성 유지와 복제 충돌을 관리하는 것이 복잡할 수 있습니다.
- Leaderless (리더리스)
- 리더리스 알고리즘은 리더를 명시적으로 지정하지 않고 모든 노드가 동등합니다.
- 클라이언트는 어떤 노드에든 요청을 보낼 수 있습니다. 이 노드는 해당 요청을 처리하고 다른 노드에게 전파합니다.
- 모든 노드는 상태를 서로 동기화하여 일관성을 유지합니다.
- 리더리스 방식은 가용성을 높일 수 있지만, 복제된 데이터의 일관성을 유지하기 위해 추가적인 동기화 메커니즘이 필요합니다.
리더와 팔로워
- 리더(Leader): 주 데이터베이스 역할이다. 읽기와 쓰기 작업을 처리하고, 데이터의 업데이트를 수행한다. 일반적으로 고성능의 서버 또는 클러스터로 구성된다. 리더는 실시간으로 데이터베이스의 변경 사항을 감지하고, 이를 팔로워에게 전파하여 동기화한다.
- 팔로워(Follower): 리더로부터 데이터를 복제한 복제본입니다. 주로 읽기 작업을 처리하며, 리더의 상태를 지속적으로 동기화하여 데이터의 일관성을 유지합니다. 팔로워는 주로 읽기 트래픽을 처리하여 리더의 부하를 줄이고 성능을 향상시킵니다. 만약 리더가 고장나거나 네트워크 문제로 인해 접근할 수 없게 되면, 팔로워 중 하나가 새로운 리더로 승격되어 서비스를 계속할 수 있습니다.
DCD 구조에서 리더-팔로워 구조가 가져다주는 장점
- 데이터 일관성 보장: 리더-팔로워 구조는 리더로부터 팔로워로의 복제를 통해 데이터의 일관성을 보장합니다. 리더가 모든 쓰기 작업을 처리하고 팔로워에게 복제하기 때문에 데이터의 일관성이 유지됩니다.
- 가용성 향상: 리더-팔로워 구조는 복제된 팔로워들을 통해 읽기 작업을 분산시키고, 리더에 대한 의존성을 줄여 가용성을 향상시킵니다. 이는 읽기 작업이 여러 팔로워에서 병렬로 처리되므로 응답 시간이 줄어들고, 시스템의 가용성이 향상됩니다.
- 확장성: 리더-팔로워 구조는 시스템에 새로운 팔로워를 추가하여 읽기 작업의 처리량을 쉽게 확장할 수 있습니다. 쓰기 작업은 리더에서만 처리되지만, 읽기 작업은 병렬적으로 여러 팔로워에서 처리되므로 시스템의 확장성이 향상됩니다.
- 내결함성: 리더-팔로워 구조는 리더의 고장이나 장애에 대비하여 내결함성을 제공합니다. 리더가 고장나더라도 하나 이상의 팔로워가 리더로부터 데이터를 복제하고 있기 때문에 시스템은 계속해서 서비스를 제공할 수 있습니다.
- 지리적 분산: 리더-팔로워 구조는 팔로워를 지리적으로 분산하여 데이터 접근 지연을 줄이고 지리적으로 분산된 사용자들에 대한 가용성을 향상시킬 수 있습니다.
'Computer Science > 데이터베이스' 카테고리의 다른 글
CQRS 개요 (0) | 2024.04.23 |
---|---|
Primary Key, Foreign Key 차이 (0) | 2023.10.08 |
데이터베이스란? (0) | 2023.07.27 |