데이터베이스 트랜잭션이 지켜야 할 4가지 약속을 ’은행 송금’ 예로 풀어보기

글자긴 이름은행 송금에 빗댄 쉬운 설명
AAtomicity
(원자성)
“올‑오어‑낫싱”
내 통장에서 −10만 원, 친구 통장에 +10만 원이 둘 다 성공하거나, 둘 다 안 되거나. 중간에 컴퓨터가 꺼져도 ‘−10만만 되고 +10만은 안 된’ 상태는 없다.
CConsistency
(일관성)
“규칙 지키기”
이체 전·후에도 잔액 ≥ 0 같은 은행 규칙이 항상 만족. 규칙을 깨는 결과는 애초에 커밋되지 않는다.
IIsolation
(격리성)
“각자 방에서 작업”
동시에 여러 사람이 이체해도 내 트랜잭션은 마치 혼자 실행한 것처럼 보인다. 진행 중인 값(임시 잔고)을 다른 사람에게 보여주지 않는다.
DDurability
(지속성)
“영수증이 영원히 남음”
이체 ‘완료’ 메시지를 받았다면 서버가 꺼져도 로그·디스크에 남아 있어 나중에 복구된다.

왜 중요할까?

  • Atomicity 덕분에 중간 실패로 인한 ‘돈 증발’이 없다.
  • Consistency 와 Isolation 덕분에 여러 사람이 동시에 써도 규칙이 깨지지 않는다.
  • Durability 덕분에 전원 장애가 나도 완료된 거래 가 되살아난다.

참고: Jetpack Compose에서도 “멱등성(idempotent) → 같은 입력엔 같은 결과가 보장” 이라는 비슷한 안정성 원칙이 중요합니다. 이는 데이터베이스의 원자·일관성 개념과 맞닿아 있습니다.