Notice
Recent Posts
Recent Comments
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Spring & Java

멱등성 본문

결제 시스템/멱등성

멱등성

dev.hyuck 2026. 2. 3. 19:02

 

멱등성 ( Idempotency ) 이란?

1. 멱등성의 수학적 정의

멱등성 ( Idempotnecy )은 수학과 컴퓨터 과학에서 사용되는 개념으로, 연산을 여러 번 적용해도 결과가 달라지지 않는 성질을 의미합니다.

 

2. API에서의 멱등성 의미

API에서 멱등성은 동일한 요청을 여러번 보내도 서버의 상태가 한 번 요청한 것과 동일함을 의미합니다.

멱등한 API : 같은 요청을 1번 보내나 100번 보내나 결과가 같음
멱등하지 않은 API : 같은 요청을 보낼 때마다 결과가 달라질 수 있음

그렇다면 왜 API 멱등성이 중요할까요?

분산 시스템에서는 네크워크 불안정, 타임아웃, 재시도 등의 이유로 같은 요청이 여러 번 도달할 수 있습니다.

 

HTTP 메서드별 멱등성

HTTP 스펙에서 정의하는 메서드별 멱등성 : 

 

메서드별 멱등성 정리

참고 : 안전 (Safe)은 서버 상태에서 변경하지 않음을 의미하고, 멱등은 여러 번 호출해도 결과가 같음을 의미합니다.

 

멱등한 요청 vs 비멱등 요청 비교

예를들어, 1만원 짜리 잔액을 여러번 요청해도 잔액이 변함이 없다면 멱등한 요청인것이고, 만약 1만원 짜리 잔액을 보냈는데 2만원이 된다면 이건 비멱등 요청이 된 것이라고 판단한다.

 

핵심 차이
멱등한 요청:
- "상태를 X로 설정해라" (절대값)
- 예: PUT /users/1 { balance: 10000 }

비멱등 요청:
- "X만큼 변경해라" (상대값)
- 예: POST /users/1/charge { amount: 10000 }


왜 결제에서 멱등성이 중요할까?

1. 네트워크 재시도 시나리오

네트워크는 신뢰할 수 없습니다. 다양한 이유로 같은 요청이 여러 번 전송될 수 있습니다.

재시도가 발생하는 상황


2. 사용자 더블클릭 문제

사용자는 응답이 느리면 본능적으로 버튼을 다시 클릭합니다.

중요 : 프론트엔드 방어는 보조 수단일 뿐, 백엔드에서 반드시 멱등성을 보장해야 합니다.


3. 멱등성 없을 때 중복 결제 발생

멱등성이 없는 결제 시스템에서 발생할 수 있는 최악의 시나리오 :