인프라를 콘솔에서 클릭클릭으로 구성하던 시대는 지났습니다.
Terraform은 인프라를 코드로 선언하고, 버전 관리하고, 재현 가능하게 만드는 IaC(Infrastructure as Code) 도구입니다.
왜 IaC가 필요한가
클릭으로 만든 AWS 인프라는 다음 문제를 가집니다.
- 어떤 설정으로 만들었는지 기록이 없음
- 동일 환경을 다시 만들기 어려움
- 팀원 간 인프라 상태 공유가 안 됨
- 실수로 중요 리소스를 삭제하면 복구 어려움
Terraform으로 코드화하면 Git에 커밋, PR 리뷰, 롤백이 모두 가능합니다.
Terraform 핵심 개념
- Provider: AWS, GCP 등 인프라 플랫폼 연결
- Resource: EC2, S3 등 실제로 생성할 자원
- State: Terraform이 현재 인프라 상태를 추적하는 파일
- Plan / Apply: 변경사항을 미리 보고(plan), 실제 적용(apply)
기본 예시: EC2 인스턴스 생성
provider "aws" {
region = "ap-northeast-2" # 서울
}
resource "aws_instance" "web" {
ami = "ami-0c9c942bd7bf113a2" # Amazon Linux 2023
instance_type = "t3.micro"
tags = {
Name = "my-web-server"
}
}
output "public_ip" {
value = aws_instance.web.public_ip
}
terraform init → terraform plan → terraform apply 세 단계로 실제 EC2가 생성됩니다.
실전에서 중요한 것들
State 파일 원격 저장 필수
terraform.tfstate 파일은 절대 로컬에만 두면 안 됩니다.
S3 Remote Backend를 설정해 팀 전체가 동일한 state를 공유해야 합니다.
모듈(Module) 활용
중복되는 인프라 패턴(VPC, EC2 + ELB 조합 등)은 모듈로 추상화하면 재사용이 쉬워집니다.
Workspace로 환경 분리
terraform workspace new staging 으로 스테이징 환경을 별도로 관리할 수 있습니다.
인프라도 이제 코드 리뷰를 받아야 합니다.
Terraform을 도입하면 팀의 인프라 운영 성숙도가 한 단계 올라갑니다.
작성한 정보가 조금이나마 유익하고 도움이 되셨다면, 가시기 전에 아래 광고 한번 살짝 눌러주시면 정말 큰 힘이 됩니다. 감사합니다!