🐥주니어 개발자의 개발 일기🐥

네번 째, 주니어 개발 일기🙂

j_estory 2022. 10. 12. 17:46

💡오늘의 이슈💡

✅ 주문 프로세스 내에서 중복 호출에 대한 비즈니스 로직 대응

나의 회사에서는 C2C 거래를 중점적으로 진행하고 있다. 오늘 발생 한 이슈는 

  • 구매자 결제 완료
  • 판매자 판매 수락 / 구매자 취소
    • 이 두가지가 거의 동시간대에 요청이 된 이슈였다.
    • 좀 더 자세하게 설명하자면, 구매자가 취소를 하고 취소 process를 타는 동안 판매자는 client 단에서 새로고침 없이 주문확인 버튼이 눌러 요청되었고 최종 상태는 pg사 취소 까지 모두 완료되었지만 주문 상태가 '주문확인' 상태였다.
    • 해당 이슈를 분석 해본 결과 판매 수락 API 내에서도 취소에 대한 데이터 체크가 필요하다고 판단하였다. 

📘 해결과정

  • 모든 취소 로직 내의 docDb에 취소 데이터에 대한 이력을 저장하고 있다. 
  • 취소 로직 시, RDB의 존재 여부를 확인하여 validation 체크를 할 경우, RDB 같은 경우 동기화 하는데 시간이 DocDB에 대한 체크 보다 더 걸릴 것으로 판단하였다. 
  • 주문 확인 로직에서 docDB의 해당 주문번호가 존재하는지 확인하여 존재할 경우 주문확인 process를 타지 않도록 수정하였다.