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

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

왜 중요할까?

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

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