TestForge | Aidevops | 📊 Plogger ✍️ Blog 📚 Docs
plogger

AI DevOps Korea

AI 서비스 개발, 운영, 성능개선을 하나의 루프로 연결합니다

aidevops.kr에서 LLMOps, RAG, AI Agent, 관측성, 평가, 비용-성능 최적화를 실전 운영 관점으로 정리합니다.

API Idempotency Key 생명주기 설계

· 수정 4월 28일

Idempotency는 흔히 “같은 요청을 두 번 보내도 한 번만 처리된다”로 설명되지만, 운영에서 더 어려운 질문은 그 약속을 얼마나 오래 기억할지, 그리고 무엇을 같은 요청으로 볼지입니다.

개념보다 생명주기가 더 중요하다

팀은 최소한 다음 질문에 답할 수 있어야 합니다.

  • 누가 key를 생성하는가
  • 어디에 저장하는가
  • 어떤 요청 필드와 결합되는가
  • 언제 만료되는가
  • 재사용 시 어떤 응답을 replay하는가

이 규칙이 없으면 idempotency는 부분적인 안전장치에 그칩니다.

key는 요청이 아니라 의도를 대표해야 한다

좋은 key는 단순한 중복 요청 식별자가 아니라 하나의 논리적 비즈니스 시도를 표현해야 합니다. 그래서 보통 다음을 함께 저장합니다.

  • 정규화된 요청 fingerprint
  • tenant 또는 사용자 식별자
  • 처리 상태
  • 최종 성공 응답 또는 실패 상태

이렇게 해야 우연한 key 재사용이 엉뚱한 결과를 돌려주지 않습니다.

만료 시간도 제품 결정이다

TTL이 너무 짧으면 중복 재시도가 보호 창을 벗어날 수 있습니다. 반대로 너무 길면 비싼 상태를 오래 들고 가고, replay 동작도 예측하기 어려워집니다.

좋은 TTL은 보통 비즈니스 의미와 함께 정합니다.

  • 일시적 재시도 보호용이면 몇 분
  • 결제 확인 창이라면 몇 시간
  • 더 길게 잡는 경우는 클라이언트 재시도 행태가 정말 그걸 요구할 때만

replay 동작은 계약으로 문서화해야 한다

같은 key가 다시 왔을 때 API가 무엇을 돌려주는지는 명확해야 합니다.

  • 원래 성공 결과
  • 아직 처리 중이라는 상태
  • fingerprint가 다르면 conflict

가장 안전한 시스템은 replay를 구현 세부사항이 아니라 API 계약의 일부로 다룹니다.

Continue Reading

다음으로 읽기 좋은 글

다음 탐색

이 주제를 시스템 관점으로 더 이어서 보기