동일성 구현의 복잡성과 두 번째 요청 처리

원제: Idempotency is easy until the second request is different

왜 중요한가

분산 시스템과 결제 API 등에서 데이터 일관성과 신뢰성 확보가 중요해지고 있음

개발자가 API 동일성(idempotency) 구현 시 첫 번째 요청은 쉽지만, 두 번째 요청부터 복잡해진다고 설명했다. 같은 키에 다른 내용의 요청, 동시 실행, 부분 실패 등 다양한 시나리오를 고려해야 하며, 단순한 응답 캐싱으로는 해결되지 않는다고 강조했다.

Dochia 개발 블로그에서 API 동일성 구현의 복잡성을 분석한 글을 게시했다. 일반적으로 동일성은 Idempotency-Key를 사용해 응답을 저장하고 재사용하는 방식으로 구현되지만, 실제로는 여러 복잡한 상황이 발생한다.

주요 문제점으로는 같은 키에 다른 내용의 요청이 들어오는 경우를 들었다. 예를 들어 결제 API에서 동일한 키로 10유로와 100유로 요청이 들어오면 재시도인지, 클라이언트 버그인지, 새로운 작업인지 판단해야 한다. 저자는 이런 경우 하드 에러로 처리해 클라이언트 버그를 조기에 발견하는 것이 좋다고 제안했다.

또한 첫 번째 요청이 아직 실행 중일 때 두 번째 요청이 도착하는 동시성 문제, 로컬 상태와 외부 시스템 간 불일치, 부분 실패 상황 등도 고려해야 한다고 설명했다. 진정한 동일성 구현은 단순한 응답 캐싱을 넘어 이런 복잡한 시나리오들을 모두 처리할 수 있어야 한다고 강조했다.

출처

blog.dochia.dev — 원문 읽기 →