Terraform — 인프라가 코드가 되다
Terraform — 인프라가 코드가 되다
1. 요약
Terraform 은 2014년 7월 HashiCorp (Mitchell Hashimoto, 2012년 창립) 가 출시한 플랫폼 비종속 IaC (Infrastructure as Code) 도구 다. 첫 버전 0.1 은 AWS 와 DigitalOcean 만 지원했다. HCL (HashiCorp Configuration Language) 이라는 선언적 언어 로 인프라를 기술 → Terraform 이 원하는 상태로 수렴.
2. 배경 (이전 도구의 한계)
AWS CloudFormation (2011) 은 강력했지만 AWS 종속 이었다. Multi-cloud, hybrid cloud 시대에는 플랫폼 비종속 이 필요했다. Mitchell Hashimoto 의 통찰: "CloudFormation 의 좋은 점 + 오픈소스 + 모든 클라우드" 가 답.
3. 핵심 개념·표기법
Terraform HCL 예시:
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "web-server"
}
}
핵심 개념:
- Declarative — 원하는 상태 기술 (procedural ❌)
- State File — 현재 상태 추적 (terraform.tfstate)
- Plan / Apply — 변경 미리 보기 → 실행
- Modules — 재사용 가능 단위
- Providers — AWS·Azure·GCP·K8s·1,000+ 통합
4. 언어·OS 매핑 (★ 강의 핵심)
| 시대 | 환경 | Terraform 활용 |
|---|---|---|
| 2014~16 | AWS, DigitalOcean | 초기 채택 |
| 2016~ | 모든 클라우드 | ★ Multi-cloud 표준 |
| 2018~ | Kubernetes Provider | K8s 인프라 자동화 |
| 2023 | BSL 라이센스 변경 | OpenTofu 포크 (오픈소스 유지) |
| 2024~ | + AI | LLM 이 HCL 자동 생성 |
★ Terraform 의 선언적 코드 = 인프라 패턴이 LLM 시대에 선언적 코드 = LLM 명세 로 진화했다. 언어 (HCL → 자연어) 만 바뀌었지 패턴은 동일.
5. 현대까지의 영향
- Pulumi (2018) — 일반 프로그래밍 언어 (Python, TS) 로 IaC
- AWS CDK — TypeScript/Python 으로 CloudFormation 생성
- Crossplane — Kubernetes-native IaC
- OpenTofu (2023) — Terraform BSL 변경 후 오픈소스 포크
- AI Spec → Terraform — Claude Code, Cursor 가 자동 생성
6. 주요 인물·사건
| 연도 | 사건 |
|---|---|
| 2011 | Hashimoto 블로그 — 오픈소스 cloud-agnostic CloudFormation 의 필요 |
| 2012 | HashiCorp 창립 |
| 2014 7월 | Terraform 0.1 출시 (AWS + DigitalOcean) |
| 2015~16 | 플러그인 생태계 폭발 |
| 2018 | Kubernetes Provider |
| 2023 | BSL 라이센스 — OpenTofu 포크 |
| 2024 | AI 자동 HCL 생성 도구화 |
7. 강의 활용
"인프라조차 코드가 되었다 → 그러면 코드 자체는 무엇이 되는가?" 의 흐름. 선언적 명세 + 자동 수렴 이라는 원리는 인프라뿐 아니라 AI 에이전트 운영 에도 적용 — Spec 파일이 곧 인프라 정의 와 같다.
출처
- Terraform (software) — Wikipedia
- What is IaC with Terraform? — HashiCorp Developer
- HashiCorp Terraform Revolutionized IaC — Build5Nines
- What is Terraform & IaC? — Pluralsight
그룹 시리즈
→ synthesis/group-se_g5 (시대 그룹 종합 카드)