핵심 인사이트 (3줄 요약)

  1. 본질: NoSQL의 BASE(Basically Available, Soft-state, Eventually Consistent) 속성은 RDBMS의 ACID(Atomicity·Consistency·Isolation·Durability)와 정반대로, 분산 환경에서 강한 일관성 대신 가용성과 성능을 택하는 설계 철학이다.
  2. 가치: 결과적 일관성(Eventual Consistency)은 모든 복제본이 시간이 지나면 같은 상태가 된다는 보장으로, 네트워크 파티션 상황에서도 서비스를 중단하지 않고 계속 응답할 수 있게 한다.
  3. 판단 포인트: 금융 계좌 잔액(절대 일관성 필요)에는 ACID, 소셜미디어 좋아요 수(약간의 불일치 허용)에는 BASE — 비즈니스 데이터의 일관성 요구 수준이 ACID vs BASE 선택의 기준이다.

Ⅰ. 개요 및 필요성

1.1 분산 시스템에서 일관성의 딜레마

단일 서버 RDBMS는 ACID를 쉽게 보장하지만, 수십 대 서버에 걸친 분산 시스템에서 강한 일관성(Strong Consistency)을 유지하면 막대한 통신 비용과 지연이 발생한다.

ACID 분산 트랜잭션 문제:
  서버 A  ──── 락 획득 ────► 서버 B (응답 대기)
          ◄─── 커밋 확인 ────          │
                                      │ 네트워크 지연
                                      ▼ 50ms 지연
  → 50ms × 수백만 TPS = 시스템 마비

Eric Brewer는 2000년 CAP 정리로 "분산 시스템은 일관성, 가용성, 파티션 허용성 3가지를 동시에 완벽하게 지킬 수 없다"고 증명했다. NoSQL의 BASE는 이 현실을 반영한 실용적 절충이다.

1.2 ACID vs BASE 비교

항목ACID (관계형 DB)BASE (NoSQL)
AAtomicity (원자성)Basically Available (기본적 가용성)
CConsistency (일관성)Soft-state (소프트 상태)
IIsolation (격리성)Eventually Consistent (결과적 일관성)
DDurability (내구성)
우선순위일관성 > 가용성가용성 > 일관성
장애 시트랜잭션 실패, 서비스 대기서비스 계속, 나중에 일관성 회복

📢 섹션 요약 비유: ACID는 '엄격한 은행 금고' — 문을 열려면 모든 절차가 완벽해야 하고, 뭔가 문제 있으면 문을 잠근다. BASE는 '편의점 셀프 계산대' — 약간의 오류가 있어도 일단 가게는 계속 돌아간다.


Ⅱ. 아키텍처 및 핵심 원리

2.1 BASE 속성 상세 설명

Basically Available (기본적 가용성): 네트워크 파티션이나 일부 서버 장애가 발생해도 시스템은 계속 응답한다. 정확하지 않을 수 있지만 오류보다는 부분적 데이터를 반환한다.

예: 쇼핑몰 상품 재고 조회
  ACID (RDBMS): 재고 서버 장애 → 전체 쇼핑몰 접속 불가
  BASE (NoSQL): 재고 서버 장애 → "재고 정보 임시 불가" 표시 후 나머지 기능 정상

Soft-state (소프트 상태): 시스템의 상태는 고정되지 않고, 시간이 지남에 따라 업데이트 없이도 변할 수 있다. 복제(Replication) 중인 데이터는 노드마다 잠시 다를 수 있다.

Eventually Consistent (결과적 일관성): 모든 업데이트가 충분한 시간이 지나면 모든 복제본에 전파된다. "항상 일관적"이 아닌 "결국 일관적"이 됨을 보장한다.

결과적 일관성 타임라인:
  t=0  : Node A에 "user=홍길동, 등급=VIP" 업데이트
  t=10ms: Node A 반영 완료, Node B·C는 여전히 "GOLD"
  t=50ms: Node B에 복제 완료
  t=100ms: Node C에 복제 완료 → 모든 노드 일치!

  → 100ms 동안은 노드마다 다른 값을 반환할 수 있음

