🌿 중급 백엔드
멱등성(Idempotency)이 뭔가요?
쉽게 이해하기
전등 스위치를 생각해보세요. 이미 켜진 전등의 스위치를 또 누르면? 여전히 켜져 있죠. 꺼진 전등의 스위치를 여러 번 눌러도 여전히 꺼져 있고요. 결과가 바뀌지 않아요. API도 이런 성질을 가질 수 있는데, 이걸 멱등성이라고 해요.
핵심 정리
같은 요청을 여러 번 보내도 결과가 똑같이 나오는 성질이에요.
자세히 알아보기
멱등성은 같은 요청을 1번 보내든 100번 보내든 결과가 동일한 성질을 말해요. REST API에서 GET, PUT, DELETE는 멱등성을 가지고, POST는 멱등성이 없어요. 왜 이게 중요할까요? 네트워크는 불안정해서 요청이 실패하면 재시도를 해야 하는데, 멱등성이 없으면 중복 실행이 문제가 될 수 있어요.
예를 들어볼까요? `DELETE /users/123`은 멱등성이 있어요. 첫 번째 요청에서 사용자가 삭제되고, 두 번째 요청에서는 '이미 없음'이라고 응답하지만, 결과는 '사용자 123이 없다'로 동일하죠. `PUT /users/123`으로 이름을 '김철수'로 바꾸는 것도 멱등성이 있어요. 몇 번을 보내도 결과는 '이름이 김철수'예요.
반면 `POST /orders`로 주문을 생성하는 건 멱등성이 없어요. 요청할 때마다 새 주문이 생기니까요. 네트워크 오류로 같은 요청을 두 번 보내면 중복 주문이 발생할 수 있어요. 이럴 때는 '멱등성 키'를 사용해요. 클라이언트가 고유한 ID를 함께 보내면, 서버는 같은 ID의 요청은 한 번만 처리하죠.
실무에서 결제 같은 중요한 기능은 반드시 멱등성을 고려해야 해요. 사용자가 '결제하기' 버튼을 실수로 두 번 눌렀을 때, 두 번 결제되면 안 되니까요. 멱등성을 이해하면 안전하고 신뢰할 수 있는 API를 만들 수 있어요.