멱등성(Idempotency)이란?

2024. 8. 22. 14:25·🌥️Cloud Study🌥️/Etc

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`의 정보는 동일하게 유지된다.


일상행활에서의 예시

배달 애플리케이션에서 쿠폰 사용

사용자가 동일한 할인 쿠폰을 중복으로 적용할 때, 멱등성이 적용된 시스템이라면 사용자가 쿠폰 적용을 여러 번 시도해도 최종 할인 금액은 동일해야 한다.

 

  1. 첫 번째 쿠폰 적용
    사용자가 처음으로 10% 할인 쿠폰을 적용한다.
    주문 금액이 20,000원 이었을 때, 쿠폰이 적용된 후 금액은 18,000원이 된다.
  2. 두 번째 쿠폰 적용 시도
    사용자가 실수로 쿠폰을 다시 적용하려고 시도한다.
    시스템은 이미 적용된 쿠폰임을 인식하고, 다시 적용해도 주문 금액은 여전히 18,000으로 유지된다.
  3. 세 번째 쿠폰 적용 시도
    사용자가 다시 한 번 쿠폰을 적용하려고 시도한다.
    시스템은 해당 시도를 무시하고, 할인 된 음액은 여전히 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
'🌥️Cloud Study🌥️/Etc' 카테고리의 다른 글
  • [ Database ] DB 이중화, MySQL Replication 설정
  • [ 트래픽 ] 트래픽 폭주 제어 -1 (시나리오 예시 및 스트레스 테스트)
  • [ Auto Scaling ] 요금 최적화
  • [ 모니터링 ] Prometheus Federation 설정 -2
L_Chae
L_Chae
🎮😻🤓🖥✨
  • L_Chae
    Cherish
    L_Chae
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🌥️Cloud Study🌥️
        • AWS
        • NHN
        • KT
        • Microsoft (Azure 900)
        • TroubleShooting
        • IaC
        • Etc
      • STUDY
        • English
        • Japanese
        • 개인정보보호 관련
      • 초등학교 AI 교육 진행
        • 2024학년도 1학년-2학년
        • 2025학년도 4학년
      • 2024 KDT 📕
        • Lecture
        • Study 📗
        • Study-JAVA
        • Project
        • etc
      • INTERLUDE ✦
        • 2022 SYSTEM STUDY
        • 2022 Winter Study
        • 2023 AutoMobility STUDY
        • 2023 Summer Study (CPPG)
        • 2023 Reversing STUDY
        • etc
      • Private🔒
        • MacBook 💻
        • Screenshot 🩷
        • Photo 🖼️
        • FFXIV - Backup 🎮
        • Tistory
      • PBL 📗
        • 논문 스터디
        • Backup
      • Project 🖤
        • 2022-2) 개인정보보호 소학회
        • 2022-2) winter GURU2 - iOS
        • 2023-1) PBL 3
        • 2023-2) PBL 4
        • 2024-1) SW-AI교육 실습 일지
      • CTF 🚩
        • 2022
        • 2023
      • News scrap 📰
        • 2022
        • 2023
      • 2022 공부 로그 🐯
      • 2023 공부 로그🐰
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ansible galaxy
    deprecation warning
    content collection
    멱등성
    N1
    jlpt n1 도전기
    ansible
    JLPT N1
    JLPT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
L_Chae
멱등성(Idempotency)이란?
상단으로

티스토리툴바