피드로 돌아가기
Dev.toDevOps
원문 읽기
To The Moon Terraform Ep.7
Terraform 팀 협업에서 로컬 상태 파일 대신 S3 + DynamoDB 원격 백엔드를 도입해 상태 파일 분산·충돌 문제 해결
AI 요약
Context
로컬 terraform.tfstate 파일을 각 엔지니어가 개별 관리할 경우 상태 파일이 분산되어 같은 AWS 계정에 대한 동시 변경이 기록되지 않거나 충돌이 발생한다. 이로 인해 인프라가 의도치 않게 삭제되거나 리소스 관리 상태가 일관성을 잃는 문제가 발생한다.
Technical Solution
- S3 버킷에 terraform.tfstate 파일을 중앙 집중식으로 저장: 버킷 버전 관리 활성화로 모든 상태 변경 이력 보존
- DynamoDB 테이블로 상태 잠금(state locking) 구현: terraform apply 실행 시 LockID 레코드 작성으로 동시 실행 방지
- S3 버킷에 KMS 기반 암호화 적용: 저장된 상태 파일 암호화
- bootstrap 단계에서 S3 버킷과 DynamoDB 테이블을 별도로 생성: 베어메탈 부트스트랩 문제 해결
- terraform_remote_state 데이터 소스로 다른 팀의 상태 파일 읽기: 팀 간 독립성 유지하면서 출력값 참조 가능
Key Takeaway
중앙 집중식 상태 관리와 뮤텍스 기반 동시성 제어는 팀 규모의 Terraform 운영에 필수 요소이며, S3 + DynamoDB 조합은 AWS 환경에서 가장 일반적인 원격 백엔드 구성이다.
실천 포인트
AWS 기반 멀티 엔지니어 팀에서 Terraform을 도입할 때 S3 + DynamoDB 원격 백엔드를 초기 설정단계에서 구성하면 상태 파일 분산 충돌을 사전에 방지할 수 있다. terraform_remote_state 블록을 활용하면 인프라 팀과 애플리케이션 팀 간 명시적 인터페이스 기반 의존성 관리도 가능하다.