동일한 요청을 한 번 보내는 것과 여러 번 연속해서 보내는 것이 서버의 상태에 미치는 영향이 동일한 성질.
안전한 메서드(Safe Methods) 및 멱등한 메서드(Idempotent Methods)를 구분하여 HTTP 클라이언트의 재시도 안전성을 보장하는 기반이 된다.
Standard (공식 정의)
RFC 9110 HTTP Semantics 규격에 따른 정의는 다음과 같다.
Idempotent Methods: GET, HEAD, PUT, DELETE, OPTIONS, TRACE는 여러 번 수행해도 리소스의 최종 상태가 동일하다. 따라서 transient network failure 발생 시 클라이언트가 안전하게 재시도할 수 있다.
Non-Idempotent Methods: POST와 PATCH는 호출할 때마다 새로운 리소스가 생성되거나 상태 변경이 누적될 수 있어, 재시도가 안전하지 않다. 중복 처리를 방지하려면 별도의 Idempotency-Key 헤더와 같은 고유 분산 락/식별 메커니즘이 합의되어야 한다.
한계 / 주의점
멱등성은 서버가 보장해야 하는 계약이다: 클라이언트 입장에서 단순히 GET을 보낸다고 해서 서버가 내부적으로 멱등하게 처리하지 않고 사이드 이펙트(예: 조회수 1 증가 등)를 누적한다면 엄격한 의미의 멱등성은 깨질 수 있다. 그러나 HTTP 명세상 클라이언트는 RFC 규격을 신뢰하고 재시도를 감행하게 된다.
Idempotency-Key 계약의 부재: 아웃바운드 연동 시 상대방 서버가 Idempotency-Key 사양을 구현하지 않았다면, POST나 PATCH 호출 실패 시 클라이언트는 네트워크 지연 등의 원인으로 인해 요청이 이미 처리되었는지 알 수 없어 재시도가 불가능하다.