본문 바로가기
Etc

결제 안정성 확보

by SuperDT 2025. 9. 21.

 

결제는 오류가 발생할 경우, 매우 크리티컬하기 때문에

아래와 같은 다양한 방법으로 안정성을 확보하는 것이 중요합니다

 

주로 사용하는 방법은 Idempotent API 설계

동일 요청이 여러 번 호출되더라도 결과가 중복 처리되지 않도록 보장하는 설계

 

request_id(UUID) 또는 거래 고유 키를 요청에 포함

서버 단에서 request_id 기준으로 처리 여부를 조회 후 이미 처리된 요청은 무시하거나 처리 결과를 재반환

 

네트워크 지연, 중복 호출, 앱 재시도 시에도 중복 결제를 방지

 

그 다음 재시도 정책 (Retry Policy) 적용

외부 PG사/인증 시스템에서 일시적 오류가 발생했을 때 안정적으로 재시도

 

exponential backoff (점진적으로 대기 시간 증가) 적용, 최대 재시도 횟수 제한(예: 3회)

재시도 후에도 실패하면 트랜잭션 로그에 기록하고 보류 상태 처리

 

일시적 네트워크 오류나 장애 발생 시 자동 복구율 향상, 사용자 경험 개선(불필요한 결제 실패 감소)

 

트랜잭션 로그 (Transaction Log)

모든 결제 요청·응답을 DB/로그 시스템에 원자적으로 기록

 

결제 요청 전/후 상태(requested, approved, failed, rollback)를 기록

분산환경에서는 이벤트 소싱(Event Sourcing) 또는 메시지 큐를 활용해 로그 일관성 유지

 

장애 발생 시 재처리와 추적이 가능, 정산과 환불 시 기준 데이터로 활용 가능

 

위의 3가지는 기본적으로 적용되어야 한다고 생각한다

추가적으로 더 좋은 안정성 확보 방법이 있다면 공유부탁드립니다

 

'Etc' 카테고리의 다른 글

Design Pattern2 - Adapter  (0) 2025.09.28
간단한 SQL 튜닝 팁  (0) 2025.09.28
nofile이란?  (0) 2025.09.21
크레덴셜 스터핑  (0) 2025.09.14
ARS 인증의 무력화  (0) 2025.09.14