-
멱등성은 같은 요청을 두 번 보내도 결과가 망가지지 않는 성질입니다AI Agent 2026. 8. 4. 13:00728x90반응형

멱등성은 중복 실행을 없애는 기술이 아니라, 중복 실행되어도 결과가 하나로 수렴하게 만드는 계약입니다. 사용자는 버튼을 한 번만 누르지 않습니다.
네트워크가 느리면 다시 누르고, 브라우저가 멈춘 것 같으면 새로고침하고, 모바일 앱은 같은 요청을 재전송합니다.
서버 입장에서는 “같은 의도”가 여러 번 도착합니다.
멱등성은 여기서 시작합니다.
같은 의도의 요청이 두 번 들어와도 결과가 두 배가 되지 않게 하는 성질입니다.멱등성 키는 요청의 이름표입니다
가장 흔한 방법은 클라이언트가 요청마다 고유한 멱등성 키를 보내는 것입니다.
서버는 그 키로 이미 처리한 요청인지 확인합니다.
처음 온 요청이면 처리하고 결과를 저장합니다.
같은 키가 다시 오면 작업을 다시 하지 않고 저장된 결과를 돌려줍니다.
핵심은 “중복 요청을 막는다”가 아닙니다.
중복 요청이 와도 같은 결과를 돌려주는 것입니다.POST도 멱등하게 만들 수 있습니다
GET이나 PUT은 상대적으로 멱등성을 떠올리기 쉽습니다.
하지만 결제, 주문 생성, 쿠폰 발급처럼 POST로 처리하는 작업도 멱등하게 설계할 수 있습니다.
요청 본문과 사용자, 멱등성 키를 함께 묶어 중복 여부를 판단하면 됩니다.
같은 키에 다른 본문이 오면 성공이 아니라 충돌로 보는 편이 안전합니다.어디까지 같은 요청인지 먼저 정해야 합니다
멱등성의 어려운 지점은 저장소가 아니라 기준입니다.
같은 사용자의 같은 키만 같은 요청인지, 같은 주문 번호까지 같아야 하는지, 시간 제한은 둘지 정해야 합니다.
이 기준이 없으면 키 저장 테이블만 늘어나고 버그는 그대로 남습니다.
저는 멱등성을 배울 때 “재시도해도 안전한가”라는 질문 하나로 먼저 자릅니다.마지막으로 확인할 것은 하나입니다.
이 개념을 외웠는지가 아니라, 실패했을 때 어떤 상태가 남는지 설명할 수 있는지입니다.728x90반응형'AI Agent' 카테고리의 다른 글
백프레셔는 빠른 생산자에게 천천히 보내라고 말하는 구조입니다 (0) 2026.08.04 레이스 컨디션은 코드 순서가 아니라 실행 순서가 바뀌는 버그입니다 (0) 2026.08.04 주석엔 '검증함', 검증은 안 돼 있었다 (0) 2026.08.04 다 채워진 화면을 어디까지 믿어야 하나 (0) 2026.08.03 같은 버그를 세 번 고치고, 네 번째엔 코드 대신 문장을 적었습니다 (0) 2026.08.03