포스트

멱등성(Idempotence), 불변성(Immutability), 가역성(Reversibility)

📊 멱등성 vs 불변성 vs 가역성 비교

개념정의특징예시의미 있는 사용처
멱등성(Idempotence)같은 연산을 여러 번 해도 결과가 같음재시도해도 안전PUT /user/123DELETE /post/5HTTP API 설계네트워크 오류 복구
불변성(Immutability)한 번 만들어진 데이터는 바뀌지 않음변경 불가대신 새 객체 생성Python의 tuple,const 객체함수형 프로그래밍상태 관리 (React 등)
가역성(Reversibility)되돌릴 수 있음(Undo 가능)원래 상태 복원 가능git revert,Ctrl+Z, DB 트랜잭션 rollback버전 관리트랜잭션 시스템편집기

🎯 핵심 비교 요약

질문멱등성불변성가역성
결과가 반복해도 같나?❌ (되돌려야 같음)
값을 바꿀 수 있나?가능가능
이전 상태로 되돌릴 수 있나?✅ (복사로)
주로 어디서 쓰이나?API/서버상태 관리트랜잭션, 버전관리

  • 커밋은 불변(immutable)
  • reset은 가역(reversible)
  • git push –force는 멱등하지 않음

특히 멱등성 예시 ** **✅ 1. HTTP 요청에서의 멱등성 예시

메서드멱등성 여부설명
GET✅ 멱등함여러 번 데이터를 읽어도 결과는 같음
PUT✅ 멱등함같은 데이터를 여러 번 업데이트해도 결과는 동일
DELETE✅ 보통 멱등함이미 삭제된 걸 또 삭제해도 상태는 동일
POST❌ 멱등하지 않음같은 요청을 두 번 보내면 두 개의 리소스가 생김 등 부작용 발생

  • abs(abs(x)) = abs(x) → 절댓값 함수는 멱등함
  • min(min(a, b), b) = min(a, b) → min 연산도 멱등함
  • x = 5 라는 대입도 멱등함 (같은 값 계속 대입해도 변화 없음)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.