멱등성 작업
Idempotent Operations
같은 요청을 실수로 여러 번 보내도 실제 결과는 딱 한 번만 일어나게 만드는 설계 방식
쉽게 말하면
멱등성 작업이란, 같은 요청을 실수로 여러 번 반복해도 실제 처리는 딱 한 번만 일어나도록 만든 설계 방식이다. 엘리베이터 버튼을 떠올리면 쉽다. 이미 눌러서 불이 켜진 버튼을 몇 번을 더 눌러도 엘리베이터가 여러 대 오지는 않는다. 첫 번째 누름만 의미가 있고, 그다음은 아무 일도 안 일어나는 것과 같다.
인터넷은 자주 끊기고 응답이 늦게 온다. 그래서 프로그램은 요청이 제대로 갔는지 확신이 안 서면 같은 요청을 다시 보내는 경우가 많다. 만약 영상 한 편을 만들어 달라는 요청이 이렇게 두 번 전달되면, 서버가 이를 구분하지 못하고 영상을 두 번 만들어 요금도 두 배로 청구할 수 있다. 멱등성 작업으로 설계돼 있으면, 같은 요청 표식을 알아보고 두 번째는 무시하거나 첫 번째 결과를 그대로 돌려준다.
그래서 개발자들이 새로운 서비스의 접속 창구(다른 프로그램과 연결하는 규칙, 관련어: API)를 고를 때 이 특징이 있는지를 꼭 확인한다. 재시도를 마음 놓고 할 수 있어야 네트워크 오류가 나도 중복 과금이나 중복 생성 같은 사고를 걱정하지 않아도 되기 때문이다.
기사에서 이렇게 나와요
기사에서는 "Hedra는 ... 멱등성 작업, OpenTelemetry 호환 로그 드레인을 제공한다"처럼 여러 개발자 편의 기능 중 하나로 나열된다. 여기서 오해하기 쉬운 점은, 멱등성 작업이 특정 기능 하나를 가리키는 게 아니라 요청 처리 방식 자체의 안전성을 뜻한다는 것이다. 즉 영상 생성 요청을 실수로 두 번 보내도 두 번 과금되거나 영상이 두 개 만들어지지 않는다는 보장을 의미한다.
직접 해보기
평소 쓰는 AI 서비스나 개발 도구의 문서를 볼 일이 있다면, idempotency key 또는 "idempotent"라는 단어가 나오는 부분을 찾아보라. 있다면 네트워크 오류로 요청을 다시 보내도 안전하다는 뜻이고, 없다면 재시도할 때 중복 실행 여부를 직접 확인해야 한다는 뜻이다.
