복제의 필요성

노드 내결함성 + 확장성(단일 장비에서 감당하지 못하는 요청을 처리) + 지연 시간(사용자에게 지리적으로 더 가까운 복제 서버를 위치시킴)

읽기 확장 아키텍처?

<aside> 💡 읽기 전용 질의는 어떤 복제 서버에서도 가능 ****→ 많은 팔로워 간 읽기 요청을 분산하면 가능

</aside>

<aside> 💡 장점 : 리더의 부하를 없애고 근처 복제 서버에서 읽기 요청을 처리 가능

</aside>

<aside> 💡 단점: 비동기식 복제에서만 동작

</aside>

최종적 일관성(Eventual Transaction, Consistency)이란?

비동기 팔로워에서 데이터를 읽을 때 팔로워가 뒤처진다면 지난 정보를 볼 수도 있다. 이 상황은 db에 명확하게 불일치가 발생하고 리더와 팔로워가 다른 결과를 볼 수 있다. db에 쓰기를 멈추고 잠시동안 기다리면 팔로워와 리더가 일치하게 된다.

복제 지연

자신이 쓴 내용 읽기

<aside> 💡 사용자가 쓰기를 한 다음 새로운 내용이 반영되지 않은 복제 서버에서 데이터를 읽을 시 문제 발생

</aside>

해결: 쓰기 후 읽기 일관성(read-after-write)

사용자가 페이지를 재로딩했을 때 항상 자신이 제출한 모든 갱신을 볼 수 있음을 보장(다른 사람은 보장X)

마지막 갱신 시각을 찾아 마지막 갱신 후 1분 동안은 리더에서 모든 읽기를 수행한 후 팔로워에서 모니터링 하여 1분 이상 늦은 팔로워에 대한 질의 금지