Consistency Models
분산 시스템에서의 일관성 패턴 (Consistency Patterns) 은 데이터 일관성을 유지하기 위한 다양한 전략을 말한다. 이러한 패턴은 시스템의 성능, 가용성, 지연 시간 등과의 균형을 고려하여 선택된다. 주요 패턴으로는 강한 일관성 (Strong Consistency), 약한 일관성 (Weak Consistency), 최종 일관성 (Eventual Consistency), 인과 일관성 (Causal Consistency) 등이 있으며, 각 패턴은 특정한 사용 사례와 요구 사항에 적합하다.
핵심 개념
일관성 패턴은 분산 시스템에서 데이터의 일관성을 유지하기 위한 설계 전략이다. 분산 시스템이란 여러 노드 (서버, 컴퓨터) 로 구성되어 네트워크를 통해 서로 통신하며 작동하는 시스템을 말한다. 이런 환경에서 데이터 일관성을 유지하는 것은 중요한 과제이다.
시스템의 요구 사항에 따라 강한 일관성부터 최종 일관성까지 다양한 수준의 일관성을 선택할 수 있으며, 이는 시스템의 성능, 가용성, 지연 시간 등에 영향을 미친다.
일관성 패턴의 기본 개념
분산 시스템 (Distributed System): 네트워크로 연결된 여러 컴퓨터가 메시지를 교환하며 공동 목표를 달성하는 시스템. 각 컴포넌트는 애플리케이션의 일부분을 담당한다.
CAP 정리 (CAP Theorem): 분산 시스템에서 일관성 (Consistency), 가용성 (Availability), 분할 내성 (Partition Tolerance) 세 가지 특성을 동시에 모두 만족시킬 수 없다는 이론. 셋 중 최대 두 가지만 보장할 수 있다.
데이터 복제 (Data Replication): 동일한 데이터를 여러 노드에 복사하여 저장하는 기술로, 가용성과 내결함성을 높인다.
일관성 모델 (Consistency Model): 분산 시스템과 그 위에서 실행되는 애플리케이션 간의 계약으로, 시스템이 제공하는 일관성 보장의 수준을 정의한다.
일관성 패턴의 주요 유형
강한 일관성 (Strong Consistency): 데이터 업데이트 후 모든 후속 읽기 작업이 즉시 최신 데이터를 반환한다. 데이터는 동기적으로 복제되며 모든 노드가 동시에 업데이트된다.
약한 일관성 (Weak Consistency): 데이터 업데이트 후 후속 읽기 작업이 최신 데이터를 볼 수도 있고, 보지 못할 수도 있다. 가용성과 성능을 높이지만 일관성은 낮다.
최종 일관성 (Eventual Consistency): 약한 일관성의 한 형태로, 데이터 업데이트 후 일정 시간이 지나면 모든 노드가 최종적으로 일관된 상태에 도달한다. 비동기적 복제 방식을 사용한다.
인과적 일관성 (Causal Consistency): 관련된 이벤트 (원인 - 결과) 는 모든 노드에서 동일한 순서로 관찰되지만, 관련 없는 이벤트는 특정 순서 없이 관찰될 수 있다.
선형화 가능성 (Linearizability): 강한 일관성의 변형으로 모든 작업이 원자적이고 순차적으로 실행되는 것처럼 보이게 한다.
순차적 일관성 (Sequential Consistency): 모든 노드가 작업의 순서에 동의하는 모델이다. 각 프로세스의 작업은 프로그램 순서대로 실행되지만, 다른 프로세스 간의 순서는 정의되지 않는다.
충돌 없는 복제 데이터 타입 (Conflict-free Replicated Data Types, CRDTs): 강한 최종 일관성을 제공하는 데이터 구조로, 네트워크 파티션과 높은 지연 시간에도 불구하고 동시 업데이트를 처리할 수 있다.
이러한 핵심 개념들은 분산 시스템에서 데이터 일관성을 관리하는 기본 틀을 제공하며, 시스템 설계자가 특정 사용 사례에 가장 적합한 일관성 모델을 선택할 수 있게 한다.
목적 및 필요성
일관성 패턴의 주요 목적과 필요성은 다음과 같다:
- 데이터 무결성 보장: 분산 시스템에서 여러 서버에 걸쳐 데이터의 일관성과 정확성을 유지한다.
- 비즈니스 로직 안정성: 금융 거래, 재고 관리 등 중요한 비즈니스 프로세스가 정확한 데이터를 기반으로 동작하도록 보장한다.
- 사용자 경험 개선: 사용자가 일관된 데이터를 보게 함으로써 혼란을 방지하고 신뢰성을 높인다.
- 시스템 확장성 지원: 분산 시스템이 확장될 때도 데이터 일관성을 유지할 수 있는 방법을 제공한다.
- 네트워크 파티션 대응: 네트워크 장애나 분할이 발생했을 때도 시스템이 계속 작동할 수 있는 방법을 정의한다.
- 동시성 문제 해결: 여러 사용자나 프로세스가 동시에 데이터를 수정할 때 발생할 수 있는 충돌을 관리한다.
주요 기능 및 역할
일관성 패턴의 주요 기능과 역할은 다음과 같다:
- 데이터 복제 전략 정의: 데이터가 여러 노드에 어떻게 복제되고 동기화될지 결정한다.
- 읽기/쓰기 작업 조정: 분산 환경에서 읽기와 쓰기 작업의 순서와 가시성을 조정한다.
- 충돌 감지 및 해결: 동시 업데이트로 인한 데이터 충돌을 감지하고 해결하는 메커니즘을 제공한다.
- 시스템 성능과 일관성 간 균형: 시스템의 성능, 가용성, 일관성 사이의 트레이드오프를 관리한다.
- 장애 복구 지원: 노드 장애 발생 시 데이터 일관성을 복구하는 방법을 제공한다.
- 트랜잭션 지원: 분산 환경에서 트랜잭션의 ACID 속성 (원자성, 일관성, 격리성, 지속성) 을 어떻게 지원할지 정의한다.
특징
일관성 패턴의 주요 특징은 다음과 같다:
- 일관성 수준의 다양성: 강한 일관성부터 약한 일관성까지 다양한 수준의 일관성 모델을 제공한다.
- 트레이드오프: 일관성, 가용성, 성능 사이의 트레이드오프를 명확히 한다.
- 비동기/동기 복제: 데이터 복제를 동기적 또는 비동기적으로 수행할 수 있는 옵션을 제공한다.
- 확장성: 시스템이 확장됨에 따라 일관성을 유지하는 방법을 정의한다.
- 적응성: 다양한 시스템 요구사항과 사용 사례에 맞게 적응할 수 있다.
- 복잡성 관리: 분산 시스템의 고유한 복잡성을 관리하는 패턴을 제공한다.
핵심 원칙
일관성 패턴의 핵심 원칙은 다음과 같다:
- CAP 정리 준수: 일관성, 가용성, 분할 내성 중 최대 두 가지만 동시에 보장할 수 있다는 원칙을 따른다.
- 데이터 신뢰성 보장: 분산 환경에서도 데이터의 신뢰성을 보장한다.
- 일관성과 성능 균형: 일관성 수준과 시스템 성능 사이의, 그리고 가용성 사이의 균형을 맞춘다.
- 장애 내성: 네트워크 파티션이나 노드 장애에도 계속 작동할 수 있다.
- 사용자 경험 고려: 사용자에게 일관된 시스템 동작을 제공한다.
- 비즈니스 요구사항 반영: 비즈니스의 특정 요구사항에 맞는 일관성 모델을 선택한다.
주요 원리 및 작동 원리
일관성 패턴의 작동 원리는 패턴 유형에 따라 다르다:
일관성 모델 | 핵심 특징 | 작동 원리 요약 | 구현 기술 예시 |
---|---|---|---|
강한 일관성 (Strong Consistency) | 항상 최신 데이터 반환 동기적 복제 | - 쓰기 시 모든 노드가 동기적으로 업데이트 - 읽기는 항상 최신 데이터 반환 | 단일 리더 복제 쿼럼 복제 2 단계 커밋 (2PC) |
약한 일관성 (Weak Consistency) | 최신 보장 없음 비동기적 복제 | - 쓰기 즉시 완료 응답 반환 - 다른 노드엔 나중에 전파 - 읽기 시 오래된 값 가능 | Write-Behind Cache 비동기 복제 |
최종 일관성 (Eventual Consistency) | 시간이 지나면 동일한 상태로 수렴 | - 쓰기 후 로컬에서 완료 - 다른 노드로 비동기 전파 - 결국 동일한 데이터로 수렴 | 멀티 리더 복제 리더리스 복제 CRDTs |
인과적 일관성 (Causal Consistency) | 인과 순서 보장 | - 원인 → 결과 순서 유지 - 관련 이벤트는 순서 고정 - 무관 이벤트는 순서 유연 | 벡터 클럭 버전 벡터 인과 히스토리 |
선형화 가능성 (Linearizability) | 실시간 순서 보장 원자적 연산 | - 쓰기 완료 직후의 읽기에서 최신 값 반환 - 단일 시스템처럼 보임 | 단일 리더 Raft / Paxos 합의 분산 락 |
순차적 일관성 (Sequential Consistency) | 전체 순서 유지 실시간과는 무관 | - 프로세스 별 연산은 순서대로 - 전체 노드는 동일 순서로 관찰 - 실시간은 고려하지 않음 | 타임스탬프 정렬 2 단계 락 벡터 클럭 |
CRDTs (Conflict-free Replicated Data Types) | 충돌 없는 병합 가능 | - 수학적 특성 활용 (멱등성, 교환법칙 등) - 병합 시 일관된 결과 자동 수렴 | 상태 기반 CRDT 작업 기반 CRDT |
구조 및 아키텍처
일관성 패턴은 다양한 구조와 아키텍처를 통해 구현된다:
시스템 유형 | 기능 및 역할 | 사용 사례 |
---|---|---|
단일 리더 복제 (Single-Leader Replication) | - 하나의 리더 노드만 쓰기 처리 - 리더가 변경사항을 팔로워에 복제 - 읽기는 모든 노드에서 가능 | - 강한 일관성이 필요한 경우 - 쓰기 빈도가 낮은 시스템 |
멀티 리더 복제 (Multi-Leader Replication) | - 여러 리더 노드가 쓰기 가능 - 리더 간 변경사항을 동기화 - 읽기는 모든 노드에서 가능 | - 다중 데이터 센터 환경 - 오프라인 클라이언트 지원 필요 시 |
리더리스 복제 (Leaderless Replication) | - 모든 노드가 읽기/쓰기 가능 - 클라이언트가 직접 여러 노드에 쓰기 수행 - 쿼럼을 통해 일관성 보장 | - 고가용성이 중요한 시스템 - 짧은 쓰기 지연이 필요한 경우 |
쿼럼 기반 시스템 (Quorum-Based Systems) | - W + R > N 조건 만족 시 일관성 보장 - W 개 노드에 쓰기, R 개 노드에서 읽기 수행 - W, R 조정으로 유연한 조율 가능 | - 일관성과 가용성 간 균형이 필요한 시스템 - 장애 허용 시스템 |
합의 알고리즘 기반 시스템 (Consensus-Based Systems) | - Paxos, Raft 등 합의 알고리즘 사용 - 노드 간 상태 변경에 대한 합의 수행 - 강한 일관성 보장 | - 분산 데이터베이스 - 분산 잠금 서비스 - 상태 일관성이 중요한 시스템 |
CRDT 기반 시스템 (CRDT-Based Systems) | - 수학적 특성 (결합성, 교환성 등) 이용 - 충돌 없이 병합 가능 - 강한 최종 일관성 제공 | - 실시간 협업 도구 - 오프라인 편집 기능 - 고지연 네트워크 환경 |
주요 구성 요소
구성 요소 | 기능 및 역할 설명 |
---|---|
복제 관리자 (Replication Manager) | - 복제 프로세스 전체를 관리 - 복제본 간 동기화 조정 - 동기/비동기 복제 전략 실행 |
충돌 감지기 (Conflict Detector) | - 동시성 문제로 인한 충돌 감지 - 충돌 상황을 식별하고 보고 - 해결기를 트리거하여 처리 시작 |
충돌 해결기 (Conflict Resolver) | - 감지된 충돌에 대해 해결 전략 적용 - 예: Last-Write-Wins, 사용자 정의 머지 함수 - 일관성 유지 보장 |
버전 관리자 (Version Manager) | - 데이터 버전 추적 - 벡터 클럭, 타임스탬프 활용 - 동시성 및 인과 관계 분석 지원 |
쿼리 라우터 (Query Router) | - 읽기/쓰기 요청을 적절한 노드로 전달 - 일관성 요구사항 기반 라우팅 - 로드 밸런싱 및 장애 조치 기능 포함 |
상태 관리자 (State Manager) | - 노드의 로컬 상태 추적 및 저장 - 상태 변경 기록 및 복구 가능 - 상태 동기화와 정합성 보장 |
통신 레이어 (Communication Layer) | - 노드 간 데이터 및 메시지 전송 담당 - 네트워크 장애 감지 및 처리 - 신뢰할 수 있는 메시지 전달 보장 |
일관성 모니터 (Consistency Monitor) | - 시스템의 전체 일관성 수준 모니터링 - 위반 사항 감지 및 경고 - 운영 지표 수집 및 대시보드 제공 |
도전 과제
일관성 패턴을 구현하고 적용할 때 다양한 도전 과제가 있다:
번호 | 도전 과제 | 설명 |
---|---|---|
1 | CAP 정리의 제약 | 일관성 (Consistency), 가용성 (Availability), 분할 내성 (Partition Tolerance) 중 최대 2 가지만 동시에 보장 가능 |
2 | 네트워크 지연 및 파티션 | 분산 시스템 환경에서는 지연과 네트워크 단절 (Network Partition) 이 필연적으로 발생하므로, 설계 시 이를 고려해야 함 |
3 | 복잡한 충돌 해결 | 동시 업데이트로 발생하는 데이터 충돌을 자동으로 해결하는 것은 로직과 정책 측면에서 매우 복잡함 |
4 | 확장성 문제 | 노드 수가 증가할수록 일관성 유지에 필요한 메시지 수와 동기화 비용이 기하급수적으로 증가 |
5 | 메타데이터 관리 | 벡터 클럭이나 버전 벡터 등 일관성 유지를 위한 메타데이터가 커져서 관리 및 성능에 부담이 됨 |
6 | 지연 및 성능 영향 | 강한 일관성을 유지할 경우 쓰기 지연 (latency) 과 처리량 저하가 발생할 수 있음 |
7 | 복잡한 프로그래밍 모델 | 약한 일관성 하에서는 동시성, 충돌 관리 등을 개발자가 직접 고려해야 하므로 코드가 복잡해짐 |
8 | 테스트 및 디버깅 어려움 | 분산 환경의 일관성 문제는 재현이 어렵고, 원인을 찾기도 힘들어 테스트와 디버깅에 시간과 비용이 많이 듦 |
9 | 일관성 수준 선택 | 애플리케이션 특성과 요구사항에 따라 적절한 일관성 모델 (Causal, Eventual, Strong 등) 을 선택하는 것이 어렵고 중요함 |
10 | 시스템 진화 관리 | 시스템이 성장하고 기능이 추가됨에 따라 일관성 요구사항이 변경될 수 있으며, 이에 유연하게 대응할 수 있는 구조가 필요 |
분류에 따른 종류 및 유형
분류 기준 | 유형 | 특징 | 적용 사례 |
---|---|---|---|
일관성 강도 | 강한 일관성 (Strong Consistency) | 모든 노드가 항상 최신 데이터를 보고, 쓰기 후 즉시 일관성 보장 | 금융 시스템, 재고 관리, 예약 시스템 |
약한 일관성 (Weak Consistency) | 데이터 업데이트가 즉시 전파되지 않고, 일관성에 대한 보장이 적음 | 게임 플랫폼, 실시간 분석 시스템 | |
최종 일관성 (Eventual Consistency) | 시간이 지나면 모든 노드가 최종적으로 일관된 상태에 도달 | 소셜 미디어, 이메일 시스템, DNS | |
인과적 일관성 (Causal Consistency) | 인과 관계가 있는 작업은 모든 노드에서 동일한 순서로 관찰 | 채팅 애플리케이션, 실시간 협업 도구 | |
순차적 일관성 (Sequential Consistency) | 모든 노드가 동일한 순서로 작업을 관찰하지만 실시간 순서는 보장하지 않음 | 분산 파일 시스템, Git 등 버전 관리 시스템 | |
선형화 가능성 (Linearizability) | 모든 작업이 원자적이고 순차적으로 실행되는 것처럼 보이게 함 | 분산 잠금 서비스, 분산 리더 선출 | |
복제 전략 | 단일 리더 복제 (Single-Leader Replication) | 하나의 노드만 쓰기를 처리하고 다른 노드에 변경사항 전파 | 관계형 데이터베이스 (MySQL, PostgreSQL) |
멀티 리더 복제 (Multi-Leader Replication) | 여러 노드가 쓰기를 처리하고 서로 동기화 | 다중 데이터 센터 데이터베이스, 오프라인 지원 앱 | |
리더리스 복제 (Leaderless Replication) | 모든 노드가 쓰기를 처리하고 쿼럼 기반으로 동작 | NoSQL 데이터베이스 (Cassandra, Dynamo) | |
충돌 해결 방식 | 마지막 쓰기 승리 (Last-Write-Wins) | 타임스탬프가 가장 최근인 쓰기가 우선 | DNS, 캐시 시스템 |
벡터 클럭 기반 (Vector-Clock-Based) | 벡터 클럭을 사용해 인과 관계를 추적하고 충돌 해결 | 분산 키 - 값 저장소 (Riak) | |
CRDT 기반 (CRDT-Based) | 수학적 특성을 이용해 충돌을 자동으로 해결 | 실시간 협업 도구 (Google Docs), 오프라인 모바일 앱 | |
애플리케이션 수준 해결 (Application-Level Resolution) | 애플리케이션이 충돌을 감지하고 해결하는 로직 구현 | 전자상거래 플랫폼, 예약 시스템 | |
데이터 접근 패턴 | 쓰기 중심 (Write-Heavy) | 쓰기 작업이 많은 경우에 최적화된 패턴 | 로깅 시스템, 이벤트 스트리밍 플랫폼 |
읽기 중심 (Read-Heavy) | 읽기 작업이 많은 경우에 최적화된 패턴 | 콘텐츠 전송 네트워크, 블로그 플랫폼 | |
읽기 - 쓰기 균형 (Balanced Read-Write) | 읽기와 쓰기가 균형을 이루는 경우의 패턴 | 소셜 미디어 플랫폼, 협업 도구 |
Consistency Pattern(일관성 패턴) 비교
분산 시스템에서 일관성 패턴은 여러 노드에 저장된 데이터의 동기화 방식을 결정하며 데이터의 정확성과 시스템의 성능 사이의 균형을 결정짓는 중요한 요소이다.
일관성의 수준에 따라 Strong Consistency, Linearizability, Sequential Consistency, Causal Consistency, Eventual Consistency, Weak Consistency 등 다양한 모델이 존재하며, 각 패턴은 데이터 일관성 보장 수준, 시스템 성능, 가용성, 구현 복잡성, 데이터의 읽기 및 쓰기 작업의 순서, 가시성 등에서 차이를 보인다.
이러한 모델들은 시스템의 설계 목표, 예를 들어 지연 시간 최소화, 가용성 극대화, 데이터 정확성 보장 등에 따라 선택되어야 하며, 각 모델의 특성과 trade-off 를 이해하는 것이 중요하다.
모델 | 정의 | 장점 | 단점 | 사용 사례 |
---|---|---|---|---|
Strong Consistency | 모든 노드에서 항상 동일한 최신 데이터를 보장 | 데이터 정확성 보장 | 높은 지연 시간, 낮은 가용성 | 금융 거래 시스템, 분산 데이터베이스 |
Linearizability | 각 작업이 실시간 순서에 따라 즉시 반영 | 사용자 직관에 부합, 높은 데이터 일관성 | 높은 구현 복잡도, 성능 저하 가능성 | 분산 락 시스템, 동기화된 캐시 |
Sequential Consistency | 프로세스별 작업 순서를 유지하면서 전체적으로 일관된 순서 보장 | 구현이 비교적 용이, 프로그램 순서 유지 | 실시간 순서 보장 없음, 일부 일관성 저하 가능성 | 멀티스레드 프로그래밍, 공유 메모리 시스템 |
Causal Consistency | 인과 관계가 있는 작업의 순서를 유지 | 높은 가용성, 낮은 지연 시간 | 복잡한 구현, 일부 일관성 저하 가능성 | 소셜 네트워크, 협업 도구 |
Eventual Consistency | 시간이 지나면 모든 노드가 동일한 데이터 상태로 수렴 | 높은 가용성, 낮은 지연 시간 | 일시적인 데이터 불일치 가능성 | DNS 시스템, CDN, NoSQL 데이터베이스 |
Weak Consistency | 특정 조건 하에서만 데이터 일관성 유지 | 높은 성능, 낮은 지연 시간 | 일관성 보장 약함, 복잡한 오류 처리 필요 | 캐시 시스템, 비동기 로그 시스템 |
일관성 강도
주요 항목별 비교
각 일관성 모델은 데이터 동기화 강도, 가용성, 성능, 구현 난이도에 따라 선택이 달라진다.
항목 | Strong Consistency | Linearizability | Sequential Consistency | Causal Consistency | Eventual Consistency | Weak Consistency |
---|---|---|---|---|---|---|
순서 보장 | O | 실시간 순서 보장 | 프로세스 순서 보장 | 인과관계 순서 보장 | X | X |
가용성 | 낮음 | 낮음 | 중간 | 중간 | 높음 | 매우 높음 |
성능 | 낮음 | 낮음 | 중간 | 중간 | 높음 | 매우 높음 |
구현 난이도 | 높음 | 높음 | 중간 | 중간 | 낮음 | 매우 낮음 |
대표 사례 | 은행, 트랜잭션 | 분산 카운터, 리더 선출 | 분산 로그, 캐시 | 채팅, 협업 문서 | SNS, CDN, 캐시 | 로그 수집 |
주요 원리 다이어그램
강점과 약점 비교
모델 | 강점 | 약점 |
---|---|---|
Strong | 데이터 신뢰성, 일관성 최상 | 성능 저하, 가용성 저하, 확장성 한계 |
Linearizability | 실시간 데이터 보장, 단순한 사용성 | 확장성/성능 저하, 장애 시 가용성 낮음 |
Sequential | 순서 일치, 구현 용이 | 실시간성 부족, 일부 상황에서 불일치 가능 |
Causal | 인과관계 보장, 성능/가용성 균형 | 인과관계 추적 비용, 완전한 순서 미보장 |
Eventual | 가용성/확장성/성능 우수 | 임시 불일치, 데이터 충돌/해결 필요 |
Weak | 성능/가용성 극대화, 단순 구현 | 데이터 신뢰성 낮음, 일관성 보장 약함 |
실무 적용 예시
시스템 구성 요소
시스템 구성 요소 | 적용된 일관성 패턴 | 설명 |
---|---|---|
사용자 프로필 조회 | 최종 일관성 | 사용자 경험을 위해 빠른 응답을 제공 |
결제 처리 시스템 | 강한 일관성 | 정확한 거래 처리를 위해 일관성 보장 |
실시간 채팅 | 인과 일관성 | 메시지의 순서를 보장하여 대화의 흐름 유지 |
은행 트랜잭션 | Strong/Linearizability | 모든 거래의 순서와 일관성 보장 필요 |
SNS 피드/캐시 | Eventual | 빠른 응답, 임시 불일치 허용 |
협업 문서/채팅 | Causal | 메시지/수정 순서 중요, 인과관계 보장 |
분산 로그/버전 관리 | Sequential | 전체 순서 일치 필요, 실시간성은 덜 중요 |
로그 수집/분산 캐시 | Weak | 임시 불일치 허용, 성능/확장성 우선 |
산업 분야
산업 분야 | 적용 사례 | 사용된 일관성 패턴 | 적용 이유 및 효과 |
---|---|---|---|
금융 서비스 | 은행 계좌 거래 시스템 | 강한 일관성 | 금융 거래의 정확성과 무결성을 보장하기 위해 사용. 데이터 일관성이 가장 중요한 요소임 |
주식 거래 모니터링 | 최종 일관성 | 실시간 주가 정보 제공 시 짧은 지연은 허용하나 결국 모든 사용자에게 동일한 정보가 제공되어야 함 | |
전자상거래 | 재고 관리 시스템 | 강한 일관성 | 재고 수량의 정확성을 보장하여 과잉 판매를 방지하기 위해 사용 |
쇼핑 카트 및 세션 | 최종 일관성 | 사용자 경험 향상을 위해 빠른 응답 시간 보장, 약간의 일관성 지연은 허용 가능 | |
소셜 미디어 | 뉴스 피드 | 최종 일관성 | 높은 처리량과 빠른 응답 시간이 중요하며, 일시적인 불일치는 허용 가능 |
메시징 플랫폼 | 인과적 일관성 | 메시지 순서가 중요하며, 관련 메시지는 올바른 순서로 표시되어야 함 | |
콘텐츠 제공 | CDN(콘텐츠 전송 네트워크) | 최종 일관성 | 글로벌 스케일의 콘텐츠 전송에서 빠른 응답이 중요하며, 일시적인 불일치는 허용 가능 |
비디오 스트리밍 서비스 | 약한 일관성 | 사용자 경험에 영향을 최소화하기 위해 가용성과 성능 우선 | |
SaaS 플랫폼 | 협업 도구 (문서 편집) | CRDT 기반 최종 일관성 | 동시 편집 지원과 오프라인 작업 가능, 충돌 자동 해결 필요 |
CRM 시스템 | 인과적 일관성 | 고객 데이터 업데이트의 순서와 관계가 중요하며, 데이터 정확성 보장 필요 | |
IoT | 센서 데이터 수집 | 약한 일관성 | 대량의 데이터를 빠르게 수집하는 것이 중요하며, 약간의 데이터 손실은 허용 가능 |
스마트 홈 제어 시스템 | 최종 일관성 | 다양한 기기 간 상태 동기화가 필요하나, 즉각적인 일관성보다 가용성 우선 | |
게임 산업 | 멀티플레이어 게임 | 최종 일관성 + 인과적 일관성 | 플레이어 경험을 위한 낮은 지연 시간과 관련 이벤트의 순서 보존 필요 |
게임 데이터 저장 | 강한 일관성 | 게임 진행 상태, 인벤토리 등의 데이터 손실 방지를 위해 강한 일관성 필요 | |
의료 서비스 | 환자 기록 시스템 | 강한 일관성 | 환자 안전을 위해 의료 데이터의 정확성과 일관성이 가장 중요 |
의료 기기 모니터링 | 인과적 일관성 | 의료 이벤트의 순서와 관계가 중요하며, 관련 이벤트는 올바른 순서로 처리되어야 함 |
활용 사례
사례 1
시나리오: 온라인 쇼핑몰에서의 장바구니 시스템
요구 사항:
- 사용자는 상품을 장바구니에 추가하거나 제거할 수 있어야 함
- 결제 시점에는 장바구니의 상태가 정확해야 함
적용된 일관성 패턴:
- 장바구니 추가/제거: 최종 일관성
- 결제 처리: 강한 일관성
다이어그램:
사례 2
시나리오: 여러 사용자가 동시에 동일한 문서를 편집할 수 있는 실시간 협업 문서 편집 도구 (Google Docs 와 유사한 서비스) 를 구현하는 사례.
- 문제점:
- 여러 사용자가 동시에 동일한 부분을 편집할 때 충돌이 발생할 수 있다.
- 네트워크 지연이나 연결 끊김으로 인해 변경사항이 즉시 전파되지 않을 수 있다.
- 오프라인 상태에서도 작업을 계속할 수 있어야 한다.
- CRDT 를 적용한 해결책:
- 데이터 모델: 문서를 CRDT 중 하나인 Sequence CRDT 로 모델링한다 (예: Yjs, Automerge 등).
- 작동 방식:
- 각 사용자의 편집 작업은 로컬에서 즉시 적용된다.
- 편집 작업은 CRDT 연산으로 변환되어 다른 사용자에게 전파된다.
- 각 사용자는 받은 연산을 자신의 로컬 상태에 적용한다.
- CRDT 의 수학적 특성으로 인해 모든 사용자가 결국 동일한 문서 상태로 수렴한다.
- 오프라인 지원:
- 사용자는 오프라인 상태에서도 문서를 편집할 수 있다.
- 다시 온라인이 되면 변경사항이 자동으로 동기화된다.
- 충돌 해결:
- 동시 삽입 충돌은 각 문자에 고유한 식별자를 할당하여 해결한다.
- 동시 삭제 충돌은 토막 표시 (tombstone) 를 사용하여 해결한다.
- 구현 세부사항:
- 각 편집 작업은 (사용자 ID, 작업 카운터, 작업 유형, 위치, 내용) 형태의 연산으로 표현된다.
- 각 문자는 (사용자 ID, 작업 카운터) 형태의 고유 식별자를 가진다.
- 벡터 클럭을 사용하여 인과 관계를 추적한다.
- 효과:
- 사용자는 네트워크 상태와 관계없이 항상 문서를 편집할 수 있다.
- 충돌이 자동으로 해결되어 일관된 문서 상태를 유지한다.
- 강한 최종 일관성을 보장하여 결국 모든 사용자가 동일한 문서를 보게 된다.
실무에서 효과적으로 적용하기 위한 고려사항 및 주의할 점
고려사항 | 설명 | 권장 사항 |
---|---|---|
비즈니스 요구사항 분석 | 시스템의 비즈니스 요구사항에 따라 적절한 일관성 패턴을 선택해야 함 | - 금융 거래와 같은 중요 데이터는 강한 일관성 적용 - 소셜 미디어 피드와 같은 덜 중요한 데이터는 최종 일관성 적용 |
데이터 특성 분석 | 데이터 유형, 접근 패턴, 수명 주기에 따라 다른 일관성 패턴이 적합할 수 있음 | - 읽기 중심 워크로드: 복제본 사용으로 확장, 최종 일관성 고려 - 쓰기 중심 워크로드: 샤딩 기법, 적절한 파티션 키 선택 |
네트워크 환경 고려 | 네트워크 지연, 대역폭, 신뢰성은 일관성 수준에 큰 영향을 미침 | - 글로벌 시스템: 지역 간 높은 지연 시간 고려, 약한 일관성 선택 - 단일 데이터 센터: 강한 일관성 구현 가능 |
확장성 계획 | 시스템 성장에 따른 일관성 유지 방법 고려 | - 처음부터 확장 계획 수립 - 샤딩, 파티셔닝 전략 설계 - 일관성 모델이 확장에 미치는 영향 분석 |
적절한 도구 선택 | 일관성 요구사항을 지원하는 적절한 데이터베이스 및 도구 선택 | - 강한 일관성: PostgreSQL, Spanner 등 고려 - 최종 일관성: Cassandra, DynamoDB 등 고려 CRDT 필요: Yjs, Automerge, Redis Enterprise 등 고려 |
모니터링 및 측정 | 일관성 수준을 모니터링하고 측정하는 메커니즘 구축 | - 일관성 지표 정의 및 추적 - 일관성 위반 알림 설정 - 정기적인 일관성 감사 수행 |
실패 대응 전략 | 네트워크 파티션, 노드 장애 등 실패 상황에서의 동작 방식 설계 | - 장애 복구 자동화 - 일관성 복구 메커니즘 구현 - 주기적인 장애 테스트 수행 |
버전 관리 | 충돌 해결과 데이터 일관성 유지를 위한 버전 관리 체계 구축 | - 버전 벡터 또는 타임스탬프 사용 - 명확한 버전 관리 정책 수립 - 충돌 감지 및 해결 메커니즘 구현 |
명확한 일관성 계약 | 시스템이 제공하는 일관성 보장에 대한 명확한 정의와 문서화 | - 일관성 모델 명시적 문서화 API 및 클라이언트 라이브러리에 일관성 옵션 제공 - 개발자 교육 자료 제공 |
점진적 접근 방식 | 일관성 요구사항에 맞춰 점진적으로 시스템 개선 | - 작은 규모로 시작하여 검증 후 확장 A/B 테스트를 통한 일관성 모델 평가 - 사용자 피드백 기반 개선 |
멀티 모델 접근 | 데이터 유형별로 다른 일관성 모델 적용 가능성 검토 | - 중요 데이터: 강한 일관성 - 분석 데이터: 최종 일관성 - 세션 데이터: 인과적 일관성 등으로 분리 |
일관성 패턴을 적용할 때 추가로 고려해야 할 사항들
사용자 경험 설계: 일관성 모델은 사용자 경험에 직접적인 영향을 미친다. 예를 들어, 최종 일관성 모델에서는 사용자가 자신의 변경사항이 즉시 반영되지 않는 것을 이해할 수 있도록 UI/UX 를 설계해야 한다.
법적/규제 요구사항: 금융, 의료 등 특정 산업에서는 데이터 일관성에 대한 법적 또는 규제 요구사항이 있을 수 있다. 적용하는 일관성 패턴이 이러한 요구사항을 충족하는지 확인해야 한다.
다중 데이터 센터 고려: 지리적으로 분산된 데이터 센터에서는 네트워크 지연이 크게 증가하므로, 데이터 센터 간 데이터 일관성을 어떻게 유지할지 신중하게 설계해야 한다.
보안 측면: 일관성 모델이 시스템의 보안에 미치는 영향을 고려해야 한다. 예를 들어, 약한 일관성 모델에서는 보안 정책의 변경사항이 즉시 적용되지 않을 수 있다.
장애 시나리오 계획: 다양한 장애 시나리오 (네트워크 파티션, 노드 장애 등) 에서 일관성이 어떻게 유지되는지 계획하고 테스트해야 한다.
교육 및 문서화: 개발팀이 선택한 일관성 모델을 이해하고 올바르게 활용할 수 있도록 교육 및 문서화가 중요하다.
혼합 일관성 모델: 단일 시스템 내에서도 데이터 종류나 작업 유형에 따라 다른 일관성 모델을 적용할 수 있다. 이를 통해 성능과 일관성 사이의 균형을 최적화할 수 있다.
일관성 패턴 진화: 시스템이 발전함에 따라 일관성 요구사항이 변할 수 있으므로, 일관성 패턴을 유연하게 발전시킬 수 있는 아키텍처를 설계해야 한다.
최적화하기 위한 고려사항 및 주의할 점
고려사항 | 설명 | 권장 사항 |
---|---|---|
일관성 수준 조정 | 요구사항에 맞는 최소한의 일관성 수준 선택 | - 필요한 부분만 강한 일관성 적용 - 나머지는 약한 일관성으로 성능 최적화 - 쿼럼 기반 시스템에서 W+R > N 조건 조정 |
로컬 캐싱 | 자주 접근하는 데이터를 로컬에 캐싱하여 성능 향상 | - 읽기 중심 워크로드에 TTL 기반 캐싱 적용 - 캐시 무효화 정책 수립 - 캐시 일관성 메커니즘 구현 |
데이터 샤딩 | 데이터를 여러 노드에 분산하여 병렬 처리 | - 효율적인 샤딩 키 선택 - 핫스팟 방지 전략 수립 - 샤드 재조정 메커니즘 구현 |
배치 처리 | 여러 작은 작업을 하나의 큰 작업으로 묶어 처리 | - 쓰기 작업 배치 처리 - 읽기 작업 병합 - 트랜잭션 범위 최적화 |
비동기 처리 | 주요 작업을 비동기적으로 처리하여 응답 시간 개선 | - 쓰기 작업의 비동기 처리 - 이벤트 기반 아키텍처 도입 - 메시지 큐 활용 |
인덱싱 전략 | 효율적인 인덱싱으로 읽기 성능 향상 | - 쿼리 패턴에 맞는 인덱스 설계 - 복합 인덱스 활용 - 인덱스 오버헤드 모니터링 |
데이터 압축 | 네트워크 대역폭 및 저장 공간 최적화 | - 효율적인 데이터 직렬화 형식 선택 - 델타 인코딩 활용 - 압축 알고리즘 적용 |
네트워크 최적화 | 네트워크 통신 오버헤드 감소 | - 효율적인 프로토콜 선택 - 배치 네트워크 요청 - 데이터 지역성 고려 |
부하 분산 | 여러 노드에 작업 분산으로 병목 현상 방지 | - 효율적인 로드 밸런싱 알고리즘 적용 - 자동 확장 메커니즘 구현 - 리소스 사용량 모니터링 |
읽기/쓰기 분리 | 읽기와 쓰기 작업을 다른 노드로 분리 | - 읽기 복제본 활용 - 명령 쿼리 책임 분리 (CQRS) 패턴 적용 - 읽기 전용 복제본 최적화 |
버전 관리 오버헤드 최적화 | 버전 관리 메타데이터 크기 최소화 | - 효율적인 벡터 클럭 구현 - 주기적인 가비지 컬렉션 - 불필요한 버전 정보 제거 |
메모리 관리 | 메모리 사용량 최적화로 성능 향상 | - 메모리 제한 설정 - 효율적인 데이터 구조 선택 - 메모리 누수 방지 |
로깅 및 모니터링 최적화 | 과도한 로깅으로 인한 성능 저하 방지 | - 로깅 레벨 조정 - 샘플링 기반 모니터링 - 효율적인 로그 저장 및 처리 |
장애 복구 최적화 | 장애 복구 시간 최소화 | - 증분식 상태 전송 - 체크포인트 메커니즘 구현 - 빠른 복구 전략 수립 |
최신 동향
주제 | 항목 | 설명 |
---|---|---|
데이터베이스 일관성 | Tunable Consistency 확장 | Cassandra, DynamoDB 등에서 지원하는 읽기/쓰기 정족수 조절 기능이 더욱 유연하게 확장되어 다양한 서비스 레벨에서 활용 중 |
일관성 모델 | CRDT(Causal Data Structures) 활용 확대 | Conflict-Free Replicated Data Type 이 실시간 협업 시스템 (Google Docs, Figma 등) 에 적용되며 인과 일관성 기반 설계 증가 |
클라우드 기반 시스템 | Managed Consistency Models | Google Spanner, AWS Aurora 등은 글로벌 일관성과 가용성의 자동 조율을 지원하며 개발자 부담 완화 |
멀티리전 아키텍처 | 지리적 분산 데이터 동기화 | Cross-region replication 을 통해 지연 시간은 줄이고, eventual consistency 기반으로 복제 최적화 기법이 증가 |
하이브리드 일관성 | Mixed Consistency 적용 확대 | 하나의 시스템 내에서 서로 다른 일관성 레벨을 기능 단위로 혼용 적용하는 전략이 일반화됨 |
주제와 관련하여 주목할 내용
주제 | 항목 | 설명 |
---|---|---|
일관성 구현 기술 | Vector Clocks | 인과 관계를 유지하기 위한 타임스탬프 구조로, Causal Consistency 를 구현하는 데 사용됨 |
프로그래밍 모델 | Event Sourcing & CQRS | 읽기/쓰기 분리 아키텍처에서 일관성 패턴을 구분 적용하기 위해 사용되는 설계 패턴 |
Conflict 해결 전략 | Last-Write-Wins, Merge Functions | 약한 일관성 모델에서 충돌 해결을 위한 방식으로 점점 다양화 및 자동화되고 있음 |
합의 알고리즘 | Raft vs Paxos | Strong Consistency 구현을 위한 알고리즘으로 Raft 의 직관성 때문에 점유율 증가 중 |
저장소 기술 | Immutable Logs | 이벤트 로그 기반 시스템 (CRDT, Event Sourcing 등) 에서 데이터 정합성 검증을 위한 저장 방식 |
CRDT 발전 | 실시간 텍스트 에디터 CRDT | Yjs, Automerge 와 같은 라이브러리가 실시간 협업 편집을 위한 효율적인 CRDT 구현을 제공합니다. |
CRDT 데이터베이스 | Redis Enterprise, AntidoteDB 와 같이 CRDT 를 기본으로 지원하는 데이터베이스가 등장하고 있습니다. | |
보안 CRDT | 2023 년부터 접근 제어와 보안을 내장한 CRDT 연구가 활발히 진행되고 있으며, 2025 년 초에는 산업용 구현이 등장했습니다. | |
새로운 일관성 모델 | 확률적 일관성 | 확률 이론을 기반으로 한 새로운 일관성 모델로, 데이터가 일관되지 않을 확률을 수학적으로 제한하는 접근 방식입니다. |
지역화된 일관성 | 지리적 위치나 사용자 그룹에 따라 다른 일관성 수준을 적용하는 방식으로, 글로벌 서비스에서 사용자 경험을 최적화합니다. |
앞으로의 전망
주제 | 항목 | 설명 |
---|---|---|
기술 발전 | 자율적 일관성 관리 | AI 와 기계학습을 활용하여, 시스템이 자율적으로 최적의 일관성 수준을 선택하고 관리하는 방향으로 발전할 전망입니다. |
양자 내성 분산 시스템 | 양자 컴퓨팅의 위협에 대응할 수 있는 새로운 분산 일관성 프로토콜이 주류가 될 것으로 예상됩니다. | |
초대규모 CRDT | 수억 명의 동시 사용자를 지원할 수 있는 확장성을 갖춘 CRDT 구현이 등장할 것으로 예상됩니다. | |
산업 응용 | 메타버스 일관성 | 메타버스와 같은 대규모 가상 환경에서 일관성을 유지하기 위한 특화된 기술이 발전할 것입니다. |
자율 시스템 일관성 | 자율 주행 차량, 드론 네트워크 등 자율 시스템 간의 데이터 일관성을 유지하는 새로운 패턴이 등장할 것입니다. | |
의료 분야 특화 일관성 | 분산된 의료 시스템에서 환자 데이터의 일관성을 유지하면서도 응급 상황에서 빠른 접근을 가능하게 하는 기술이 발전할 것입니다. | |
일관성과 규제 | 국제 데이터 일관성 표준 | 국경을 넘는 데이터 전송과 저장에 대한 일관성 표준이 국제적으로 정립될 가능성이 있습니다. |
개인정보 보호와 일관성 | 개인정보 보호 규정을 준수하면서도 효율적인 일관성을 유지하는 기법이 더욱 중요해질 것입니다. | |
새로운 패러다임 | 생체 모방 일관성 | 자연계의 분산 시스템 (예: 개미 군집, 뇌) 에서 영감을 받은 새로운 일관성 모델이 연구될 것입니다. |
하이브리드 물리 - 디지털 일관성 | 물리적 세계와 디지털 세계를 연결하는 시스템에서 일관성을 유지하는 새로운 패러다임이 등장할 것입니다. | |
산업 변화 | 일관성 관리 자동화 | 개발자의 수동 설정 없이도 최적의 일관성 수준을 자동으로 선택하고 관리하는 플랫폼이 표준이 될 것입니다. |
일관성 구독 모델 | 클라우드 서비스 제공자들이 다양한 일관성 수준을 구독 기반 서비스로 제공하는 비즈니스 모델이 확산될 것입니다. |
주제와 관련하여서 하위 주제로 분류해서 추가적으로 학습해야할 내용
카테고리 | 주제 | 설명 |
---|---|---|
일관성 모델 이론 | CAP 정리 심화 | CAP 정리의 수학적 증명과 한계, PACELC 정리와의 관계 |
일관성 모델 형식화 | 선형화 가능성, 순차적 일관성 등의 형식적 정의와 증명 기법 | |
일관성 모델 비교 분석 | 다양한 일관성 모델의 특성, 강도, 구현 복잡성 비교 | |
CRDT 심화 | CRDT 데이터 구조 | 다양한 CRDT 데이터 구조 (카운터, 세트, 맵, 시퀀스 등) 의 동작 원리 |
CRDT 효율성 최적화 | CRDT 의 메모리 사용량과 네트워크 대역폭 최적화 기법 | |
CRDT 보안 | CRDT 환경에서의 접근 제어와 보안 메커니즘 | |
분산 데이터베이스 | 분산 트랜잭션 | 2 단계 커밋, 사가 패턴 등 분산 환경에서의 트랜잭션 처리 |
분산 쿼리 최적화 | 일관성 요구사항에 따른 쿼리 실행 계획 최적화 | |
분산 인덱싱 | 분산 환경에서 효율적인 인덱스 구현과 일관성 유지 | |
동시성 제어 | 낙관적 동시성 제어 | 버전 관리 기반의 동시성 제어 메커니즘 |
비관적 동시성 제어 | 잠금 기반의 동시성 제어 메커니즘 | |
다중 버전 동시성 제어 | MVCC 의 원리와 일관성 모델과의 관계 | |
합의 알고리즘 | Paxos | Paxos 합의 알고리즘의 작동 원리와 변형 |
Raft | Raft 합의 알고리즘의 리더 선출, 로그 복제, 안전성 | |
Byzantine Fault Tolerance | 비잔틴 장애 내성 알고리즘과 블록체인 기술 | |
네트워크 파티션 | 파티션 감지 | 네트워크 파티션 감지 알고리즘과 전략 |
파티션 해결 | 파티션 발생 후 일관성 복구 방법 | |
파티션 내성 설계 | 파티션에 강인한 시스템 설계 원칙 | |
성능 및 확장성 | 일관성과 지연 시간 | 다양한 일관성 모델이 지연 시간에 미치는 영향 |
일관성과 처리량 | 일관성 수준에 따른 시스템 처리량 최적화 | |
대규모 클러스터 확장 | 수천 노드 규모에서의 일관성 유지 전략 |
주제와 관련하여서 추가로 알아야 하거나 학습해야할 내용
카테고리 | 주제 | 설명 |
---|---|---|
기반 지식 | 분산 시스템 기초 | 분산 시스템의 기본 개념, 설계 원칙, 과제 |
네트워크 통신 모델 | 동기/비동기 통신, 메시지 전달 의미론, 장애 모델 | |
시스템 모델링 | 상태 기계, 이벤트 소싱, CQRS 패턴 | |
관련 기술 | 분산 데이터베이스 | NoSQL, NewSQL, 시계열 데이터베이스의 일관성 모델 |
메시지 큐 시스템 | Kafka, RabbitMQ 등의 메시지 전달 보장과 일관성 | |
서비스 메시 | Istio, Linkerd 등 서비스 메시에서의 일관성 관리 | |
구현 기술 | 벡터 클럭 | 벡터 클럭, 버전 벡터, 도트 클럭의 구현과 최적화 |
고성능 복제 | State Machine Replication, Chain Replication 등의 기법 | |
충돌 해결 전략 | 마지막 쓰기 승리, 조합 함수, 충돌 감지와 해결 알고리즘 | |
애플리케이션 분야 | 실시간 협업 도구 | Google Docs, Figma 등 실시간 협업 도구의 일관성 구현 |
클라우드 스토리지 | Dropbox, Google Drive 등의 파일 동기화와 일관성 | |
게임 개발 | 멀티플레이어 게임에서의 상태 동기화와 일관성 | |
개발 방법론 | 일관성 중심 설계 | 일관성 요구사항을 중심으로 한 시스템 설계 방법론 |
테스트 기법 | 분산 시스템의 일관성을 검증하는 테스트 기법 | |
장애 주입 | 네트워크 파티션, 노드 장애 시뮬레이션과 복구 테스트 | |
새로운 패러다임 | 엣지 컴퓨팅 | 엣지 환경에서의 데이터 일관성 과제와 해결책 |
서버리스 아키텍처 | 서버리스 환경에서의 상태 관리와 일관성 | |
맵리듀스 및 스트림 처리 | 대규모 데이터 처리 시스템의 일관성 보장 |
용어 정리
용어 | 설명 |
---|---|
CAP 정리 (CAP Theorem) | 분산 시스템에서 일관성 (Consistency), 가용성 (Availability), 분할 내성 (Partition Tolerance) 세 가지를 동시에 모두 만족할 수 없다는 이론 |
벡터 클럭 (Vector Clock) | 분산 시스템에서 이벤트 간의, 특히 분산 네트워크 내의 이벤트에서 " 일어난 순서 " 를 판별하는 데 사용되는 알고리즘 |
쿼럼 (Quorum) | 분산 시스템에서 작업 수행을 위해 동의해야 하는 최소 노드 수 |
토막 표시 (Tombstone) | 삭제된 데이터를 실제로 제거하지 않고 삭제 표시만 해두는 기법 |
네트워크 파티션 (Network Partition) | 네트워크 장애로 인해 시스템의 일부 노드가 다른 노드와 통신할 수 없게 되는 상황 |
샤딩 (Sharding) | 데이터베이스를 여러 작은 조각 (샤드) 으로 분할하여 여러 서버에 분산 저장하는 기술 |
인과 관계 (Causality) | 한 이벤트가 다른 이벤트의 원인이 되는 관계 |
합의 알고리즘 (Consensus Algorithm) | 분산 환경에서 여러 노드가 공통된 결정에 도달하기 위한 알고리즘 |
상태 기반 CRDT (State-based CRDT) | 전체 상태를 교환하여 동기화하는 CRDT 유형 |
작업 기반 CRDT (Operation-based CRDT) | 작업만 전송하여 동기화하는 CRDT 유형 |
참고 및 출처
Consistency 패턴 및 개념
- Consistency Patterns in Distributed Systems - cs.fyi
- System Design - Consistency Patterns
- Mastering Consistency Patterns in Distributed Systems - ThinhDA
- Consistency Patterns | GeeksforGeeks
- Strong vs Eventual Consistency Explained - FaunaDB 블로그
- Baeldung - Eventual vs Strong vs Strong Eventual Consistency
일관성 모델별 정의 및 비교
- Wikipedia - Eventual Consistency
- Wikipedia - Conflict-free Replicated Data Type (CRDT)
- Wikipedia - Sequential Consistency
- Wikipedia - Linearizability
- Wikipedia - Causal Consistency
- GeeksforGeeks - Consistency Model in Distributed System
- GeeksforGeeks - Linearizability in Distributed Systems
- Educative - Understanding the Sequential Consistency Model
- Dagster Glossary - Linearizability
CRDT 관련 자료
- Microsoft Research - Strong Eventual Consistency and CRDTs
- Ably - CRDTs solve distributed data consistency challenges
- Redis Blog - Diving into CRDTs
- CRDT Tech - About CRDTs
- RxDB - CRDT Database
- TechTarget - What is CRDT
- DZone - CRDTs: How Conflict-Free Replicated Data Types Work
산업 사례 및 시스템 설계 참고
- CAP theorem and Consistency models - Microsoft Azure Architecture Center
- Consistency Models - AWS Dynamo 공식 문서
- Google Spanner Whitepaper
- Google Spanner 사례 연구
- Eventual Consistency Revisited - ACM Queue
- AWS 일관성 모델 가이드
- 마이크로소프트 Saga 패턴 문서