idempotent (멱등성)

  • 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질 (수학, 전산학)

    • 즉 메서드가 여러 번 실행되어도, 결과는 같으므로 안전하게 사용할 수 있는 성질

  • RESTful 웹 서비스의 맥락에서 많이 언급된다. REST는 HTTP를 최대한 활용하여 프로그램에 웹 콘텐츠에 대한 액세스 권한을 부여하고, 일반적으로 HTTP 요청 및 응답 내에서 원격 프로시저 호출 스타일 서비스를 터널링하는 SOAP 기반 웹 서비스와 대조적으로 설정된다.

  • REST는 웹 애플리케이션을 리소스(예: Twitter 사용자 또는 Flickr 이미지)로 구성한 다음 POST, PUT, GETDELETE의 HTTP 메서드를 사용하여 해당 리소스를 생성, 업데이트, 읽기 및 삭제한다. 이중 POST를 제외한 나머지 HTTP 메서드를 사용하는 API(GET, PUT, DELETE)들이 멱등성이 유지되어야 한다.

  • 멱등성은 REST에서 중요한 역할을 한다. REST 리소스 표현을 GET하고(예: Flickr에서 jpeg 이미지 가져오기) 작업이 실패하면 작업이 성공할 때까지 GET을 계속해서 반복할 수 있다. 웹 서비스의 경우 이미지를 몇 번 가져왔는지는 중요하지 않다. 마찬가지로 RESTful 웹 서비스를 사용하여 Twitter 계정 정보를 업데이트하는 경우 웹 서비스에서 확인을 받기 위해 필요한 만큼 새 정보를 PUT 할 수 있다. 천 번 PUT 하는 것은 한 번 PUT 하는 것과 같다. 마찬가지로 REST 리소스를 천 번 DELETE하는 것은 한 번 DELETE하는 것과 같다. 따라서 멱등성을 사용하면 통신 오류에 탄력적인 웹 서비스를 훨씬 쉽게 구성할 수 있다.

Last updated