1. 트랜잭션 실패 사례
1) 쇼핑몰 주문
순서도
고객 주문 요청
↓
주문 테이블에 레코드 생성
↓
결제 처리 (결제 API 호출 성공)
↓
재고 차감 → 재고 부족으로 실패
문제: 주문은 생성되었지만, 결제와 재고가 제대로 처리되지 않아 데이터 불일치 발생
2) 은행 계좌 이체
순서도
A계좌 출금 1000원
↓
B계좌 입금 1000원 → 실패
문제: A계좌 출금 후, B계좌 입금이 실패하면 돈이 사라진 것처럼 되는 심각한 오류 발생
3) 회원가입 + 포인트 지급
순서도
회원 정보 DB에 추가
↓
신규 회원 이벤트 포인트 지급 → DB 오류 발생
문제: 회원은 생성됐지만 포인트 지급 실패 → 서비스 정책 위반
2. 왜 롤백이 필요한가
롤백(Rollback)은 트랜잭션 전체를 이전 정상 상태로 되돌리는 작업입니다.
- 원자성(Atomicity) 보장
- 작업 중 일부만 성공하면 시스템 상태가 불일치
- 실패 시 전체를 취소해야 함
예시:
주문 생성 → 결제 → 재고 차감
↓
재고 차감 실패 → 주문 생성과 결제도 취소(롤백)
→ 결과적으로 시스템은 항상 정상적이고 일관된 상태 유지
3. 최종 정리
- 트랜잭션 실패는 부분 완료 상태 때문에 발생
- 롤백은 데이터 무결성을 보장
- 핵심 원칙: “모든 작업이 완료되거나, 전혀 수행되지 않음”
'백엔드 기초 재정비 > 스프링 계층 구조 이해' 카테고리의 다른 글
| GlobalExceptionHandler (0) | 2026.03.06 |
|---|---|
| Exception 종류 정리 (0) | 2026.03.04 |
| 트랜잭션(Transaction) 개념과 주문 생성 예제 (0) | 2026.03.02 |
| 로그인 API가 하는 일과 요청 → 응답 흐름 정리 (0) | 2026.02.27 |
| DTO vs Entity 정리 (0) | 2026.02.26 |