Search
📄

테라폼의 철학

우리가 Azure에서 개발/스테이징/프로덕션 환경을 각각 만든다면, 웹 콘솔 화면을 토해서 다음과 같이 생성할 것이다 :
VM 생성 → 이름 입력 → 크기 선택 → 네트워크 설정 등등..
위 과정을 3회 반복(dev, staging, prod)
추후에 staging, prod 환경이 다르다는 것을 뒤늦게 알게 될 수도 있다.

# 선언적(Declarative) 방식

“어떻게”가 아닌 “무엇을” 원하는지 작성
# 명령형 : "VM 만들고, IP 할당하고, 네트워크 연결해" # 선언형 : "이런 상태가 되어야해" resource "azurerm_virtual_machine" "example" { name = "my-vm" # ... 원하는 최종 상태만 정의 }
HCL
복사

# 상태 관리(State Management)

현재 인프라가 어떤 상태인지 추적하고 변경사항만 적용

# 불변 인프라(Immutable Infrastructure)

수정 대신 재생성을 통해 일관성을 보장