Failure path review

트랜잭션 설계 점검 기준

트랜잭션은 코드가 길어지는 문제가 아니라 실패했을 때 데이터가 어떤 상태로 남는지의 문제다.

범위 최소화

좋은 설계

짧은 범위

DB 변경만 묶고 계산과 외부 호출은 밖으로 뺀다.

단일 실패 응답

중간 단계 실패도 하나의 rollback 기준으로 해석한다.

명시적 격리

동시 주문, 재고 차감처럼 충돌 가능성이 있는 지점을 표시한다.

재시도 기준

일시 실패와 비즈니스 실패를 같은 예외로 섞지 않는다.

위험 신호

냄새결과
트랜잭션 안의 네트워크 호출잠금 시간이 길어지고 타임아웃이 늘어난다.
여러 repository가 각자 저장일부 성공 상태가 남을 수 있다.
catch 후 계속 진행실패를 성공 응답으로 숨길 수 있다.
rollback 누락연결 반환과 데이터 정합성이 함께 흔들린다.