Terraform 이해를 위한 정리 With AWS

박상민·2025년 12월 7일

개념 정리!

목록 보기
26/26

Terraform 개요

Terraform은 인프라를 코드로 관리하는 IaC(Infrastructure as Code) 도구입니다.
AWS EC2, VPC, RDS, ALB 등 인프라 리소스를 HCL(HashiCorp Configuration Language)로 선언하면, Terraform이 이를 읽고 실제 클라우드 리소스를 자동으로 생성·변경·삭제합니다.

Terraform의 기본 철학은 “선언형 인프라 관리”입니다.
개발자는 “무엇을 만들 것인지”만 기술하면 Terraform이 “어떻게 만들지”를 처리합니다.


Terraform을 사용하는 이유

AWS Console만 봐도 GUI가 잘 되어 있고, 사용성이 괜찮은데
이를 활용하지 않고, Terraform을 사용하는 이유가 무엇일까요?

1) 인프라 재현성 확보

  • 콘솔 클릭 방식은 설정이 누락되거나 서로 다른 사람이 구성할 때 차이가 발생하기 쉽습니다.
  • Terraform은 코드를 기반으로 항상 동일한 인프라를 재구성할 수 있습니다.

2) 버전 관리 가능

  • 인프라를 Git으로 관리할 수 있고 변경 이력을 추적 가능합니다.
  • 누가 언제 리소스를 왜 변경했는지 파악하기 쉽습니다.

3) 자동화 용이

  • CI/CD와 연동하면 인프라 변경도 자동화 가능합니다.
  • 코드 병합 -> Terraform 자동 실행 -> 인프라 업데이트 흐름 구축 가능합니다.

4) 일관성 및 실수 방지

  • 사람이 콘솔에서 잘못 클릭해서 인스턴스를 삭제하는 사고를 예방합니다.
  • 변경 계획(plan)을 통해 "무엇이 어떻게 달라지는지"를 명확히 확인할 수 있습니다.

Terraform 실행 흐름

(1) 코드 작성
.tf 파일에 리소스를 선언합니다.

(2) 초기화

terraform init

프로바이더(AWS 등) 플러그인을 다운로드하고 환경을 초기화합니다.

(3) 변경 계획 조회

terraform plan

현재 상태와 코드 상태를 비교해 생성, 수정, 삭제될 리소스를 확인합니다.

(4) 적용

terraform apply

plan에서 보여준 변경 사항을 그대로 인프라에 반영합니다.

(5) 상태 관리
Terraform은 terraform.tfstate라는 파일에 실제 인프라 상태를 저장합니다.
여러 명이 작업할 경우 이 state 파일을 S3 등에 저장하고 락을 걸어 충동을 방지합니다.


기본 코드 예시

provider "aws" {
  region = "ap-northeast-2"
}

resource "aws_instance" "app" {
  ami           = "ami-0abcdef1234567890"
  instance_type = "t3.micro"

  tags = {
    Name = "app-server"
  }
}

이후:

terraform init
terraform plan
terraform apply

: EC2 생성

Terraform 사용 시 주의사항

1) 콘솔에서 임의 변경 금지
콘솔에서 수동 변경하면 state 파일과 실제 인프라 상태가 불일치할 수 있습니다.

2) state 파일은 반드시 중앙 저장소(S3 등)에 저장
단일 개발자라도 장기적으로는 S3 백엔드 사용을 권장합니다.

3) plan 확인 없이 apply 금지
계획(plan)을 보지 않고 apply 하면 의도치 않은 리소스 삭제 위험이 있습니다.

Terraform 도입 시 프로젝트에 주는 이점

  • 개발/운영 환경 (dev/prod)을 코드 한 줄 차이로 쉽게 구분 가능
  • ASG나 ALB 같은 구조적 리소스도 반복 가능한 형태로 관리
  • 비용 최적화 전략 적용 시 리소스 스케일링을 자동화하기 쉬움
  • 팀원 간 인프라 공유 및 유지보수 호율 극대화

특히 장기 서버 운영을 고려하는 프로젝트에서 Terraform은 필수 도구 역할을 합니다.

0개의 댓글