Consistency Model

분산 컴퓨팅에서 일관성 모델은 분산 시스템 내 데이터의 일관성을 유지하기 위한 규칙과 매커니즘을 정의해둔 것이다.

이는 분산 환경에서 데이터가 여러 노드에 걸쳐 저장되고 처리되는 상황에서 발생 가능한 데이터의 불일치를 해결하거나 최소화하기 위한 것이다.

분산 시스템의 설계는 CAP이론과 같은 제약 속에서 일관성, 가용성, 분할 내성을 균형 있게 고려해야한다.

Strong Consistency

  • 모든 클라이언트가 동일한 시점에 동일한 데이터를 보장받는다. 즉, 특정 노드에서 데이터를 업데이트하면 모든 노드가 즉시 해당 변경을 반영하는 모델이다.
  • 데이터의 정확성과 신뢰성이 높다.
  • 그러나 네트워크 지연이 커지고, 가용성의 저하가 우려된다.
  • 실제로 금융 시스템과 같이 원자적 트랜잭션이 가용성보다 중요시되는 환경에서 사용된다.

Strong Consistency에서 가용성 저하가 우려되는 이유

  1. 동기화 과정의 부담

Strong Consistency는 모든 노드가 동일한 데이터를 유지하도록 보장해야한다. 그러므로 데이터 업데이트가 발생할 때, 모든 노드에 변경 사항이 전파될 때가지 이외에 작업을 차단할 수밖에 없다. 이 과정에서 다음 문제가 발생할 수 있다.

  • 전체 시스템의 동기화 지연: 응답 시간의 지연을 초래함.
  • 작업 중단: 작업 중단으로 인한 가용성 저하.
  1. 네트워크 분할의 영향

CAP이론에 따면, 네트워크 분할이 발생하면 시스템은 Consistency와 Availability 중 하나를 포기해야한다. Strong Consistency를 선택한다면 최신 데이터를 보장하지 않는 경우에 외부 요청에 대해 전부 거부하거나 타임아웃을 발생시키게 된다.

  1. 고성능 시스템에서의 제약

Strong Consistency를 유지하려면 분산된 모든 노드 간 상태를 즉각 동기화해야하므로, 노드가 많아지거나 물리적/지리적으로 분산되는 등의 다양한 경우를 온전히 고려하여 즉각적인 동기화를 수행하지 못할 수 있다.

  1. 트랜잭션 관리의 복잡성

Strong Consistency를 위해서는 트랜잭션 관리와 동시성 제어가 엄격히 이루어야한다. 이를 위해서는 복잡한 합의 알고리즘이 필요하며(Raft, Paxos 등), 이는 추가적인 계산 및 통신 비용 증가를 초래한다. 또한, 장애 발생 시 데이터 복구 및 일관성 유지에 더욱 시간이 걸릴 수 있다.

Weak Consistency

  • 업데이트가 모든 노드에 즉시 반영되지 않을 수 있다. 클라이언트는 최신 데이터가 아닌 데이터를 읽을 수 있다.
  • 높은 성능과 가용성을 제공한다.
  • 그러나, 데이터의 최신을 보장하지 못한다.
  • 일반적으로 성능이 중요시되는 대규모 분산 시스템에서 사용된다.

Eventual Consistency

  • 시간이 지나게 되면 모든 노드의 동일한 상태 수렴을 보장한다. 즉각적인 일관성은 없으나, 네트워크 안정화 이후에는 일관성을 달성한다.
  • 높은 가용성과 확장성을 제공한다.
  • 그러나, 일시적인 데이터 불일치는 발생 가능하다.
  • SNS, DNS, DynamoDB, Cassandra 등등

Sequential Consistency

  • 모든 프로세스가 동일한 순서로 연산을 관찰하도록 보장한다.
  • Strong Consistency보다는 약하지만 마찬가지로 동기화에 초점을 두는 강력한 모델이다.
  • 프로세스 간 순서 보장이 중요한 시스템에서 사용된다.

Causal Consistency

  • 특정 연산 간의 인과 관계를 보장한다. A라는 연산이 B라는 연산에 영향을 미치는 경우, 모든 클라이언트는 A이후에 B를 관찰하게 된다.
  • 협업 도구 등에서 사용된다(Google Docs).

Session Consistency

  • 동일 세션 내에는 항상 일관된 데이터를 읽도록 보장한다. 부분적으로 Strong Consistency를 가져가는 모델이다.
  • 사용자별 데이터 세션 관리가 필요한 곳에서 사용한다.

일관성 모델 선택 시 주의사항

  1. 애플리케이션 요구사항
  • 금융 거래와 같은 고신뢰 환경에서는 Strong Consistency가 필수적이다.
  • 소셜 미디어와 같이 가용성과 확장성이 요구되는 환경에서는 Eventual Consistency를 선호한다.
  1. 성능 요구사항
  • Strong Consistency는 성능 저하를 불러올 수 있음을 염두한다.
  1. 네트워크 환경
  • 네트워크 지연이나 장애 가능성이 높은 경우 Weak, Eventual Consistency가 적합하다.