2.2 샤딩 (Sharding) — 수평 분산 설계

샤딩(Sharding)은 하나의 데이터셋을 여러 서버에 분산 저장하는 수평 파티셔닝(Horizontal Partitioning) 기법이다.

샤딩 전략방식장점단점
해시 샤딩shard = hash(key) % N균등 분산범위 쿼리 불가
범위 샤딩shard = key의 범위 구간범위 쿼리 용이핫스팟(Hotspot) 위험
디렉토리 샤딩별도 매핑 테이블유연한 재배치매핑 테이블 병목
지리 샤딩지역별 분리데이터 주권, 지연 감소교차 지역 쿼리 어려움

2.3 해시 샤딩 상세

해시 샤딩 (Consistent Hashing, 일관 해시):

사용자 ID → 해시 함수 → 샤드 번호

user_id=1001 → hash=2847  → 샤드 0 (0~3000)
user_id=1002 → hash=7231  → 샤드 2 (6000~9000)
user_id=1003 → hash=5119  → 샤드 1 (3000~6000)

┌──────────┐  ┌──────────┐  ┌──────────┐
│  샤드 0  │  │  샤드 1  │  │  샤드 2  │
│ user 1001│  │ user 1003│  │ user 1002│
│ user ...  │  │ user ...  │  │ user ...  │
└──────────┘  └──────────┘  └──────────┘
   서버 A         서버 B         서버 C

일관 해시(Consistent Hashing): 서버 추가/제거 시 재분배되는 키의 수를 최소화하는 해시 기법. 일반 해시 대비 서버 N개 변경 시 O(K/N) 키만 이동(K=전체 키 수).

2.4 복제 전략과 일관성 수준

Cassandra의 일관성 수준 (Consistency Level):

쓰기 요청
  Client ──────────────────► 코디네이터 노드
                                  │
              ┌───────────────────┼────────────────┐
              ▼                   ▼                ▼
           노드 A              노드 B           노드 C
         (Primary)           (Replica)        (Replica)

Consistency Level 설정:
  ONE    : 1개 노드 확인 → 빠름, 일관성 약함
  QUORUM : (N/2+1)개 확인 → 균형
  ALL    : 모든 노드 확인 → 느림, 일관성 강함

📢 섹션 요약 비유: 샤딩은 큰 도서관을 여러 분관으로 나눈 것이다 — 과학책은 1분관, 소설책은 2분관처럼 분류하면 각 분관이 독립적으로 작동해서 방문객이 몰려도 한 분관만 막힌다.


Ⅲ. 비교 및 연결

3.1 결과적 일관성 패턴

패턴설명예시
Read Your Writes자신이 쓴 데이터는 항상 읽을 수 있음내 프로필 수정 후 즉시 반영
Monotonic Read한 번 읽은 버전보다 이전 버전은 안 읽음타임라인이 거꾸로 안 감
Causal Consistency인과 관계 있는 이벤트는 순서 보장답글은 원글 다음에 표시

3.2 NoSQL vs RDBMS 선택 기준

데이터 구조가 고정적이고 트랜잭션이 중요한가?
  YES → RDBMS (PostgreSQL, MySQL)

데이터 구조가 동적이거나 수평 확장이 필요한가?
  YES → NoSQL

   ├── 단순 키-값 빠른 조회   → Redis / DynamoDB
   ├── JSON 도큐먼트 저장     → MongoDB
   ├── 시계열/대용량 쓰기     → Cassandra / HBase
   └── 관계 탐색              → Neo4j

📢 섹션 요약 비유: 결과적 일관성은 인터넷 뉴스 기사가 수정될 때 네이버·다음·구글에 동시에 반영되지 않는 것과 같다 — 잠시 차이가 있지만, 결국 모든 플랫폼이 같은 내용을 보여주게 된다.


