이 글은 책 내용을 토대로 작성하였습니다.
Question
-
리더 기반 복제 시스템에서 쓰기 후 읽기 일관성은 어떻게 구현할 수 있을까?
책에서는 다양한 케이스를 예시로 들었지만
이 글에서는 2가지 케이스만 알아보자.
첫 번째 방법
-
사용자가 수정한 내용을 읽을 때는 리더에서 읽는다.
그 밖에는 팔로워에서 읽는다.
-
예를 들어 SNS에서 사용자 프로필 정보는
보통 다른 사람이 아닌 프로필 소유자만 편집할 수 있다.
-
따라서 항상 사용자 소유의 프로필은 리더에서 읽고
다른 사용자의 프로필은 팔로워에서 읽는 간단한 규칙을 사용한다.
두 번째 방법
-
많은 사용자가 편집할 가능성이 있다면
리더에서 읽을지 여부를 결정하기 위해 다른 기준을 사용해야 한다.
-
예를 들어 마지막 갱신 시각을 찾아서
마지막 갱신 후 1분 동안은 리더에서 모든 읽기를 수행한다.
-
또한 팔로워에서 복제 지연을 모니터링해
리더보다 1분 이상 늦은 모든 팔로워에 대한 질의를 금지할 수 있다.
Suumary
-
실제 프로덕트를 개발할 때 유용하게 사용할 수 있는 좋은 팁이라 생각이 든다.
-
다만 두 번째 방법을 구현한다면
코드가 굉장히 더러워지지 않을까?란 생각이 들어서
실무에 도입해야한다면 살짝 멈칫하게 될 거 같다.
Refernece
- 데이터 중심 애플리케이션 설계 - p165