CAP 정리: 분산 시스템의 일관성, 가용성, 분할 내성
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

CAP 정리 이해

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

인프라/DevOps/보안

대상자

분산 시스템 설계 및 개발에 관심 있는 개발자, 시스템 아키텍트, 데이터베이스 엔지니어.

  • *난이도**: 중급(분산 시스템 설계 개념 이해 필요)

핵심 요약

  • CAP 정리는 분산 시스템에서 Consistency(일관성), Availability(가용성), Partition Tolerance(분할 내성) 3가지 속성을 동시에 보장할 수 없다는 것을 명시
  • CP 시스템(예: MongoDB)은 데이터 일관성을 우선시하고, AP 시스템(예: Cassandra)은 가용성을 우선시하며, CA 시스템(관계형 DB)은 분산 환경에서 불가능
  • 분할 내성(P)은 네트워크 분할 시 필수적인 속성으로, C와 A 중 하나를 포기해야 함

섹션별 세부 요약

1. CAP 정리 개요

  • 분산 시스템에서 데이터 일관성, 가용성, 네트워크 분할 내성 간 불가피한 트레이드오프 존재
  • 2000년 Eric Brewer 제안, 2002년 Seth Gilbert, Nancy Lynch 수학적 증명
  • 네트워크 분할(예: 노드 간 통신 중단) 발생 시 C vs A 선택 필요

2. 3가지 속성 정의

  • Consistency(일관성): 모든 노드가 동일한 데이터 상태 유지, 최신 데이터 불가시 에러 반환 (예: 금융 트랜잭션)
  • Availability(가용성): 모든 요청에 반응 (데이터가 최신일 필요 없음) (예: SNS, 스트리밍)
  • Partition Tolerance(분할 내성): 네트워크 분할 시 계속 작동 (분산 시스템 필수 조건)

3. CAP 트레이드오프 및 시스템 분류

  • CP 시스템: 일관성 보장, 분할 시 요청 거부 (예: MongoDB)
  • AP 시스템: 가용성 보장, 최종 일관성(Eventual Consistency) 적용 (예: Cassandra)
  • CA 시스템: 분산 환경에서 불가능 (예: PostgreSQL, 분산 설정 시 분할 처리 필요)

4. 실무 적용 사례

  • MongoDB (CP): 단일 마스터 아키텍처로 일관성 보장, 분할 시 요청 거부
  • Cassandra (AP): 무마스터 아키텍처로 고가용성 제공, 최종 일관성 적용
  • PostgreSQL (CA 이론적): 분산 설정 시 복제로 일관성-가용성 균형, 분할 시 제한적 처리

5. 흔한 오해 및 정리

  • CA 시스템 불가능: 분산 환경에서 분할 내성(P) 필수, CA 조합 불가능
  • ACID vs CAP 일관성 차이:

- ACID: 트랜잭션 내 데이터 무결성

- CAP: 모든 노드에서 최신 데이터 반환

  • CAP은 모든 시점에서 2속성 선택 필요: 대부분 시간은 3속성 유지 가능, 분할 시 C/A 선택

결론

  • 분산 시스템 설계 시 CAP 트레이드오프를 고려해야 하며, MongoDB(CP) 또는 Cassandra(AP)와 같은 DB 선택이 핵심
  • CA 시스템은 분산 환경에서 불가능, 분할 내성(P)은 필수 조건
  • 최종 일관성(Eventual Consistency)은 AP 시스템에서 데이터 일관성 보장을 위한 핵심 전략