Ⅳ. 실무 적용 및 기술사 판단

4.1 BASE 설계 패턴 적용 사례

서비스데이터BASE 이유
SNS 좋아요 수수십억 건1~2초 불일치 허용 가능
전자상거래 장바구니사용자별 상태세션 내 일관성만 필요
DNS 조회IP 매핑전파 지연 허용
CDN 캐시정적 파일TTL 기반 일관성

4.2 샤딩 시 주의사항

항목문제해법
핫스팟특정 샤드에 트래픽 집중해시 샤딩 + 가상 노드(Virtual Node)
교차 샤드 쿼리JOIN이 여러 서버 걸침비정규화, 쿼리 라우터
리샤딩서버 추가 시 데이터 이동Consistent Hashing으로 최소화
트랜잭션멀티 샤드 트랜잭션 불가사가(Saga) 패턴, 2PC(Two-Phase Commit)

📢 섹션 요약 비유: 샤딩의 핫스팟 문제는 모든 학생이 학교 앞 한 문구점에 몰리는 것이다 — 여러 문구점으로 분산(가상 노드)하거나, 학번 범위를 재배정(리샤딩)해서 부하를 나눠야 한다.


Ⅴ. 기대효과 및 결론

5.1 BASE + 샤딩 도입 효과

효과내용
가용성단일 노드 장애 시에도 서비스 계속 가능
확장성샤드 추가만으로 처리량 선형 증가
성능지역 복제로 읽기 지연 감소
비용고가 단일 서버 대신 범용 서버 수평 확장

5.2 결론 — 기술사 작성 포인트

기술사 답안에서는 **"BASE vs ACID를 단순 대립이 아닌 비즈니스 요건에 따른 트레이드오프"**로 서술해야 한다. "언제 BASE가 적합한가"를 결과적 일관성이 허용되는 도메인(SNS, 캐시, DNS)과 허용되지 않는 도메인(금융, 재고)을 구분해 논술하고, 해시 샤딩과 일관 해시의 차이를 ASCII로 표현하면 차별화된다.

📢 섹션 요약 비유: BASE는 '완벽한 정확성보다 지금 당장 답하는 것'을 선택한 시스템이다 — 선거 출구조사처럼 100% 정확하지 않아도 빠른 예측이 필요한 상황에서 BASE가 빛을 발한다.


📌 관련 개념 맵

관계개념설명
BASE 속성Basically Available부분 장애에도 계속 응답
BASE 속성Soft-state복제 중 노드마다 상태 불일치 허용
BASE 속성Eventually Consistent시간 경과 후 모든 노드 일치
수평 분산샤딩 (Sharding)데이터를 여러 서버에 분산
분산 해시일관 해시 (Consistent Hashing)노드 변경 시 최소 재배치
비교 개념ACID (A·C·I·D)관계형 DB 트랜잭션 보장
CAP 연결CAP 정리 (CAP Theorem)분산 시스템 일관성·가용성 한계

👶 어린이를 위한 3줄 비유 설명

  1. BASE는 '대충 맞아도 괜찮은 학교 투표 결과'야 — 반장 선거에서 딱 맞지 않아도 모두가 결과를 알 수 있으면 돼.

📈 관련 키워드 및 발전 흐름도

ACID (RDBMS: 강한 일관성)
    │
    ▼
BASE (NoSQL: 유연한 일관성)
    ├─► Basically Available: 항상 응답
    ├─► Soft State: 시간이 지나면 변할 수 있음
    └─► Eventual Consistency: 최종적 일관성 보장
    │
    ▼
Sharding: 수평 분할 · Consistent Hashing
  1. 샤딩은 학교 급식 배식대를 여러 줄로 나눈 것이야 — 줄이 많을수록 밥을 빨리 받을 수 있어!
  2. 결과적 일관성은 SNS에서 내가 올린 사진이 모든 친구에게 5초 뒤에 뜨는 것 — 동시에 안 보여도 결국은 다 보게 되잖아?