- 멱등성은 연산을 여러 번 적용해도 결과가 달라지지 않는 성질로, HTTP에서는 동일한 요청을 여러 번 보내도 서버에 미치는 영향이 단일 요청과 같음을 의미합니다. 🔄
- 클라이언트 타임아웃, 더블클릭, 불안정한 네트워크 등 제어할 수 없는 외부 요인으로 인한 예기치 못한 중복 요청 문제를 해결하기 위해 멱등한 API 설계가 필요합니다. 🛡️
- GET, HEAD, PUT, DELETE, OPTIONS는 기본적으로 멱등하지만, POST와 PATCH는 멱등하지 않으므로 필요시 시스템 내부에서 멱등성을 직접 보장해야 합니다. 🛠️
- 멱등하지 않은 API는 결제 중복, 재고 오작동 등 치명적인 서버 리소스 변화를 초래할 수 있어, 재요청에도 안전한 API 설계가 중요합니다. 💸
- 중복 요청을 구별하기 위해 클라이언트가 '멱등키(Idempotency Key)'를 요청과 함께 보내고, 서버는 이 키를 기반으로 중복 여부를 판단하고 처리합니다. 🔑
- 서버는 멱등키와 요청 처리 상태(진행 중/완료), 응답 정보를 저장하여 중복 요청 시 이전에 저장된 응답을 반환함으로써 불필요한 재처리를 방지합니다. 💾
- 멱등성은 중복 요청 처리가 시스템에 치명적인 영향을 미치는 결제, 재고 수정 등 핵심 기능에만 선별적으로 적용하는 것이 효율적입니다. 🎯
- 멱등키 도입은 서버의 관리 리소스와 복잡도를 증가시키므로, 모든 API에 적용하기보다는 필요성과 비용을 고려하여 신중하게 결정해야 합니다. ⚖️
데브허브 | DEVHUB | [10분 테코톡] 밍곰의 멱등성