카테고리 없음

Terraform에서 Predictable 이란?

idea9329 2025. 11. 26. 17:33
728x90
반응형

Terraform은 같은 코드와 같은 상태(state)를 가지고 실행하면
항상 같은 리소스를 생성·변경·삭제하는 동일한 결과를 내야 해.
이걸 Terraform에서는 predictable infrastructure changes라고 불러.

즉,

  • 실행할 때마다 결과가 달라지면 안 되고
  • 같은 입력 → 같은 계획(plan)과 결과(apply)가 나와야 돼.

왜 Predictable이 중요할까?

1) 인프라 변경이 “재현 가능”

같은 코드면 누가 실행해도 결과가 동일해.
이건 DevOps에서 엄청 큰 장점이야.

2) 장애/문제 원인 파악이 쉬움

결과가 항상 같으니까, 문제가 생겨도
“왜 달라졌지?” 이런 혼란이 없어.

3) 협업이 쉬움

팀에서 여러 사람이 Terraform을 쓰면,
코드 기반으로 모든 변경이 공유되기 때문에
“누가 Apply 했는지”가 아니라
코드가 진짜 소스 오브 트루스(Single Source of Truth)가 돼.


Predictable이 깨지는 경우

Terraform이 예측 가능하지 않게 되는 상황도 있어.

사례왜 예측 불가?

리소스 이름에 random 값 자동 생성 실행할 때마다 결과가 달라짐
depends_on 설정 부족 리소스 생성 순서가 달라져 예상과 다른 결과
state 충돌 (동시 apply) 서로 다른 사람이 동시에 apply해서 꼬임
변경 가능한 외부 입력(variable, data source) 매번 값이 달라지는 경우

Terraform이 Predictable하게 실행되게 하려면?

  • 가능한 고정 값 사용
  • random 사용 시 keepers 값 지정
  • data source 값이 변할 수 있으면 version pinning
  • 명확한 depends_on 지정
  • Locking 활성화 (state 충돌 방지)
728x90
반응형