같은 데이터, 여러 사본

복제는 한 번의 변경을 여러 노드에 전파해 읽기를 나누고 장애에 대비하는 구조다. 대신 모든 사본이 즉시 같아지지는 않기 때문에 최신 기준점과 전파 지연을 함께 관리해야 한다.

변경 발생

쓰기 요청이 들어온다

애플리케이션은 먼저 한 곳의 기준 노드에 변경을 기록하고, 그 뒤 다른 복제본이 같은 변경을 따라간다.

상품#42 재고 12 -> 11
기준 노드

여기가 최신 상태의 출발점

쓰기 순서와 최종 값을 먼저 확정하는 지점이다. 다른 복제본은 이 변경을 받아 같은 데이터로 수렴한다.

최신값
v42 가 먼저 커밋됨
역할
읽기 기준과 장애 복구 기준이 여기서 결정됨
복제본들

같은 데이터를 나눠 가진다

복제본은 읽기 분산과 장애 대응에 쓰이지만, 전파 중에는 일부 노드가 잠깐 이전 버전을 보여줄 수 있다.

Replica A
v42 반영 완료
읽기 요청을 받아 기준 노드의 부하를 나눔
Replica B
v42 반영 완료
기준 노드 장애 시 승격 후보가 될 수 있음
Replica C
v41 -> v42 전파 중
지연이 있으면 잠깐 예전 값을 읽을 수 있음
읽기
여러 복제본으로 읽기 요청을 분산하면 한 노드에 모든 조회가 몰리지 않는다.
장애 대응
최신 상태에 가장 가까운 복제본을 승격해 서비스를 이어갈 수 있다.
주의점
복제 지연이 있으면 노드마다 보이는 시점이 잠깐 달라질 수 있으므로, 어떤 노드를 읽을지와 최신성 요구를 함께 설계해야 한다.
복제의 핵심은 사본 수를 늘리는 것보다, 최신 기준점전파 지연을 관리해 읽기 확장과 가용성을 얻는 데 있다.