Consistency
- 분산 시스템 및 데이터베이스의 맥락에서 Consistency란 시스템의 모든 복제본 또는 노드가 지정된 규칙 또는 제약 조건을 준수하면서 데이터에 대한 동일한 보기를 유지하도록 보장하는 속성
- 이는 데이터가 여러 위치나 노드에 분산되어 있더라도 시스템 전체에서 데이터가 일관성 있고 올바른 상태로 유지되도록 보장한다.
Consistency가 필요한 이유
데이터 정확성
- 데이터가 정확하고 충돌하는 값이 없음을 보장한다. 일관되지 않은 데이터는 잘못된 결정, 계산 또는 조치로 이어질 수 있으며, 이는 금융 시스템, 의료 또는 전자 상거래와 같은 중요한 애플리케이션에서 심각한 결과를 초래할 수 있다.
데이터 일관성
- 일관성은 관련 데이터 항목이나 기록이 논리적으로 일관성을 유지하도록 보장한다. 예를 들어, 뱅킹 애플리케이션에서 사용자의 계좌 잔액이 업데이트되면 사용자가 한 복제본에서 돈을 인출하고 나중에 다른 복제본에서 다른 잔액을 찾는 시나리오를 피하기 위해 모든 복제본에 즉시 반영되어야 한다.
안정적인 작업
- Strong Consistency룰 통해 여러 동시 수정으로 인해 데이터 충돌이 발생할 위험 없이 읽기-수정-쓰기 시퀀스와 같은 작업이 올바르게 수행되도록 보장한다.
시스템 예측 가능성
- 일관된 시스템은 보다 예측 가능하게 작동하고 추론하기가 더 쉽다. 개발자는 애플리케이션을 설계하고 구현할 때 데이터 일관성 보장을 신뢰할 수 있다.
트랜잭션 무결성
- 많은 시스템에서 트랜잭션에는 원자 단위로 처리되어야 하는 여러 작업이 포함되며 일관성은 트랜잭션 내의 모든 작업이 성공적으로 실행되거나 그 중 아무것도 실행되지 않도록 보장하여 부분적이거나 불완전한 업데이트를 방지한다.
협업 및 확장
- 분산 시스템에는 사용자 요청 및 데이터 업데이트를 처리하기 위해 함께 작동하는 여러 노드가 포함되는 경우가 많은데 일관성은 이러한 노드가 마치 하나의 응집력 있는 시스템인 것처럼 효과적으로 협력하고 신뢰할 수 있는 결과를 생성할 수 있도록 보장한다.
Strong Consistency

- 액세스하는 노드에 관계없이 시스템의 모든 노드가 동시에 동일한 데이터를 볼 수 있도록 보장하는 분산 시스템의 속성
- 즉, 쓰기 작업이 수행되면 모든 노드의 모든 후속 읽기 작업은 가장 최근 쓰기 값을 반환
- 이는 작업의 선형 순서가 보장되며 시스템이 마치 하나의 일관된 개체인 것처럼 작동한다.
Eventual Consistency

- 분산 컴퓨팅에 쓰이는 일관성 모델의 하나로, 데이터 항목에 새로운 업데이트가 없으면 궁극적으로 해당 항목에 대한 모든 접근들은 마지막으로 업데이트된 값을 반환하는 것을 비공식적으로 보장하는 고가용성을 달성
- 시간이 지남에 따라 시스템은 일관성을 향해 수렴되지만 일시적인 기간 동안 다른 데이터 센터에 액세스하는 사용자는 다른 버전의 데이터를 관찰할 수 있다. (Eventual Consistency의 특징적 동작)
- 시스템은 업데이트가 결국 전파되고 모든 노드가 일관된 상태에 도달하도록 보장하지만 특정 순간에 노드 간에 일시적인 불일치가 있을 수 있다.
Strong Consistency vs Eventual Consistency
Strong Consistency와 Eventual Consistency 간의 선택에는 분산 시스템의 특정 요구 사항 및 특성에 따라 상당한 절충이 필요함
아래에서 두 가지 모델의 장단점을 비교한다.
데이터 정확성
- Strong Consistency : 모든 노드가 동시에 동일한 데이터를 볼 수 있도록 보장하여 즉각적인 데이터 정확성과 무결성을 보장. 사용자는 항상 가장 최근에 쓴 내용을 읽을 수 있으며 오래되거나 충돌하는 값이 없음.
- Eventual Consistency : 일시적으로 노드의 불일치를 허용하여 수렴이 발생할 때까지 오래된 데이터를 읽을 수 있다. 이로 인해 수렴 프로세스 중에 사용자가 오래된 값을 볼 가능성이 있음.
성능
- Strong Consistency : Strong Consistency를 달성하려면 노드 간 조정 및 통신이 향상되어 읽기 및 쓰기 작업의 대기 시간이 길어지는 경우가 많다. 복제본 전체에 걸쳐 동기식 업데이트가 필요하기 때문에 시스템에서 더 많은 경합과 느린 응답이 발생할 수 있다.
- Eventual Consistency : write propagation의 비동기성과 조정 오버헤드 감소를 통해 읽기 및 쓰기 작업의 대기 시간을 줄이고 처리량을 높일 수 있다. 시스템을 더욱 쉽게 확장하고 더 많은 수의 동시 요청을 처리할 수 있다.
가용성
- Strong Consistency : 네트워크 파티션 또는 노드 장애 중에 Strong Consistency를 유지하면 읽기 또는 쓰기 작업에 필요한 복제본 수에 도달하지 못할 경우 가용성이 저하될 수 있다. 이러한 시나리오에서는 시스템이 가용성보다 일관성을 우선시함.
- Eventual Consistency : 네트워크 파티션 및 노드 장애 시 가용성을 강조. 복제본은 독립적으로 작동할 수 있으므로 일부 노드에 연결할 수 없는 경우에도 시스템은 읽기 및 쓰기 작업에 계속 사용할 수 있다.
사용 사례
- Strong Consistency : 금융 시스템, 전자 상거래 플랫폼 및 중요한 비즈니스 애플리케이션과 같이 데이터 무결성과 일관성이 중요한 시나리오에 가장 적합
- Eventual Consistency : 소셜 미디어 플랫폼, 콘텐츠 배포 네트워크, 협업 시스템과 같이 실시간 일관성이 중요하지 않고 시스템 가용성과 확장성이 더 중요한 애플리케이션에 적합
참고문헌 : https://medium.com/@abhirup.acharya009/strong-consistency-vs-eventual-consistency-19ce6f87c112