보장: 일관성과 CAP

보장: 일관성과 CAP (Guarantees)

Apache Cassandra는 확장성과 가용성, 신뢰성에 대해 일정한 보장을 제공해요. 수많은 클라이언트를 서빙하고 페타바이트 규모의 데이터를 처리하는 웹 규모(web-scale) 애플리케이션에서 쓰이죠. 이런 보장의 한계를 제대로 이해하려면 먼저 CAP 정리를 짚고 갈 필요가 있어요.

출처: Cassandra — Guarantees

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의 큰 특징이에요.

더 알아보기