백엔드 기초 재정비/스프링 계층 구조 이해

트랜잭션 실패 사례와 롤백 필요성 정리

namerong 2026. 3. 3. 21:06

1. 트랜잭션 실패 사례

1) 쇼핑몰 주문

순서도

고객 주문 요청
      ↓
주문 테이블에 레코드 생성
      ↓
결제 처리 (결제 API 호출 성공)
      ↓
재고 차감 → 재고 부족으로 실패

문제: 주문은 생성되었지만, 결제와 재고가 제대로 처리되지 않아 데이터 불일치 발생


2) 은행 계좌 이체

순서도

A계좌 출금 1000원
      ↓
B계좌 입금 1000원 → 실패

문제: A계좌 출금 후, B계좌 입금이 실패하면 돈이 사라진 것처럼 되는 심각한 오류 발생


3) 회원가입 + 포인트 지급

순서도

회원 정보 DB에 추가
      ↓
신규 회원 이벤트 포인트 지급 → DB 오류 발생

문제: 회원은 생성됐지만 포인트 지급 실패 → 서비스 정책 위반


2. 왜 롤백이 필요한가

롤백(Rollback)은 트랜잭션 전체를 이전 정상 상태로 되돌리는 작업입니다.

  • 원자성(Atomicity) 보장
    • 작업 중 일부만 성공하면 시스템 상태가 불일치
    • 실패 시 전체를 취소해야 함

예시:

주문 생성 → 결제 → 재고 차감
         ↓
재고 차감 실패 → 주문 생성과 결제도 취소(롤백)

→ 결과적으로 시스템은 항상 정상적이고 일관된 상태 유지


3. 최종 정리

  • 트랜잭션 실패는 부분 완료 상태 때문에 발생
  • 롤백은 데이터 무결성을 보장
  • 핵심 원칙: “모든 작업이 완료되거나, 전혀 수행되지 않음”