피드로 돌아가기
Dev.toBackend
원문 읽기
Idempotency Key와 다층 방어 체계를 통한 중복 결제 원천 차단 설계
Why Doesn't an E-Commerce Payment API Get Called Twice When Users Double-Click the Pay Button?
AI 요약
Context
사용자의 중복 클릭이나 네트워크 재시도 요청으로 인한 다중 결제 발생 위험 상존. Frontend 단의 버튼 비활성화만으로는 API 직접 호출이나 분산 환경의 Race Condition을 제어하는 데 한계 노출.
Technical Solution
- 클라이언트 요청 시 고유한 Idempotency Key를 생성하여 요청의 유일성 보장
- API Gateway 및 Payment Service에서 Key 기반의 처리 상태를 확인하여 중복 요청 시 기존 결과값 즉시 반환
- Database 레벨의 Unique Constraint 설정을 통한 데이터 무결성 최후 보루 구축
- Redis 기반의 Distributed Locking 도입으로 분산 서버 환경에서의 동시성 제어 및 Race Condition 방지
- Payment Gateway 제공 Idempotency-Key 헤더 활용을 통한 외부 연동 구간의 중복 과금 차단
- Defense in Depth 전략을 적용하여 UI, API, DB, 외부 게이트웨이 전 구간의 다층 방어 체계 구성
실천 포인트
1. 결제 및 주문 API 설계 시 클라이언트 생성 Idempotency Key 도입 여부 검토
2. 분산 환경 내 동일 리소스 접근 시 Redis 등을 활용한 Distributed Lock 적용
3. DB Schema 설계 시 비즈니스 키에 대한 Unique Index 설정 확인
4. 외부 API 연동 시 상대측 시스템의 Idempotency 지원 여부 확인 및 헤더 적용