보장: 일관성과 CAP
보장: 일관성과 CAP (Guarantees)
Apache Cassandra는 확장성과 가용성, 신뢰성에 대해 일정한 보장을 제공해요. 수많은 클라이언트를 서빙하고 페타바이트 규모의 데이터를 처리하는 웹 규모(web-scale) 애플리케이션에서 쓰이죠. 이런 보장의 한계를 제대로 이해하려면 먼저 CAP 정리를 짚고 갈 필요가 있어요.
CAP 정리
CAP 정리에 따르면 분산 데이터 저장소는 다음 세 가지 보장 중 두 가지만 동시에 제공할 수 있어요.
- Consistency(일관성) — 모든 읽기가 가장 최근의 쓰기를 받거나 오류를 반환함.
- Availability(가용성) — 모든 요청이 응답을 받음(응답이 최신이라는 보장은 없음).
- Partition Tolerance(분할 내성) — 네트워크 파티션(분할)이 발생해도 시스템이 계속 동작함.
네트워크 파티션은 분산 시스템 설계에서 피할 수 없는 상황이므로, Cassandra는 Partition Tolerance를 기본으로 전제하고 Consistency와 Availability 사이에서 **조정 가능한 일관성(tunable consistency)**으로 균형을 잡아요.
Cassandra의 보장
- 높은 확장성(High Scalability) — 노드 추가로 선형 확장.
- 높은 가용성(High Availability) — 마스터 없는 구조로 단일 장애점이 없음.
- 내구성(Durability) — 커밋 로그와 복제로 데이터 손실 방지.
- 최종적 일관성(Eventual Consistency) — 파티션이 해소되면 모든 복제본이 결국 같은 값에 수렴.
- 경량 트랜잭션(LWT) — 선형화 가능한 일관성을 제공하는
IF조건 기반 연산. - 배치 쓰기(Batched Writes) — 여러 쓰기를 한 번에 묶어 보내는 기능.
조정 가능한 일관성
클라이언트는 요청마다 일관성 수준(일반적으로 QUORUM 등)을 지정해서, 성능과 일관성의 균형을 직접 조절할 수 있어요. 예를 들어 쓰기 일관성과 읽기 일관성을 QUORUM으로 맞추면 읽기는 항상 최신 데이터를 보게 보장할 수 있어요. 이렇게 요구사항에 따라 가용성과 일관성을 유연하게 고를 수 있는 게 Cassandra의 큰 특징이에요.