결제 버튼을 눌렀는데 화면이 멈춰서 한 번 더 눌렀더니 이중 결제가 된 경험, 한 번쯤 있으시죠? 네트워크 타임아웃이나 자동 재시도 상황에서 서버는 같은 요청이 재시도인지 새 요청인지 구분할 수 없기 때문에 발생하는 문제입니다. 멱등성은 엘리베이터 버튼처럼, 같은 요청을 여러 번 보내도 결과가 한 번 보낸 것과 똑같이 유지되도록 만드는 설계 원칙입니다.
이번 영상에서는 HTTP 메서드별 멱등성 여부부터 시작해서, Idempotency-Key를 활용한 중복 요청 판별 흐름, 결제 API에 적용하는 Before/After 코드 비교, DB 유니크 제약을 활용한 최후의 안전장치, Redis + TTL을 활용한 응답 캐싱, 분산 환경에서 서로 다른 서버로 요청이 가도 동일한 멱등성을 보장하는 분산 락 전략, 그리고 Exponential Backoff + Jitter를 적용한 재시도 전략까지 Stripe·PayPal이 실제로 쓰는 패턴으로 정리했습니다.
📌 이런 분들에게 추천합니다
- 결제·주문 같은 부작용 있는 API를 설계하는 백엔드 개발자
- 면접에서 "멱등성", "HTTP 메서드별 멱등성 차이"를 명확하게 답하고 싶은 분
- 네트워크 타임아웃이나 재시도로 인한 중복 처리 문제를 겪어본 분
- 분산 환경에서 안전한 재시도 전략을 설계하고 싶은 개발자
#멱등성 #Idempotency #IdempotencyKey #API설계 #백엔드개발