-
Notifications
You must be signed in to change notification settings - Fork 0
Description
요구사항
1. 결제 처리 기능
- 사용자는 예약된 주문(
PENDING)에 대해 결제를 요청할 수 있다. - 결제 요청 시 결제 금액이 주문 금액과 일치하는지 검증해야 한다.
- 결제가 성공하면 주문 상태를
PAID로 변경하고, 결제 이력을 저장한다. - 외부 PG사 연동은 Mocking 처리하여 비즈니스 로직에 집중한다. << 이거 어떻게 할 지 판단 필요
2. 주문 자동 취소 및 재고 복구
- 주문 예약 후 일정 시간(ex.5분) 내에 결제가 완료되지 않으면, 시스템은 해당 주문을 자동으로 취소(
CANCELLED) 처리해야 한다. - 주문이 취소됨과 동시에, 차감되었던 재고(
Stock)를 원래대로 복구해야 한다.
기술적 도전과제
1. 주문 결제 시간 만료 처리에 대한 고민
2. 결제와 취소 간의 동시성 이슈
- if) 사용자가 만료 직전(4분 59초)에 결제를 시도하고, 동시에 스케줄러가(5분 00초) 주문 취소를 시도하는 경우
- 주문은 취소됐는데 결제만 성공하거나, 결제는 성공했는데 재고가 복구되어버리는 정합성 불일치를 막기 위한 방어 로직 필요.
3. 재고 복구의 정합성
- 주문 취소 트랜잭션과 재고 증가 트랜잭션이 하나로 묶여야 함.
- 특히 재고 증가 시에도 1단계와 마찬가지로 동시성 제어에 대한 판단 필요.
Sub-issues
Metadata
Metadata
Assignees
Labels
No labels