Gidhub BE Developer

[데이터 중심 애플리케이션 설계] 5장. 복제 : 쓰기 후 읽기 일관성 (Read After Write)

2024-06-17
goodGid

이 글은 내용을 토대로 작성하였습니다.

Question

  • 리더 기반 복제 시스템에서 쓰기 후 읽기 일관성은 어떻게 구현할 수 있을까?

    책에서는 다양한 케이스를 예시로 들었지만

    이 글에서는 2가지 케이스만 알아보자.


첫 번째 방법

  • 사용자가 수정한 내용을 읽을 때는 리더에서 읽는다.

    그 밖에는 팔로워에서 읽는다.

  • 예를 들어 SNS에서 사용자 프로필 정보는

    보통 다른 사람이 아닌 프로필 소유자만 편집할 수 있다.

  • 따라서 항상 사용자 소유의 프로필은 리더에서 읽고

    다른 사용자의 프로필은 팔로워에서 읽는 간단한 규칙을 사용한다.


두 번째 방법

  • 많은 사용자가 편집할 가능성이 있다면

    리더에서 읽을지 여부를 결정하기 위해 다른 기준을 사용해야 한다.

  • 예를 들어 마지막 갱신 시각을 찾아서

    마지막 갱신 후 1분 동안은 리더에서 모든 읽기를 수행한다.

  • 또한 팔로워에서 복제 지연을 모니터링해

    리더보다 1분 이상 늦은 모든 팔로워에 대한 질의를 금지할 수 있다.


Suumary

  • 실제 프로덕트를 개발할 때 유용하게 사용할 수 있는 좋은 팁이라 생각이 든다.

  • 다만 두 번째 방법을 구현한다면

    코드가 굉장히 더러워지지 않을까?란 생각이 들어서

    실무에 도입해야한다면 살짝 멈칫하게 될 거 같다.


Refernece


Index