데이터 일관성 모델

같은 쓰기 요청도 처리 원칙이 다르다

ACID는 커밋되는 순간의 정확한 상태를 먼저 지키고, BASE는 분산 환경에서도 서비스를 계속 열어 둔 채 시간이 지나며 상태를 맞춰 갑니다.

공통 상황
동시에 쓰기 요청이 들어오고 일부 노드가 늦거나 잠시 실패할 수 있습니다. 이때 시스템은 지금 바로 같은 값이어야 하는지, 아니면 일단 응답을 유지한 뒤 나중에 맞춰도 되는지를 먼저 결정합니다.
ACID
주로 RDB 트랜잭션
커밋 전까지 정합성을 잠그고 지킨다
Atomicity · Consistency · Isolation · Durability
처리 규칙
전부 성공해야 커밋, 아니면 전체 롤백
부분 반영을 남기지 않아 중간 실패가 사용자 상태로 노출되지 않습니다.
보이는 상태
커밋 직후에도 읽는 쪽이 하나의 정답을 봅니다
동시 접근은 격리되고, 반영된 데이터는 지속되어 지금 맞는 값이 중요할 때 유리합니다.
잘 맞는 데이터
계좌 이체, 주문 결제, 재고 차감
한 번이라도 틀리면 바로 장애나 금전 손실로 이어지는 업무 처리
BASE
주로 NoSQL 분산 시스템
가용성을 유지하고 나중에 같은 상태로 수렴한다
Basically Available · Soft state · Eventually consistent
처리 규칙
일단 응답을 유지하고 복제·동기화는 뒤에서 진행
일부 노드가 늦어도 서비스 전체가 멈추지 않도록 운영 우선순위를 둡니다.
보이는 상태
잠시 서로 다른 값을 볼 수 있어도 결국 같은 값으로 수렴
복제 지연 동안 soft state가 생기지만, 시간이 지나면 eventually consistent 상태에 도달합니다.
잘 맞는 데이터
좋아요 수, 피드, 대규모 세션·캐시
잠깐의 불일치보다 응답 지속성과 확장성이 더 중요한 서비스 데이터
한 줄 정리
ACID는 "커밋 시점에 반드시 정확해야 할 때", BASE는 "서비스를 계속 열어 두고 나중에 맞춰도 될 때" 선택하는 모델입니다.