중복 요청이 다시 올 수 있음

핵심은 같은 요청이 여러 번 와도 저장된 최종 상태가 더 변하지 않게 만드는 것입니다.

분산 환경에서는 네트워크 재시도나 중복 메시지 때문에 동일한 요청이 반복될 수 있습니다. 그래서 중요한 질문은 “한 번 더 처리했을 때 데이터가 그대로인가, 추가로 변하는가?”입니다.

같은 요청 3회 전달
멱등

요청이 하나의 목표 상태로 수렴한다

같은 값을 다시 적용해도 결과는 바뀌지 않습니다. 처리 횟수보다 최종 상태가 기준입니다.

명령 성격
현재 값에 더하는 대신 목표 상태를 다시 맞춥니다.
대표 예시
PUT /accounts/7
balance = 50000
재시도 결과
처리 1회
처리 2회
처리 3회
최종 저장 상태는 그대로 유지
balance = 50000

여러 번 실행돼도 같은 행, 같은 값, 같은 결과에 머뭅니다.

비멱등

요청 횟수만큼 새 효과가 계속 쌓인다

같은 요청이더라도 매번 새 행을 만들거나 값을 증가시키면 결과가 누적됩니다. 재시도 자체가 곧 추가 변경이 됩니다.

명령 성격
현재 상태에 더하거나 새 기록을 추가합니다.
대표 예시
POST /orders
item = "A"
재시도 결과
order #101 created
order #102 created
order #103 created

같은 요청이 중복 전달될수록 주문, 이벤트, 증가분이 한 번씩 더 반영됩니다.

설계 포인트

재시도를 안전하게 허용하려면 비멱등 작업도 요청 ID, 중복 키, 조건부 업데이트로 한 번만 반영된 것처럼 보이게 만들어야 합니다.