트랜잭션 경계

트랜잭션 업무 경계

NestJS에서 트랜잭션을 다룰 때는 ORM API보다 경계 길이, 외부 호출 포함 여부, rollback 기준을 먼저 정해야 합니다.

경계 설정

Atomic Unit

주문 생성과 재고 차감처럼 함께 성공해야 하는 DB 변경을 하나의 작업 단위로 묶습니다.

실행 방식

Manager / Client Transaction

TypeORM manager나 Prisma transaction 안에서 같은 연결과 컨텍스트로 쿼리를 수행합니다.

실패 처리

Rollback

중간 예외가 발생하면 이미 수행한 변경을 취소해 부분 저장으로 인한 데이터 불일치를 막습니다.

짧게 유지

No Long Work

네트워크 호출, 파일 처리, 긴 계산을 트랜잭션 안에 넣으면 lock 시간이 길어져 성능이 흔들립니다.