728x90
반응형
DB
-
트랜잭션 경계는 같이 성공하거나 같이 실패해야 하는 범위입니다AI Agent 2026. 8. 5. 13:00
주문 하나를 만든다고 해도 실제로는 여러 테이블이 바뀝니다.주문 행을 만들고, 재고를 줄이고, 결제 기록을 남기고, 쿠폰 사용 상태를 바꿉니다.이 중 하나만 성공하고 나머지가 실패하면 데이터는 보기 좋게 깨집니다.경계 안의 작업은 운명을 같이합니다트랜잭션은 이 작업들을 하나의 운명으로 묶습니다.전부 성공하면 커밋합니다.하나라도 실패하면 롤백합니다.핵심은 SQL 문법이 아니라 경계입니다.무엇이 반드시 함께 성공해야 하는지 정하는 순간부터 트랜잭션 설계가 시작됩니다.외부 API 호출은 조심해서 넣습니다트랜잭션 안에 오래 걸리는 외부 API 호출을 넣으면 DB 락을 오래 잡을 수 있습니다.결제사 호출, 이메일 발송, 웹훅 전송은 DB 트랜잭션과 같은 방식으로 되돌릴 수 없습니다.이런 작업은 outbox 패턴이..