CloudFormation vs Terraform – 인프라 자동화 도구 비교

y001·2025년 3월 29일
0
post-thumbnail

1. 기본 개념

항목CloudFormationTerraform
제작사AWSHashiCorp
목적AWS 리소스 자동 생성/관리멀티클라우드 인프라 자동화
문법YAML 또는 JSONHCL (HashiCorp Configuration Language)
설치 필요 여부❌ (AWS 서비스로 제공)✅ (CLI 설치 필요)

CloudFormation은 AWS에서 공식으로 제공하는 서비스이고, Terraform은 써드파티 오픈소스 도구다. 따라서 CloudFormation은 AWS와의 통합성이 좋고, Terraform은 다양한 클라우드를 동시에 다룰 수 있다.


2. 멀티 클라우드 지원

항목CloudFormationTerraform
지원 대상AWS 한정AWS, GCP, Azure, Kubernetes, VMware 등 다양한 플랫폼
멀티클라우드 환경

Terraform은 AWS뿐 아니라 GCP, Azure, 온프레미스 VM까지 지원한다. 특히 요즘 같이 멀티클라우드나 하이브리드 클라우드가 중요한 환경에서는 Terraform의 범용성이 유리하다.


3. 상태(State) 관리

항목CloudFormationTerraform
상태 저장 위치AWS가 자동 관리 (스택 상태)기본은 로컬 .tfstate, 원격 백엔드로 이동 가능
충돌 방지 기능스택 기반으로 내장됨Locking은 백엔드 설정 필요 (예: S3 + DynamoDB)

Terraform은 상태 파일이 핵심이다. 이 파일을 잘못 다루면 충돌이 발생할 수 있다. 반면 CloudFormation은 상태를 AWS가 내부적으로 관리하기 때문에 별도 설정이 필요 없다.


4. 모듈화와 재사용성

항목CloudFormationTerraform
모듈화 방식Nested StackModule
재사용성상대적으로 낮음매우 뛰어남

Terraform은 모듈화가 잘 되어 있고, 커뮤니티에서 공유하는 다양한 Module이 많다. 재사용성과 확장성 측면에서 Terraform이 더 유리하다.


5. 에코시스템과 커뮤니티

항목CloudFormationTerraform
공식 문서상세하고 일관적잘 정리되어 있음
예제 / 커뮤니티상대적으로 적음매우 풍부함
학습 자료AWS 공식 강의 위주오픈소스 기반 학습자료 다양

Terraform은 오픈소스 생태계가 크기 때문에 인터넷 상에 많은 예제와 학습 자료가 존재한다. 반면 CloudFormation은 AWS 내부에 갇혀 있는 느낌이 있다.


6. 실제 사용 예시

CloudFormation 예시

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t3.micro
      ImageId: ami-0abcdef1234567890

Terraform 예시

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

Terraform은 문법이 간결하고 선언적이다. CloudFormation은 구조가 더 복잡하지만 AWS 콘솔과 연동하기엔 편하다.


결론 – 어떤 도구를 선택할까?

  • CloudFormation을 추천하는 경우

    • 오직 AWS만 사용할 예정인 경우
    • AWS IAM, 콘솔 연동을 많이 사용하는 경우
    • 상태 관리에 신경 쓰고 싶지 않은 경우
  • Terraform을 추천하는 경우

    • 여러 클라우드를 동시에 사용해야 하는 경우
    • 모듈화, 재사용성, 확장성을 중요하게 생각하는 경우
    • DevOps 자동화와 파이프라인 통합이 필요한 경우

0개의 댓글