https://f-lab.kr/insight/understanding-idempotency-in-api-design
멱등성(Idempotency)의 이해와 API 설계에서의 중요성
멱등성(Idempotency)의 개념과 API 설계에서의 중요성을 설명하며, 멱등성을 고려하지 않은 API의 안티 패턴과 이를 해결하기 위한 방안에 대해 논의합니다.
f-lab.kr
멱등성 Idempotency
연산이나 작업이 한 번 실행되던 여러 번 실행되던 그 결과가 항상 동일하게 나오는 성질을 의미.
데이터의 일관성과 안정성을 보장하는 데 핵심적인 역할을 한다.
코드로서의 예시
함수형 프로그래밍
def abs(x):
return x if x >= 0 else -x
함수형 프로그래밍에서 멱등성을 가지는 함수는 입력 값에 대해 동일한 결과를 반환한다.
예를 들어, 절대값을 구하는 함수 `abs(x)`는 멱등성을 가진다.
데이터베이스
UPDATE users SET status = 'active' WHERE id = 1;
위 쿼리를 한 번 실행하든 여러 번 실행하든 `id`가 1인 사용자의 `status`는 항상 `active`로 설정된다.
HTTP API
# 사용자의 프로필 정보를 업데이트하는 API
PUT /users/1
{
"name": "John Doe",
"email": "john.doe@example.com"
}
RESTful API에서 `PUT`메서드는 멱등성을 가지도록 설계된다.
위 요청을 한 번 보내든 여러 번 보내든, 사용자 `1`의 정보는 동일하게 유지된다.
일상행활에서의 예시
배달 애플리케이션에서 쿠폰 사용
사용자가 동일한 할인 쿠폰을 중복으로 적용할 때, 멱등성이 적용된 시스템이라면 사용자가 쿠폰 적용을 여러 번 시도해도 최종 할인 금액은 동일해야 한다.
- 첫 번째 쿠폰 적용
사용자가 처음으로 10% 할인 쿠폰을 적용한다.
주문 금액이 20,000원 이었을 때, 쿠폰이 적용된 후 금액은 18,000원이 된다. - 두 번째 쿠폰 적용 시도
사용자가 실수로 쿠폰을 다시 적용하려고 시도한다.
시스템은 이미 적용된 쿠폰임을 인식하고, 다시 적용해도 주문 금액은 여전히 18,000으로 유지된다. - 세 번째 쿠폰 적용 시도
사용자가 다시 한 번 쿠폰을 적용하려고 시도한다.
시스템은 해당 시도를 무시하고, 할인 된 음액은 여전히 18,000원 이다.
'🌥️Cloud Study🌥️ > Etc' 카테고리의 다른 글
[ Database ] DB 이중화, MySQL Replication 설정 (1) | 2024.08.21 |
---|---|
[ 트래픽 ] 트래픽 폭주 제어 -1 (시나리오 예시 및 스트레스 테스트) (0) | 2024.08.19 |
[ Auto Scaling ] 요금 최적화 (0) | 2024.08.19 |
[ 모니터링 ] Prometheus Federation 설정 -2 (0) | 2024.08.19 |
[ 모니터링 ] Grafana의 Alerting 이용, 인스턴스 다운 시 메일 알림 전송 (0) | 2024.08.13 |