Terraform with AWS - Day1: 왜 Terraform이 중요한가 & 실제 작동 방식
Source: Dev.to
인프라스트럭처를 코드로(IaC)란?
인프라스트럭처를 코드로(IaC)는 클라우드 인프라를 생성하고 관리하기 위해 코드를 작성한다는 의미입니다.
클라우드 콘솔에서 버튼을 클릭하는 대신 코드를 사용할 수 있게 해줍니다.
예시
resource "aws_instance" "demo" {
ami = "ami-12345"
instance_type = "t2.micro"
}
IaC의 장점
- 재현 가능
- 일관성 유지
- 버전 관리됨
- 자동화됨
- 오류 없음
- 팀 친화적
IaC에 사용되는 도구
멀티‑클라우드 도구
- Terraform ⭐ (가장 인기)
- Pulumi
클라우드‑전용 도구
- AWS CloudFormation, CDK, SAM
- Azure ARM, Bicep
- GCP Deployment Manager
Terraform는 범용적이며 AWS, Azure, GCP, Kubernetes 및 수많은 다른 플랫폼과 함께 작동합니다. 그래서 거의 모든 DevOps 로드맵이 Terraform부터 시작됩니다.
왜 Terraform이 필요할까?
수동 인프라 관리는 확장되지 않는다
간단한 3‑계층 애플리케이션(웹, 앱, 데이터베이스)을 생각해 보세요. 수동으로 배포하려면 다음을 생성해야 합니다:
- VPC
- 서브넷
- EC2 인스턴스
- Auto Scaling 그룹
- 로드 밸런서
- RDS 데이터베이스
- Route 53 레코드
- 보안 그룹
- …그 외 여러 항목
수동으로 이 작업을 하면 환경당 약 2시간이 소요됩니다. 일반적인 환경(dev, staging, prod)을 곱하면 → 앱당 12시간이 됩니다. 실제 기업에서는 수십 개, 수백 개의 애플리케이션을 프로비저닝해야 하므로 다음과 같은 문제가 발생합니다:
- 시간 소모적인 작업
- 높은 비용
- 오류가 발생하기 쉬운 프로세스
- 일관성 없는 환경
- 감사 추적 부재
수동 클라우드 프로비저닝의 문제점
- 너무 느림 → 릴리즈 지연
- 많은 인력이 필요 → 큰 인프라 팀 비용
- 인간 실수(잘못된 AMI, 서브넷, IP) → 장애 발생
- 일관성 부족(Dev ≠ Staging ≠ Prod) → “내 환경에서는 동작한다!”
- 버전 관리 부재 → 히스토리, 감사, 롤백 불가
Terraform: 궁극적인 해결책
- 인프라 코드를 한 번 작성
- 환경 수에 관계없이 재사용
- 모든 것을 일관되게 유지
- 배포 자동화
- 인간 실수 제거
- Git을 통해 모든 변경 사항 추적
- 비용 절감을 위해 환경을 자동으로 파괴
이 모든 것이 몇 개의 .tf 파일만으로 이루어지며, 클라우드 인프라에 속도, 안전성, 재현성 및 제어를 제공합니다.
Terraform은 실제로 어떻게 동작할까?
Terraform는 **HCL(HashiCorp Configuration Language)**이라는 선언형 언어를 사용합니다. 원하는 상태를 .tf 파일에 기술합니다.
예시
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
핵심 명령어
terraform init– 공급자 플러그인을 다운로드합니다(항상 첫 번째 명령).terraform validate– Terraform 파일이 구문적으로 올바른지 검사합니다.terraform plan– Terraform이 생성, 수정, 삭제할 내용을 미리 보여줍니다(안전 검증).terraform apply– 실제로 AWS API 호출을 통해 인프라를 생성합니다.terraform destroy–.tf파일에 정의된 모든 것을 제거합니다; 개발/테스트 환경에 유용합니다.
Terraform + Git = 순수 마법
Git과 Terraform을 함께 사용하면 다음을 얻을 수 있습니다:
- 전체 버전 히스토리
- 손쉬운 롤백
- 풀‑리퀘스트 승인
- 팀 간 협업
- 빠른 승인 프로세스
- CI/CD 자동화
인프라가 예측 가능하고, 안전하며, 감사 가능해집니다.
Terraform 설치 (간단 요약)
- Homebrew, apt, yum, Chocolatey 등으로 설치합니다.
- 설치 확인:
terraform version - VS Code 확장 HashiCorp Terraform을 설치합니다.
- (선택) 별칭 설정:
alias tf=terraform로 입력을 간편하게 합니다.
이제 인프라를 코드로 구축할 준비가 되었습니다!