Terraform 인터뷰 준비! 실무에서 꼭 알아야 할 20가지 핵심 질문 총정리
클라우드 인프라를 자동화하는 시대, Terraform은 IT업계에서 빼놓을 수 없는 도구죠. 오늘은 실제 업무와 면접 모두에서 한 번쯤 마주칠 만한 실전 중심의 Terraform 시나리오와 문제 해결법을 쉽고 재미있게 소개합니다. 복잡한 코드를 넘어서, 현업에서 바로 적용할 수 있는 팁까지 꼼꼼하게 담았으니 끝까지 읽으시면 분명 도움이 될 거예요!
Terraform State 파일 손상 대비 및 복구법
갑작스럽게 Terraform의 상태 파일(tfstate)이 손상되거나 삭제될 수 있습니다. 이럴 땐 어떻게 해야 할까요?
S3, Azure Blob 같은 원격 저장소를 사용한다면, 파일 버전 관리 기능을 활용해 예전 상태로 복구할 수 있습니다.
로컬 백엔드라면, terraform.tfstate.backup 파일이 대체 역할을 합니다.
만약 백업이 없다면 각 리소스를
terraform import로 재등록하고 필요한 코드를 직접 작성해야 하니 꼭 정기적으로 백업을 확인하세요!
인프라 드리프트 탐지와 복구 전략
실제 인프라와 코드가 달라질 때, 이른바 '드리프트(drift)'가 발생합니다.
terraform plan명령어로 현재 인프라와 코드의 차이를 확인해 보세요.terraform apply로 코드를 기준으로 인프라를 자동으로 맞출 수 있습니다.driftctl, infracost 같은 외부 도구를 쓰면 더 폭넓게 리소스 관리를 할 수 있답니다.
Terraform에서 민감 데이터 안전하게 관리하기
비밀번호, 인증키 같은 민감 정보는 정말 조심해서 다뤄야 해요.
AWS Secrets Manager, Azure Key Vault, HashiCorp Vault 등 비밀 저장소를 활용하세요.
코드나 변수 파일에 직접 값을 입력하는 실수는 금물!
output 블록에
sensitive = true를 지정하면 정보 유출을 막을 수 있습니다.환경 변수 활용과 원격 상태 파일 암호화도 잊지 마세요.
환경별(Dev, Staging, Prod) 인프라 분리 운영법
개발, 스테이징, 운영 환경을 각각 관리하려면 어떻게 해야 할까요?
환경마다 디렉터리, 변수 파일(tfvars), 백엔드 설정을 분리하세요.
예시: dev.tfvars, staging.tfvars, prod.tfvars로 각각 인프라를 정의합니다.
Terraform Workspaces를 쓰면 비슷한 인프라를 빠르게 여러 환경에 적용할 수 있어요.
여러 팀에서 Terraform 모듈 효율적으로 재사용하기
여러 팀이 공동으로 모듈을 쓴다면 다음 방법을 참고하세요.
Git 저장소나 Terraform Registry에 모듈을 만들어 버전 관리하세요.
source속성에 Git URL과 버전을 지정하면, 최신 혹은 특정 버전만 쓸 수 있습니다.입력 변수와 출력값을 문서로 남겨 두면 협업 효율이 쭉 올라갑니다.
잘못된 terraform apply 실행 후 인프라 롤백 방법
실수로 다운타임이 생겼을 때 대처법!
Terraform은 자동 롤백을 지원하지 않으니, 반드시 백엔드에서 이전 상태 파일을 복구해야 합니다.
Git에서 이전 커밋으로 되돌린 후 다시 apply하여 복구하면 안전하죠.
대용량 시스템이라면 Blue-Green, Canary 배포 전략을 사용해 실수를 줄이세요.
CI/CD 파이프라인에 Terraform 통합하는 방법
지속적 배포 환경에서 Terraform을 안전하게 운영하려면?
기본 단계:
terraform fmt로 코드 정리,init으로 초기화,validate검증,plan으로 변경사항 확인 후 수동 승인과apply실행원격 상태 관리로 여러 팀이 동시에 작업해도 충돌을 막을 수 있습니다.
민감 정보는 환경 변수 또는 Vault로 다뤄야 해요.
대규모 인프라에서 Terraform 성능 개선 팁
수백~수천 개 리소스를 관리할 땐 속도와 안정성도 중요하죠.
하나의 프로젝트를 여러 모듈로 나누면 변경 범위를 좁힐 수 있습니다.
targeted plan으로 특정 리소스만 변경하기도 좋아요.provider 플러그인 캐싱, provisioner 최소 사용, 깊은 for_each·count 남용 자제 등이 대표적 최적화 방법입니다.
terraform taint와 destroy의 차이점
두 명령어는 이름은 비슷하지만 쓰임새가 달라요.
terraform taint: 특정 리소스를 "다음 실행 때 재생성" 상태로 표시terraform destroy: 즉시 해당 리소스를 삭제taint는 선택적인, destroy는 강제적인 변경에 사용하세요.
기존 인프라를 Terraform에 수입(import)하는 방법
이미 만들어진 리소스를 코드를 통해 관리하고 싶나요?
terraform import로 실제 인프라를 상태 파일에 연결리소스 정보를 알기 위해선
terraform state show활용이후 관련 .tf 파일을 작성해 관리하세요.
원격 상태(Remote State) 락(lock) 문제 해결
AWS DynamoDB 등에서 락이 걸렸을 때는?
DynamoDB 테이블에서 직접 락 항목 삭제, 또는
terraform force-unlock <LOCK_ID>CI/CD가 비정상 종료되면서 생기는 "고장난 락"을 주로 문제 삼으니 종료 절차를 꼼꼼히 관리하세요.
실수로 .tfstate 파일을 Git에 올렸을 때 대처 요령
누구나 초보 때 한 번쯤 경험할 수 있는 실수!
Git에서
git rm --cached terraform.tfstate로 파일 제거 후 재커밋.gitignore에.tfstate*와.terraform/추가노출된 인증 정보를 즉시 변경하고, truffleHog·git-secrets로 히스토리 스캔
치명적 실수를 되풀이 하지 않도록 관리 구조를 점검하세요.
local-exec, remote-exec Provisioner 사용 시 주의점
간혹 복잡한 초기화 스크립트가 필요할 때 쓰는 Provisioner.
사용은 최대한 자제하고 반드시 스크립트가 "실행해도 또 같은 결과"를 내도록(idempotent) 만드세요.
null_resource와 트리거(trigger)를 조합하면 제어가 더 편해집니다.복잡한 설정은 Ansible 등 전문 도구 활용이 현명해요.
안전하게 Terraform 모듈 업그레이드하는 방법
공유 모듈 업그레이드, 어떻게 해야 안전할까요?
Git ref 또는 버전 태그로 모듈 버전을 고정
실서비스 이전에 테스트 환경에서 먼저 적용
terraform plan으로 변경 내역 철저히 검토 후, 단계적으로 적용인프라가 깨지는 불상사를 미리 막으세요!
terraform plan에서 예상 못한 변경 발견 시 대처법
계획 단계에서 '이상한 변경'이 보인다면?
terraform state show <resource>로 현재 리소스 확인terraform refresh로 최신 상태 정보 동기화데이터 소스, 변수, 동적 값 변경 여부도 반드시 체크
Workspaces와 Separate Backends, 무엇이 더 적합할까?
두 방식의 환경 분리법 차이점은?
Workspaces: 간단한 환경과 리소스 공유에 적합
Separate Backends: 프로덕션급에는 인프라 격리와 보안, 감사 측면에서 우위
프로젝트 규모와 복잡도에 맞게 신중히 선택하세요.
팀 단위 Terraform 상태 파일 협업 방법
여러 명이 함께 작업할 때 꼼꼼함이 필요하죠.
S3+ DynamoDB 같은 원격 백엔드는 락 기능과 동시 작업 지원
Terraform Cloud/Enterprise 사용 시 작업 흐름·버전 관리 모두 손쉽게
수동으로 상태 파일 수정하는 실수는 절대 금물! 버전 관리는 필수입니다.
Terraform으로 Blue-Green 배포 패턴 구현하기
무중단 배포에 Blue-Green 방식은 정말 유용합니다.
'파란색'과 '초록색' 두 환경을 병렬로 띄우고, 로드밸런서를 이용해 트래픽을 전환
충분히 테스트한 후, 기존 환경을 정리
리소스 이름 충돌, 중복 방지에도 신경 써야 해요.
terraform apply 실행 중 실패 시 대처법
중간에 apply가 실패하면 긴장되겠죠?
로그와 에러 메시지로 문제 원인을 추적
기본적으로 문제 리소스만 수정/복구한 뒤 재실행
Terraform은 실패 지점부터 계속 적용을 시도하지만, 수동 상태 변경은 반드시 자제하세요.
Terraform 상태 파일 안전하게 관리하는 법
최종 리소스 정보를 담고 있는 상태 파일은 해커의 표적!
S3의 서버 측 암호화(SSE), KMS, Azure Blob의 암호화 기능을 반드시 활성화
IAM, RBAC로 접근 권한을 최소화
sensitive 속성으로 민감 정보 출력을 막으세요
결코 Git 등 소스 저장소에 상태 파일을 추가하지 말 것!
마무리하며, Terraform 실전 노하우는 복잡한 코드만큼이나 운영 습관과 협업 구조가 중요합니다. 기본을 확실히 다지고, 반복되는 실수를 자동화와 백업으로 예방하는 것이 최고의 실무자 전략입니다. 이 글에서 소개한 시나리오와 팁을 하나씩 참고한다면, 더 안전하고 효율적으로 클라우드 인프라를 관리할 수 있습니다. 무엇보다 고민은 짧게, 적용은 빠르게! Terraform과 함께하는 DevOps 여정에 큰 도움이 되길 바랍니다.
출처 및 참고 : Terraform Interview Question: Practical Scenarios You Must Know | by Nidhi Ashtikar | Medium
이 노트는 요약·비평·학습 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.
