콘텐츠로 이동

Eventual Consistency

Eventual Consistency란?

  • 분산 데이터베이스 시스템에서 데이터가 즉시 모든 노드에 동기화되지 않지만, 시간이 지나면 결국(eventually) 모든 노드가 동일한 데이터를 갖게 되는 일관성 모델

Eventual Consistency - 허용 가능한 경우 (Tolerable)

예시: Twitter (소셜 미디어)

  1. 유럽에 Primary 데이터베이스가 있고, 호주에 Replica 데이터베이스가 있다
  2. 유럽의 사용자가 트윗을 작성하면 Primary DB에 저장된다
  3. 이 데이터는 호주의 Replica DB로 비동기적으로 복제된다
  4. 복제가 완료되기 전까지 호주의 사용자는 해당 트윗을 볼 수 없다
  5. 잠시 후 복제가 완료되면 호주의 사용자도 동일한 트윗을 볼 수 있다

왜 허용 가능한가? - 소셜 미디어에서 몇 초~몇 분의 지연은 사용자 경험에 큰 영향을 미치지 않음 - 트윗의 좋아요 수가 일시적으로 다르게 보여도 치명적이지 않음


Eventual Consistency - 허용 불가능한 경우 (Intolerable)

예시: 전 세계에 분산된 시스템

  • 전 세계 여러 지역에 데이터베이스 노드가 분산되어 있을 때
  • 모든 노드가 서로 다른 데이터를 가지고 있는 상태가 치명적인 문제를 일으키는 경우

왜 허용 불가능한가? - 금융 시스템: 계좌 잔액이 노드마다 다르면 이중 출금 등의 문제 발생 - 재고 관리: 재고가 0인데 다른 노드에서는 재고가 있다고 표시 → 초과 판매 - 예약 시스템: 같은 좌석이 여러 지역에서 동시에 예약될 수 있음

이런 경우에는 Strong Consistency (강한 일관성)가 필요하다.


Eventual Consistency vs Strong Consistency

항목 Eventual Consistency Strong Consistency
동기화 시점 시간이 지나면 일관성 보장 즉시 일관성 보장
성능 높음 (비동기 복제) 낮음 (동기 복제)
가용성 높음 상대적으로 낮음
적합한 사례 소셜 미디어, 캐시, DNS 금융, 예약, 재고 관리
데이터 정확성 일시적 불일치 허용 불일치 허용하지 않음