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

  1. 본질: BASE (Basically Available, Soft-state, Eventual Consistency)는 ACID (Atomicity, Consistency, Isolation, Durability)처럼 즉시 강한 일관성을 보장하기보다, 분산 환경에서 가용성과 확장성을 우선하는 NoSQL (Not Only SQL) 철학이다.
  2. 가치: 네트워크 분할(Partition)과 노드 장애가 자주 일어나는 대규모 시스템에서, 요청을 일단 받아주고 나중에 수렴시키는 방식으로 서비스 중단을 줄인다.
  3. 융합: SNS 피드, 쇼핑 카트, 카운터, 세션 저장소처럼 "조금 늦게 맞아도 되는 데이터"에 적합하며, 충돌은 Last Write Wins (LWW)나 Vector Clock 같은 방식으로 수습한다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: BASE는 분산 데이터 저장소가 실패를 없애는 대신, 실패가 있어도 서비스를 계속 살아있게 만들기 위한 설계 철학이다.
  • 필요성: 노드가 여러 개로 나뉜 분산 시스템에서는 모든 쓰기를 즉시 같은 값으로 맞추는 일이 비싸다. 그래서 응답 속도와 가용성을 먼저 확보하고, 복제본은 배경 작업으로 맞춘다.
  • 비유: 회의록을 한 사람이 즉시 전원에게 읽어주지 않아도, 각자가 메모를 먼저 적어놓고 나중에 맞춰가는 방식이다. 초반엔 조금 다를 수 있지만, 결국 같은 결론으로 모인다.

📢 섹션 요약 비유: 모두가 한 칸에 줄 서서 동시에 확인하는 대신, 일단 각자 일을 시작하고 나중에 정리하는 유연한 사무실 운영 방식이다.


Ⅱ. BASE의 3대 요소와 동작 원리

BASE는 "즉시 완벽"보다 "지금 응답"을 선택한다.

[Client] -> [Node A: 요청 수락]
                 │
                 ├── [Node B: 아직 옛 값]
                 └── [Node C: 아직 옛 값]
                        │
                        ▼
                [Gossip / Replication]
                        │
                        ▼
                [모든 노드가 수렴]
요소의미실무 효과
Basically Available일부 노드가 느려도 응답을 계속한다서비스 가용성 유지
Soft-state상태가 잠깐 흔들릴 수 있다복제 지연 허용
Eventual Consistency결국은 같은 값으로 수렴한다대규모 분산 확장 가능

Soft-state는 상태가 고정되지 않았다는 뜻이다. 복제 지연, 네트워크 지연, 장애 복구 때문에 잠깐 다른 값이 보일 수 있지만, 배경 복제와 충돌 해결이 진행되면 최종 상태가 하나로 맞춰진다.

📢 섹션 요약 비유: 친구 셋이 같은 사진을 각자 저장하고 있다가, 나중에 카톡으로 서로 최신본을 맞추는 것과 같다. 처음에는 다를 수 있어도 결국 한 장으로 합쳐진다.


Ⅲ. ACID vs BASE vs CAP

구분ACIDBASECAP 관점
목표정합성 우선가용성 우선Partition Tolerance (분할 내성) 하에서 선택
동작즉시 일관성점진적 수렴C/A 중 하나를 희생하는 경우가 많음
적합성금융, 원장, 결제SNS, 카운터, 추천분산 실패가 잦은 환경

BASE는 ACID의 반대말이 아니라 "다른 최적화"다. 모든 데이터가 BASE여야 하는 것은 아니고, 돈과 원장처럼 절대 틀리면 안 되는 데이터는 여전히 ACID가 맞다.

📢 섹션 요약 비유: 금고 비밀번호는 한 글자도 틀리면 안 되지만, 추천 상품 순위는 잠깐 흔들려도 괜찮다. BASE는 그 "잠깐 흔들려도 되는 정보"를 다루는 방식이다.


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

시나리오

소셜 앱의 "좋아요" 카운터가 전 세계에 분산돼 있다. 한국, 미국, 유럽 노드가 동시에 좋아요를 받으면 즉시 하나로 맞추기 어렵다.

  1. 기술사적 판단: 좋아요 숫자는 몇 초 늦게 맞아도 큰 문제가 없으므로 BASE가 적합하다.
  2. 충돌 처리: Last Write Wins (LWW)로 마지막 갱신을 선택하거나, Vector Clock으로 버전 충돌을 추적한다.
  3. 정합성 보완: Read Repair, Quorum (다수결) 읽기/쓰기, 배경 Anti-Entropy 동기화로 최종 수렴을 돕는다.

적용 사례

  • 쇼핑 카트
  • 세션 저장소
  • SNS 피드
  • 조회수/좋아요 카운터
  • 추천 로그

주의점

  • 은행 이체, 잔액, 회계 장부에는 부적합하다.
  • "언젠가 맞는다"는 말이 "대충해도 된다"는 뜻은 아니다.
  • 충돌 해결 정책이 없으면 데이터 품질이 급격히 흔들린다.

📢 섹션 요약 비유: 장난감 가게 재고 숫자는 몇 분 늦게 맞아도 되지만, 금전 출납부는 바로 맞아야 한다. BASE는 재고판, ACID는 금고 장부에 가깝다.


Ⅴ. 기대효과 및 결론

기대효과

  • 분산 환경에서 높은 가용성을 확보한다.
  • 노드 장애가 있어도 서비스 요청을 끊지 않는다.
  • 대규모 사용자 트래픽을 수평 확장하기 쉽다.

결론

BASE는 "완벽한 즉시 정합성"을 포기하는 대신 "서비스가 계속 살아 있는 상태"를 얻는 거래다. 데이터 엔지니어는 데이터의 성격에 따라 ACID와 BASE를 구분해서 써야 한다.

관련 개념 맵

  • 상위 개념: CAP (Consistency, Availability, Partition tolerance), 분산 시스템
  • 하위 개념: Eventually Consistency, Gossip Protocol, Quorum, LWW
  • 연관 개념: NoSQL, Cassandra, DynamoDB, Read Repair, Anti-Entropy

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

  1. 모든 친구가 동시에 정답을 말해야 하는 시험은 ACID예요.
  2. 먼저 각자 답을 적고 나중에 맞춰보는 것은 BASE예요.
  3. 조금 늦게 맞아도 되지만, 결국 같은 답으로 모이면 되는 거랍니다.