Terraform “Backend” 는 Terraform의 state file을 어디에 저장을 하고, 가져올지에 대한 설정입니다. 기본적으로는는 로컬 스토리지에 저장을 하지만, 설정에 따라서 s3, consul, etcd 등 다양한 “Backend type“을 사용할 수 있습니다.
Terraform state를 관리
state는 원격 저장소인 'backend'에도 저장될 수 있음
terraform state는 우리가 apply를 실행해서 리소스가 생성되고 난 후에, "terraform.tfstate"라는 파일이 생성됨
backed.tf의 경로와 s3의 디렉토리 구조가 일치해야 좋은 코드임
즉, 내가 실행한 "apply의 결과"를 저장해 놓은 "상태"임
terraform state는 현재 인프라의 상태를 의미하는 것은 아님
적용한 시점의 상태일 뿐
Locking: 보통 Terraform 코드를 혼자 작성하지 않습니다. 인프라를 변경한다는 것은 굉장히 민감한 작업이 될 수 있습니다. 원격 저장소를 사용함으로써 동시에 같은 state를 접근하는 것을 막아 의도치 않은 변경을 방지할 수 있습니다. => 서비스 장애로 이루어질 수 있기 때문임
Backup: 로컬 스토리지에 저장한다는건 유실할 수 있다는 가능성을 내포합니다. S3와 같은 원격저장소를 사용함으로써 state 파일의 유실을 방지합니다. 또한 테이블은 DynamoDB를 사용한다.