제135회 정보관리기술사 1교시 7번 — IaC와 Terraform 핵심 개념 및 워크플로

정보관리기술사 · 135회 1교시 · 7번 · 배점 10점

제135회 정보관리기술사 1교시 7번

단답형 | 10점
[문제] 코드형 인프라(IaC: Infrastructure as Code)의 개념과 명령형·선언형 방식의 차이를 설명하고, Terraform의 핵심 개념(Provider, Resource, State, Module)과 워크플로(init·plan·apply)를 서술하시오.

1. IaC 개념과 명령형 vs 선언형

IaC(Infrastructure as Code)는 서버·네트워크·데이터베이스 등 인프라를 코드로 정의하여 자동화·버전 관리·재사용하는 방식이다.

구분 명령형(Imperative) 선언형(Declarative)
방식 “어떻게” 만들지 절차 기술 “무엇을” 원하는지 최종 상태 기술
도구 Ansible (일부), Chef, Puppet Terraform, CloudFormation, Pulumi
멱등성 개발자가 직접 보장 도구가 현재 상태→목표 상태 자동 조정

2. Terraform 핵심 개념

  • Provider: AWS·Azure·GCP 등 인프라 공급자와 통신하는 플러그인 (aws, azurerm, google)
  • Resource: 관리할 인프라 단위 정의 (aws_instance, aws_s3_bucket)
  • State: 현재 인프라 상태를 JSON으로 저장하는 파일 (terraform.tfstate). 원격 백엔드(S3+DynamoDB)로 팀 공유
  • Module: 재사용 가능한 Terraform 코드 묶음 (VPC Module, EKS Module)

3. Terraform 워크플로

terraform init → Provider 플러그인 다운로드
terraform plan → 현재 상태 vs 코드 차이 미리보기
terraform apply → 인프라 변경 적용
terraform destroy → 모든 리소스 삭제

핵심 키워드: IaC, Terraform, HCL, Provider, State, Module, 선언형, GitOps, Remote Backend
IaC는 인프라 드리프트를 방지하고 재현 가능한 환경을 보장한다. Terraform의 선언형 HCL과 State 관리로 멀티클라우드 인프라를 코드로 일관되게 관리할 수 있다.

IaC 도입 시 실무에서 놓치기 쉬운 부분

인프라를 코드로 관리하면 재현성, 변경 이력, 코드 리뷰라는 소프트웨어 개발의 장점을 그대로 가져올 수 있습니다. 같은 템플릿으로 개발·검증·운영 환경을 만들면 “내 환경에서는 되는데” 문제가 크게 줄어듭니다.

Terraform은 원하는 최종 상태를 선언하면 현재 상태와 비교해 변경 계획(plan)을 보여 주고, 승인 후 적용(apply)하는 흐름입니다. 이때 현재 상태를 기록하는 state 파일이 핵심 자산이라 취급에 주의가 필요합니다.

  • state 관리: 로컬에 두지 말고 원격 백엔드에 저장하고 잠금을 걸어 동시 수정을 막습니다. state에는 비밀값이 평문으로 남을 수 있어 접근 권한을 엄격히 제한해야 합니다.
  • 드리프트: 콘솔에서 수동으로 바꾼 설정이 코드와 어긋나는 현상입니다. 정기적인 plan 실행으로 감지합니다.
  • 도구 구분: Terraform·CloudFormation은 인프라 프로비저닝, Ansible은 서버 내부 구성 관리에 강점이 있습니다.
  • 변경 통제: plan 결과를 pull request에 붙여 리뷰하고, 운영 적용은 승인 절차를 둡니다.
  • 라이선스: Terraform이 2023년 라이선스를 변경한 뒤 오픈소스 포크인 OpenTofu가 등장했으므로 도입 시 정책을 확인하세요.
정리 포인트
IaC 서술에는 선언형·멱등성·불변 인프라 개념과 state·드리프트 같은 운영 이슈를 함께 넣으면 실무 감각이 드러납니다.

※ 이 글은 학습·참고용 정리입니다. 제품 사양과 표준 개정 사항은 공식 문서에서 최신 내용을 확인하세요.

Leave a Comment