-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
배경
Flash Sale에서는 예약과 실제 판매 확정을 분리해야 한다.
예약 성공 후 결제가 완료되면 reserved -> sold, 결제 실패/만료 시 reserved -> available로 상태를 전이해야 한다.
구현 내용
1. 결제 성공 시 confirmation 흐름 구현
- 입력:
reservationId,orderId - 검증:
- reservation 존재 여부
- reservation 만료 여부
- 이미 확정되었는지 여부
- 처리:
reserved -= qtysold += qtyversion += 1- 상태를
CONFIRMED로 전이
2. 결제 실패/사용자 이탈/TTL 만료 시 release 흐름 구현
- 입력:
reservationId - 처리:
reserved -= qtyavailable += qtyversion += 1- 상태를
RELEASED또는EXPIRED로 전이
3. 주문/결제와의 연결
- 주문 생성은
reservationId기반으로 가능해야 함 - 결제 성공 이벤트 수신 시 confirmation 수행
- 결제 실패/타임아웃 시 release 수행
4. 멱등 처리
- 같은 confirmation/release 요청이 두 번 와도 중복 반영되지 않아야 함
체크리스트
- confirmation 내부 API 구현
- release 내부 API 구현
- reservation 상태 전이 검증 구현
- 결제 성공 시 confirmation 연결
- 결제 실패/타임아웃 시 release 연결
- 멱등 처리 구현
- 상태 전이 테스트 작성
- 중복 호출 테스트 작성
의존관계
선행
- Flash Sale reservation 구현
후행
- 이벤트 반영 및 projection 구현
- reconciliation 구현
작업 순서
- confirmation/release 내부 API 구현
- 주문/결제 플로우와 연결
- 멱등성 처리
- 테스트 추가
완료 조건
- 결제 성공 시 reservation이 판매 확정으로 전이된다.
- 결제 실패/만료 시 재고가 원복된다.
- 동일 요청 중복 처리 시 상태가 깨지지 않는다.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels