[Terraform 튜토리얼 1-1] 여러 번 눌러도 괜찮아! 멱등성(Idempotence)이라는 개념
![[Terraform 튜토리얼 1-1] 여러 번 눌러도 괜찮아! 멱등성(Idempotence)이라는 개념](/content/images/size/w1200/2025/05/On_Off_-_Za-_Wy-_-3086204137--1.jpg)
인프라 자동화나 Terraform 같은 Infrastructure as Code(IaC)를 접하다 보면 Idempotence라는 단어를 종종 마주하게 되는데요. 처음 들으면 뭔가 굉장히 있어 보이는 용어지만, 사실 우리가 일상 속에서도 자주 겪는 개념입니다.
✅ Idempotence란?
같은 작업을 여러 번 수행해도, 결과가 변하지 않는 성질을 말합니다.
즉, 특정 명령이나 실행을 여러 번 반복해도 결과(시스템 상태)가 동일하게 유지된다면, 그 프로세스는 Idempotent(멱등적)하다고 부를 수 있습니다.
🚦 예시: 횡단보도의 보행 버튼
일본 같은 경우 횡단보도를 건널 때, 보행자 버튼이 있어 클릭 시 일정 시간 후 빨간불이 파란불로 바뀌게 됩니다.
- 이 버튼을 한 번 누르면 일정 시간이 지난 후 신호가 바뀝니다.
- 열 번 눌러도, 결과는 같습니다. 신호는 제시간에 바뀔 뿐, 더 빨라지거나 바뀌지 않죠.
이 버튼은 idempotent 하다고 할 수 있습니다.
💸 반례: 은행에 돈 입금하기
반대로, 은행 창구에 가서 만 원을 입금하는 상황을 봅시다.
- 첫 번째 입금: 잔액이 +만 원
- 두 번째 입금: 잔액이 +2만 원...
즉, 같은 행위를 반복할 때마다 결과가 누적되므로 비-idempotent 한 행동입니다.
(당연히 돈 입금이 idempotent 하면 안 되겠죠!)
🛠️ Terraform은 왜 Idempotent 할까?
Terraform에서 terraform apply
를 실행하면, 코드에 정의된 목표 상태(desired state)에 따라 인프라를 구성합니다.
- 처음 실행: 정의된 리소스를 생성
- 두 번째 실행: 이미 존재하므로 아무 작업도 하지 않음
- 세 번째 실행: 역시 상태가 같으면 변경사항 없음 (No changes)
즉, Terraform은 “이미 원하는 상태에 도달했다면 더 이상 손대지 않는다”는 철학을 따릅니다.
이는 마치 신호등 보행 버튼처럼, “원하는 상태가 정의되어 있고, 이미 도달했다면 그대로 유지”해주는 성질입니다.
💡 왜 중요한가?
멱등성(Idempotence)은 IaC 도구 사용에 있어 매우 중요한 특성입니다.
- 예측 가능성: 같은 코드를 여러 번 실행해도 결과가 달라지지 않음
- 자동화 신뢰성: CI/CD 파이프라인 등 반복 작업에 안심하고 쓸 수 있음
- 불필요한 리소스 재생성 방지: 운영 환경을 안정적으로 유지
📌 정리하자면
Idempotence = 같은 입력 → 같은 결과, 반복해도 변하지 않음
Terraform은 이 멱등성 덕분에 인프라를 신뢰성 있게 자동화할 수 있습니다.
🔜 다음 글 예고
다음 글에서는 immutability(불변성)에 대해 다뤄보겠습니다.
IaC와 DevOps에서 멱등성과 불변성은 늘 짝꿍처럼 붙어 다니거든요!
