Skip to content

Commit

Permalink
Write SD Post " [데이터 중심 애플리케이션 설계] 5장. 복제 : 쓰기 후 읽기 일관성 (Read After W…
Browse files Browse the repository at this point in the history
…rite) "
  • Loading branch information
goodGid committed Jun 17, 2024
1 parent 4e84964 commit 7aa8ec1
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions _posts/2024-06-17-SD-Replication-Read-After-Write.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
layout: post
title: " [데이터 중심 애플리케이션 설계] 5장. 복제 : 쓰기 후 읽기 일관성 (Read After Write) "
categories: SystemDesign
author: goodGid
---
* content
{:toc}

> 이 글은 [](https://book.naver.com/bookdb/book_detail.nhn?bid=13483879) 내용을 토대로 작성하였습니다.
## Question

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

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

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



---

### 첫 번째 방법

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

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

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

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

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

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

---

### 두 번째 방법

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

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

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

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

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

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


---

## Suumary

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

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

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

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

---

## Refernece

* [데이터 중심 애플리케이션 설계](https://book.naver.com/bookdb/book_detail.nhn?bid=13483879) - p165

0 comments on commit 7aa8ec1

Please sign in to comment.