멱등성이란?

HOSEON LEE·2024년 5월 10일

멱등성에 대해 구글링 해서 여러 글들을 읽어봐도 이해되지 않는 부분이 많았습니다.
개인적으로 멱등성과 일관성의 큰 차이를 느끼지 못해서 더 헷갈렸던 것 같습니다.

그래서 개념을 잘 잡아보고자 모두의 친구 ChatGPT와 티키타카를 해보았습니다 😎


멱등성

멱등성은 특정 연산이나 요청을 여러 번 수행하더라도 첫 번째 수행 이후에는 추가적인 효과가 없음을 의미합니다.

일관성

일관성은 시스템이 특정 규칙이나 정책에 따라 항상 일관된 상태를 유지함을 의미합니다.

HTTP 메소드들은 크게 두 가지 특성을 가질 수 있습니다.

  • 안정성(Safety): 해당 메소드로 서버의 상태가 변경되지 않습니다.
  • 멱등성(Idempotence): 여러 번 수행해도 결과가 동일해야 합니다.

그리고 메소드 별로 어떤 특성을 갖고 있는지 구분되어 있습니다.

  • 멱등하고 안전한 메소드: GET, HEAD, OPTIONS
  • 멱등하고 안전하지 않은 메소드: PUT, DELETE
  • 멱등하지 않고 안전하지도 않은 메소드: POST

멱등하지 않고, 안전하지 않으면 안좋은거 아닌가? 🤔

아닙니다! 오히려 특성으로부터 어떤 상황에 어떤 메소드를 사용해야 한다는 개념이 생기지 않았을까? 라는 개인적인 생각입니다.


상황 예시를 보시면 이해하기 더 수월하실거에요!

비멱등한 GET 요청

  • 부수 효과: 특정 게시물에 들어가서 GET 요청을 했는데 계속해서 조회수가 올라가는 경우
  • 캐시 무효화: GET 요청을 받을 때마다 캐시를 무효화하고 데이터를 새로 고침할 경우, 캐시 무효화 자체가 서버 상태를 변경하는 것은 아니지만, 결과적으로 서버가 다음 요청에 다른 데이터를 제공할 가능성이 있음

비멱등한 PUT 요청

점수를 업데이트하는 API가 있다고 가정

  • 잘못된 설계: 기존 점수 + 추가 점수 로 계산하는 로직
  • 올바른 설계: 요청으로 받은 점수로 갱신하는 로직

🔊 뇌피셜이 많이 섞인 내용이라, 정확하지 않을 수 있습니다. 참고만 해주세요!

profile
Hello 🤚

0개의 댓글