yeoseon / tip-archive

트러블 슈팅 및 팁을 모아두는 레포 (Today I Learned)
29 stars 2 forks source link

중복거래 이슈 해결방안에 대해 고민 #279

Open yeoseon opened 3 years ago

yeoseon commented 3 years ago

기술, 운영 측면에서 이해해보는 시간 갖기.. (면접에도 도움될 것 같고)

yeoseon commented 3 years ago

서버 단 처리

  1. 서버단에서 분산 락 처리하기
    • 두번째 거래가 인입되었을 때 Lock이 되어 처리되지 않으나, 어떤 오류메시지를 노출해야할 지 문제 (성공? 실패?)
    • 이미 처리된 거래입니다. 중복요청입니다.. 라고 하기엔, 첫번째 거래가 이미 처리 진행중이거나 실패할 수 있기 때문에 ..
    • 모든 거래에 대해서 분산락을 적용해야 하는지..
    • 락걸린 후 타임아웃 거래는 어찌해야 할지..

로직으로 해결

  1. 시간 처리

    • PK 단위로 매우 짧은 시간 (1초 미만 등)ㄷ 동안 중복인입되는 거래가 들어올 경우, 두번째 거래에 대해 exception 처리
    • PK 정보 테이블을 Lock 하는 방식으로 방어할 수 있음
  2. 값 처리

    • 동일한 PK, 동일한 금액 등이 연속적으로 들어올 경우, 중복거래 여부에 대한 고객 안내 (내가 실제로 이전 회사에서 처리했던 방법)

화면에서 해결

yeoseon commented 3 years ago

분산락 방식 이해하기 (FDS?)