Eventual Consistency¶
Eventual Consistency란?¶
- 분산 데이터베이스 시스템에서 데이터가 즉시 모든 노드에 동기화되지 않지만, 시간이 지나면 결국(eventually) 모든 노드가 동일한 데이터를 갖게 되는 일관성 모델
Eventual Consistency - 허용 가능한 경우 (Tolerable)¶
예시: Twitter (소셜 미디어)¶
- 유럽에 Primary 데이터베이스가 있고, 호주에 Replica 데이터베이스가 있다
- 유럽의 사용자가 트윗을 작성하면 Primary DB에 저장된다
- 이 데이터는 호주의 Replica DB로 비동기적으로 복제된다
- 복제가 완료되기 전까지 호주의 사용자는 해당 트윗을 볼 수 없다
- 잠시 후 복제가 완료되면 호주의 사용자도 동일한 트윗을 볼 수 있다
왜 허용 가능한가? - 소셜 미디어에서 몇 초~몇 분의 지연은 사용자 경험에 큰 영향을 미치지 않음 - 트윗의 좋아요 수가 일시적으로 다르게 보여도 치명적이지 않음
Eventual Consistency - 허용 불가능한 경우 (Intolerable)¶
예시: 전 세계에 분산된 시스템¶
- 전 세계 여러 지역에 데이터베이스 노드가 분산되어 있을 때
- 모든 노드가 서로 다른 데이터를 가지고 있는 상태가 치명적인 문제를 일으키는 경우
왜 허용 불가능한가? - 금융 시스템: 계좌 잔액이 노드마다 다르면 이중 출금 등의 문제 발생 - 재고 관리: 재고가 0인데 다른 노드에서는 재고가 있다고 표시 → 초과 판매 - 예약 시스템: 같은 좌석이 여러 지역에서 동시에 예약될 수 있음
이런 경우에는 Strong Consistency (강한 일관성)가 필요하다.
Eventual Consistency vs Strong Consistency¶
| 항목 | Eventual Consistency | Strong Consistency |
|---|---|---|
| 동기화 시점 | 시간이 지나면 일관성 보장 | 즉시 일관성 보장 |
| 성능 | 높음 (비동기 복제) | 낮음 (동기 복제) |
| 가용성 | 높음 | 상대적으로 낮음 |
| 적합한 사례 | 소셜 미디어, 캐시, DNS | 금융, 예약, 재고 관리 |
| 데이터 정확성 | 일시적 불일치 허용 | 불일치 허용하지 않음 |