멱등성(Idempotence), 불변성(Immutability), 가역성(Reversibility)
📊 멱등성 vs 불변성 vs 가역성 비교
| 개념 | 정의 | 특징 | 예시 | 의미 있는 사용처 |
|---|---|---|---|---|
| 멱등성(Idempotence) | 같은 연산을 여러 번 해도 결과가 같음 | 재시도해도 안전 | PUT /user/123DELETE /post/5 | HTTP 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 라이센스를 따릅니다.