Transaction design

트랜잭션 실패 경로

정합성이 필요한 작업을 보호하되, 외부 호출이나 긴 계산을 포함하면 잠금과 롤백 범위가 커져 운영 문제가 생길 수 있습니다.

범위

범위 최소화

주문 생성, 재고 감소처럼 한 번에 확정되어야 하는 DB 쓰기만 포함합니다.

external

외부 호출 제외

결제 승인, 이메일 발송은 커밋 이후 이벤트나 큐로 분리하는 편이 안전합니다.

isolation

고립성 선택

동시성 요구가 높을수록 DB 기본값과 비즈니스 규칙의 차이를 확인합니다.

error

예외와 응답

예외는 롤백을 일으키고, 사용자 응답은 NestJS 예외 필터에서 정리합니다.

인터랙티브 트랜잭션

중간 조회 결과에 따라 다음 쓰기가 달라지는 주문 처리에 적합합니다.

배치 트랜잭션

서로 독립적인 업데이트를 한 번에 성공 또는 실패시킬 때 단순합니다.