같은 쓰기 요청, 다른 선택

ACID는 지금 맞는 상태를, BASE는 계속 응답하는 상태를 먼저 지킨다

둘은 누가 더 우월한 규칙이 아니라 어떤 실패를 더 싫어하는지에 대한 선택입니다. 하나는 즉시 정합성을, 다른 하나는 분산 환경의 가용성과 이후 수렴을 더 중시합니다.

공통 상황

같은 데이터 변경이 여러 사용자와 여러 노드에 동시에 보이는 환경. 이때 쓰기 직후 모두 같은 값을 보장할지, 아니면 잠시 달라도 서비스 응답을 유지할지를 결정해야 합니다.

비교 기준
ACID Atomicity · Consistency · Isolation · Durability
BASE Basically Available · Soft state · Eventual consistency
우선순위

커밋 순간부터 규칙이 맞아야 함

부분 반영이나 제약 조건 위반을 허용하지 않습니다. 지금 보는 값이 곧 정답이어야 하는 데이터에 맞습니다.

장애 중에도 서비스가 계속 열려 있어야 함

일부 노드가 느리거나 끊겨도 시스템 전체 응답은 유지합니다. 잠시 불일치는 나중에 맞추는 쪽을 택합니다.

쓰기 직후

다른 트랜잭션은 중간 상태를 보지 못함

출금만 되고 입금은 안 된 상태처럼 미완료 변경을 숨겨 즉시 일관된 결과를 만듭니다.

노드마다 잠시 다른 값을 볼 수 있음

복제가 퍼지는 동안 어떤 노드는 새 값, 어떤 노드는 이전 값을 볼 수 있습니다. 이후 전파가 끝나면 최종적으로 수렴합니다.

문제가 나면

정합성을 못 지키면 롤백

일부만 반영될 위험이 있으면 작업을 되돌립니다. 그 대신 대기나 실패 응답이 생겨도 잘못된 확정 상태는 남기지 않습니다.

먼저 응답하고 뒤에서 복구

남은 노드가 요청을 처리하고, 느리거나 죽었던 노드는 복구 후 값을 따라잡습니다. 가용성 유지가 우선입니다.

잘 맞는 데이터

계좌 이체, 재고, 예약

한 번의 틀린 상태가 바로 사고로 이어지는 업무 데이터.

피드, 캐시, 프로필 변경

잠깐 예전 값이 보여도 괜찮고 서비스 지속성이 더 중요한 데이터.

정리: ACID는 즉시 정확해야 하는 상태, BASE는 계속 응답해야 하는 상태에 더 적합합니다. 핵심 차이는 기능 목록이 아니라 일관성과 가용성 중 무엇을 먼저 지키는가입니다.