-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
현재 재고 차감 작업 방식
- 주문 메서드에서 재고 차감 이벤트 발행 -> 책임 분리 위함
- 락과 트랜잭션 관계를 고려해 주문 트랜잭션 커밋 후, 재고 차감 작업을 비동기로 실행
- 사용자는 '주문 접수'로 먼저 응답 받고, 주문 내역 조회를 통해 완료, 실패 결과를 확인할 수 있음
- 재고 차감 실패 시 주문 작업에 대한 보상 트랜잭션 실행
문제점
서버에서는 주문, 결제 서비스가 분리되어있지만
사용자 입장에서는 주문, 결제가 한 플로우로 이루어짐.
주문 트랜잭션이 커밋된 후, 결제가 진행된다면 재고 차감 작업보다 결제가 먼저 실행될 수 있음.
만약 결제가 먼저 수행되고 재고 차감 실패로 인해 주문이 취소되었다면 데이터 정합성이 깨질 수 있음.
해결 방안
재고 차감 작업이 주문 트랜잭션 안에서 원자적으로 수행될 수 있도록 수정
고려사항
1. 주문 서비스에 많은 책임이 부여됨(재고차감, 쿠폰 사용, 주문 생성...)
2. 재고 차감에 적용된 락 기능 수정 필요
주문과 재고 차감 트랜잭션이 분리되어, 재고 차감에 대한 안정적인 락 처리가 가능했지만
원자적으로 처리하는 경우, 락과 트랜잭션 순서를 다시 정리해야 함.
Metadata
Metadata
Assignees
Labels
No labels