Transaction Guardrail

트랜잭션 정합성 범위

TypeORM QueryRunner와 Prisma $transaction을 쓸 때 DB 작업, 외부 부수 효과, 재시도 지점을 분리해 긴 잠금과 중복 처리를 피합니다.

범위

커밋 단위

주문 생성, 재고 차감, 결제 상태 저장처럼 함께 성공해야 하는 쓰기 작업만 묶습니다.

Runner

실행 경계

TypeORM은 QueryRunner, Prisma는 interactive transaction으로 같은 connection 안의 작업을 제한합니다.

Effect

외부 호출

이메일, 웹훅, 결제 승인처럼 롤백되지 않는 작업은 outbox나 큐 뒤로 보냅니다.

Retry

재시도 기준

unique constraint, deadlock, timeout을 구분해 멱등 키와 보상 작업을 준비합니다.