메인 콘텐츠로 건너뛰기

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

이 노트는 요약·비평·학습 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.