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 정리은 마치 요리사가 레시피를 따르는 것과 같아. 혼란스러운 재료들을 정해진 순서대로 조합하면 → 맛있는 요리(최적 결과)가 나오지! 🍳