Terraform with AWS - Day1: 왜 Terraform이 중요한가 & 실제 작동 방식

발행: (2025년 12월 19일 오전 04:41 GMT+9)
6 min read
원문: Dev.to

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 로 입력을 간편하게 합니다.

이제 인프라를 코드로 구축할 준비가 되었습니다!

Back to Blog

관련 글

더 보기 »

AWS Terraform 라이프사이클 규칙

소개 인프라스트럭처 코드(IaC)는 업데이트, 교체 및 삭제 시 리소스가 어떻게 동작하는지에 대한 완전한 제어가 있을 때 가장 강력합니다. Terr...