[고도화] 결제시 동일한 카트에 대한 중복 결제 문제
Closed this issue · 0 comments
Hyeon-Uk commented
동작 과정
배경
사용자는 카트에 담긴 상품들을 결재할 수 있다. 따라서 결재하기에 앞서 주문하고자 하는 상품을 카트에 담는 과정이 선행되어야 한다.
- 결제할 리스트를 만들기 위한 시퀀스
- 카트repository에 저장된 cart를 받아온다.
- cart에 저장된 아이템들의 validation을 진행한다.
- 모든 validation이 통과하면 order를 만든다
- cart를 flush한다.
- validation이 통과하지 못하면 cart는 그대로 유지된다.
현재의 코드는 동시성 제어가 부재인 상황이기 때문에, 사용자의 중복 요청(일명 따닥)이 발생하는 경우 중복 결재가 발생할 우려가 있다.
- 발생 예시
- 1번 쓰레드와 2번 쓰레드 모두 customerID가 일치함.(따닥이기때문에)
- 1번 쓰레드가 카트repository에 저장된 cart를 받아온다.
- 1번 쓰레드가 validation을 진행한다.
- 2번 쓰레드도 카트repository에 저장된 cart를 받아온다.
- 2번 쓰레드가 validation을 진행한 뒤, 1번과 2번 쓰레드 모두 결제를 진행하여 order를 생성함 ⇒ 중복결제