CAP 정리 (CAP Theorem)
핵심 인사이트 (3줄 요약)
분산 시스템에서 일관성, 가용성, 분할 내성 중 2개만 선택 가능. NoSQL은 AP 또는 CP, RDBMS는 CA. 트레이드오프 이해가 핵심.
📝 기술사 모의답안 (2.5페이지 분량)
📌 예상 문제
"CAP 정리 (CAP Theorem)의 개념과 핵심 원리를 설명하고, 관련 기술과의 비교를 통해 데이터 관리 측면에서의 활용 방안을 논하시오."
Ⅰ. 개요
1. 개념
CAP 정리(CAP Theorem)는 분산 컴퓨팅 시스템에서 Consistency(일관성), Availability(가용성), Partition Tolerance(분할 내성) 세 가지 속성 중 동시에 최대 2가지만 보장할 수 있다는 이론이다.
비유: "빠르고, 싸고, 좋은 것 중 2개만 선택" - 모든 것을 다 가질 수는 없다
Ⅱ. 구성 요소 및 핵심 원리
2. CAP의 3가지 속성
┌────────────────────────────────────────────────────────┐
│ CAP의 3가지 속성 │
├────────────────────────────────────────────────────────┤
│ │
│ C - Consistency (일관성): │
│ ┌────────────────────────────────────────────────┐ │
│ │ │ │
│ │ "모든 노드가 같은 시간에 같은 데이터를 봄" │ │
│ │ │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │ 100 │ │ 100 │ │ 100 │ ← 모두 같음! │ │
│ │ │Node1│ │Node2│ │Node3│ │ │
│ │ └─────┘ └─────┘ └─────┘ │ │
│ │ │ │
│ │ • 쓰기 후 모든 읽기가 최신 값 반환 │ │
│ │ • 강한 일관성 (Strong Consistency) │ │
│ │ │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ A - Availability (가용성): │
│ ┌────────────────────────────────────────────────┐ │
│ │ │ │
│ │ "항상 응답을 보장 (실패해도)" │ │
│ │ │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │ OK │ │ OK │ │ OK │ ← 항상 응답! │ │
│ │ │Node1│ │Node2│ │Node3│ │ │
│ │ └─────┘ └─────┘ └─────┘ │ │
│ │ ↓ │ │
│ │ 💥 장애 │ │
│ │ ↓ │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │ OK │ │ OK │ │ X │ ← 여전히 OK! │ │
│ │ └─────┘ └─────┘ └─────┘ │ │
│ │ │ │
│ │ • 모든 요청이 성공 또는 실패 응답 │ │
│ │ • 시스템이 계속 작동 │ │
│ │ │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ P - Partition Tolerance (분할 내성): │
│ ┌────────────────────────────────────────────────┐ │
│ │ │ │
│ │ "네트워크 분할이 생겨도 시스템 작동" │ │
│ │ │ │
│ │ 정상: │ │
│ │ ┌─────┐ ────── ┌─────┐ ────── ┌─────┐ │ │
│ │ │Node1│ │Node2│ │Node3│ │ │
│ │ └─────┘ └─────┘ └─────┘ │ │
│ │ │ │
│ │ 분할 발생: │ │
│ │ ┌─────┐ ────── ┌─────┐ X ┌─────┐ │ │
│ │ │Node1│ │Node2│ 💥 │Node3│ │ │
│ │ └─────┘ └─────┘ └─────┘ │ │
│ │ ↑ ↑ │ │
│ │ └── 분할된 그룹 1 ───┘ │ │
│ │ └── 분할된 그룹 2 │ │
│ │ │ │
│ │ • 통신 장애가 발생해도 시스템 유지 │ │
│ │ • 분산 시스템의 필수 속성 │ │
│ │ │ │
│ └────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────┘
3. CAP 트레이드오프
┌────────────────────────────────────────────────────────┐
│ CAP 조합 선택 │
├────────────────────────────────────────────────────────┤
│ │
│ ┌───────────┐ │
│ │ C │ │
│ │ (일관성) │ │
│ └─────┬─────┘ │
│ ╱ │ ╲ │
│ ╱ │ ╲ │
│ ┌──────╱ │ ╲──────┐ │
│ │ │ │ │
│ ┌─────▼─────┐ │ ┌─────▼─────┐ │
│ │ CA │ │ │ CP │ │
│ │ (RDBMS) │ │ │ (NoSQL) │ │
│ │ │ │ │ │ │
│ │ • MySQL │ │ │ • Mongo │ │
│ │ • PG │ │ │ • Redis │ │
│ └──────────┘ │ └──────────┘ │
│ │ │
│ ┌─────▼─────┐ │
│ │ AP │ │
│ │ (NoSQL) │ │
│ │ │ │
│ │ • Cassandra │ │
│ │ • DynamoDB │ │
│ │ • CouchDB │ │
│ └──────────┘ │
│ │ │
│ ┌─────▼─────┐ │
│ │ A │ │
│ │ (가용성) │ │
│ └───────────┘ │
│ │ │
│ ┌─────▼─────┐ │
│ │ P │ │
│ │(분할내성) │ │
│ └───────────┘ │
│ │
│ ※ 실제로는 P가 필수이므로 CA는 사실상 불가능 │
│ → CP vs AP 선택이 현실적 │
│ │
└────────────────────────────────────────────────────────┘
4. 조합별 특성
┌────────────────────────────────────────────────────────┐
│ CAP 조합별 특성 │
├────────────────────────────────────────────────────────┤
│ │
│ CP (일관성 + 분할내성): │
│ ┌────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 전략: 분할 시 가용성 포기 │ │
│ │ │ │
│ │ ┌─────┐ X ┌─────┐ │ │
│ │ │Node1│ 💥 │Node2│ │ │
│ │ │ OK │ │ 대기 │ ← 일관성 위해 대기 │ │
│ │ └─────┘ └─────┘ │ │
│ │ │ │
│ │ 장점: 데이터 일관성 보장 │ │
│ │ 단점: 일시적 응답 불가 │ │
│ │ │ │
│ │ 예: MongoDB, Redis, HBase, ZooKeeper │ │
│ │ │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ AP (가용성 + 분할내성): │
│ ┌────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 전략: 분할 시 일관성 포기 │ │
│ │ │ │
│ │ ┌─────┐ X ┌─────┐ │ │
│ │ │Node1│ 💥 │Node2│ │ │
│ │ │ 100 │ │ 90 │ ← 다른 값 허용! │ │
│ │ └─────┘ └─────┘ │ │
│ │ │ │
│ │ 장점: 항상 응답 보장 │ │
│ │ 단점: eventual consistency (최종 일관성) │ │
│ │ │ │
│ │ 예: Cassandra, DynamoDB, CouchDB, Riak │ │
│ │ │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ CA (일관성 + 가용성): ※ 이론상만 가능 │
│ ┌────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 전략: 분할 없는 단일 노드 │ │
│ │ │ │
│ │ ┌───────────────────────┐ │ │
│ │ │ 단일 노드 │ │ │
│ │ │ (분할 발생 안함) │ │ │
│ │ └───────────────────────┘ │ │
│ │ │ │
│ │ 예: 전통적 RDBMS (단일 서버) │ │
│ │ MySQL, PostgreSQL (단일 노드) │ │
│ │ │ │
│ │ 한계: 네트워크 분할은 항상 발생 가능 │ │
│ │ │ │
│ └────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────┘
5. NoSQL 분류
┌────────────────────────────────────────────────────────┐
│ NoSQL 분류와 CAP │
├────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Key-Value Store (키-값): │ │
│ │ ┌──────────────────────────────────────────┐ │ │
│ │ │ Redis (CP) │ DynamoDB (AP) │ │ │
│ │ │ Riak (AP) │ Memcached (AP) │ │ │
│ │ └──────────────────────────────────────────┘ │ │
│ │ │ │
│ │ Document Store (문서): │ │
│ │ ┌──────────────────────────────────────────┐ │ │
│ │ │ MongoDB (CP) │ CouchDB (AP) │ │ │
│ │ │ Couchbase (CP/ AP) │ │ │
│ │ └──────────────────────────────────────────┘ │ │
│ │ │ │
│ │ Column Family (컬럼 패밀리): │ │
│ │ ┌──────────────────────────────────────────┐ │ │
│ │ │ Cassandra (AP)│ HBase (CP) │ │ │
│ │ │ BigTable (CP) │ │ │ │
│ │ └──────────────────────────────────────────┘ │ │
│ │ │ │
│ │ Graph Database (그래프): │ │
│ │ ┌──────────────────────────────────────────┐ │ │
│ │ │ Neo4j (CA) │ JanusGraph (CP) │ │ │
│ │ └──────────────────────────────────────────┘ │ │
│ │ │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ 선택 기준: │
│ ┌────────────────────────────────────────────────┐ │
│ │ │ │
│ │ • 일관성 중요 (금융, 주문) → CP (Mongo, Redis)│ │
│ │ • 가용성 중요 (SNS, IoT) → AP (Cassandra) │ │
│ │ • 복잡한 관계 → Graph DB │ │
│ │ • 유연한 스키마 → Document DB │ │
│ │ │ │
│ └────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────┘
Ⅲ. 기술 비교 분석
비교표를 통해 주요 기술과 차이점을 분석한다.
Ⅳ. 실무 적용 방안
**CAP 정리 (CAP Theorem)**의 실무 적용 시나리오와 고려사항.
Ⅴ. 기대 효과 및 결론
| 효과 영역 | 내용 | 정량적 목표 |
|---|---|---|
| 데이터 무결성 | ACID 트랜잭션·정규화로 데이터 정합성 보장 | 데이터 이상 현상(Anomaly) 100% 방지 |
| 쿼리 성능 | 인덱스·쿼리 최적화로 데이터 조회 속도 향상 | 응답 시간 90% 단축 |
| 확장성 | 분산 DB·NewSQL로 대용량 트래픽 수평 확장 | TPS 10배 이상 향상 |
결론
**CAP 정리 (CAP Theorem)**은(는) 데이터베이스는 HTAP(하이브리드 거래·분석 처리)와 AI 통합(벡터 DB, RAG 파이프라인)으로 진화하며, 단순 저장소를 넘어 비즈니스 인텔리전스의 핵심 엔진이 될 것이다.
※ 참고 표준: IEEE 754, SQL:2023 표준, ISO/IEC 9075, MongoDB Atlas 아키텍처
어린이를 위한 종합 설명
CAP 정리를 쉽게 이해해보자!
분산 시스템에서 일관성, 가용성, 분할 내성 중 2개만 선택 가능. NoSQL은 AP 또는 CP, RDBMS는 CA. 트레이드오프 이해가 핵심.
왜 필요할까?
기존 방식의 한계를 넘기 위해
어떻게 동작하나?
복잡한 문제 → CAP 정리 적용 → 더 빠르고 안전한 결과!
핵심 한 줄:
CAP 정리 = 똑똑하게 문제를 해결하는 방법
비유: CAP 정리은 마치 요리사가 레시피를 따르는 것과 같아. 혼란스러운 재료들을 정해진 순서대로 조합하면 → 맛있는 요리(최적 결과)가 나오지! 🍳