본문 바로가기
카테고리 없음

AWS CloudFormation 개념, 구성 요소, 사용 방법 및 활용

by jranke 2025. 3. 14.

AWS CloudFormation 개념

AWS CloudFormation은 클라우드 환경에서 자동화된 방식으로 인프라를 배포하고 관리할 수 있도록 설계된 서비스입니다. 이를 활용하면 AWS 환경을 코드로 정의하여 변경 사항을 손쉽게 추적하고, 반복적으로 동일한 설정을 배포할 수 있습니다.

CloudFormation 작동 방식
CloudFormation 작동 방식 [출처: AWS]

 

1. 인프라 자동화

  • JSON 또는 YAML 형식의 템플릿을 사용하여 AWS 리소스를 코드로 정의할 수 있습니다.
  • 개발, 테스트, 운영 환경을 동일한 설정으로 손쉽게 배포할 수 있습니다.
  • AWS 콘솔, CLI(Command Line Interface), SDK를 통해 배포를 자동화할 수 있습니다.

2. 의존성 관리

AWS 리소스 간의 의존 관계를 자동으로 조정하여 순차적으로 배포합니다. 예를 들어, EC2 인스턴스를 배포하기 전에 보안 그룹(Security Group)과 VPC를 먼저 생성합니다.

 

3. 변경 관리 및 롤백 기능

변경 집합(Change Set)을 활용하면 기존 스택을 업데이트하기 전에 변경 사항을 미리 검토할 수 있습니다. 오류 발생 시 자동 롤백 기능을 제공하여 안정적인 배포가 가능합니다.

 

4. 크로스 리전 및 크로스 계정 배포 지원

여러 AWS 계정 및 리전에 걸쳐 동일한 인프라를 손쉽게 배포할 수 있습니다. 중앙에서 관리하는 템플릿을 사용하여 글로벌 배포 환경을 표준화할 수 있습니다.

 

5. 비용 절감 및 운영 효율성 향상

필요할 때만 인프라를 생성하고 사용이 끝나면 삭제하여 불필요한 비용을 절감할 수 있습니다. 반복 가능한 환경을 구성하여 설정 오류를 줄이고 운영 효율성을 높일 수 있습니다.

 

구성 요소

CloudFormation은 인프라를 코드(IaC, Infrastructure as Code)로 관리할 수 있는 서비스로서, 주요 구성요소는 다음과 같습니다. 

 

1. 템플릿 (Template)

AWS 리소스를 정의하는 JSON 또는 YAML 형식의 파일입니다. CloudFormation 템플릿은 여러 리소스를 포함할 수 있으며, 이를 기반으로 자동 배포가 이루어집니다.

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyS3Bucket:
    Type: "AWS::S3::Bucket"

 

2. 스택 (Stack)

CloudFormation 템플릿을 실행하여 생성된 AWS 리소스의 집합을 의미합니다. 하나의 스택에는 여러 개의 AWS 리소스가 포함될 수 있으며, 스택을 업데이트하면 기존 리소스가 변경되거나 새로운 리소스가 추가됩니다.

 

3. 변경 집합 (Change Set)

기존 스택을 업데이트하기 전에 변경 사항을 미리 검토할 수 있는 기능입니다. 변경 내용이 예상과 다를 경우, 변경을 적용하기 전에 수정할 수 있습니다.

 

4. 매개변수 (Parameters)

템플릿에서 동적으로 값을 변경할 수 있도록 도와주는 기능입니다. 예를 들어, EC2 인스턴스 타입을 사용자 입력값으로 설정할 수 있습니다.

Parameters:
  InstanceType:
    Type: String
    Default: t2.micro

 

5. 출력 값 (Outputs)

CloudFormation이 생성한 리소스의 중요한 값을 출력하는 기능입니다. 예를 들어, 생성된 S3 버킷의 이름을 출력할 수 있습니다.

Outputs:
  BucketName:
    Value: !Ref MyS3Bucket

 

 

사용 방법  및 활용

 

사용 방법

 

1. 템플릿 작성

JSON 또는 YAML 형식으로 AWS 리소스를 정의합니다.

2. AWS 콘솔 또는 CLI에서 스택 생성

AWS 콘솔에서 "CloudFormation" 서비스로 이동하여 "스택 생성"을 클릭한 후, 작성한 템플릿을 업로드합니다. AWS CLI를 사용하여 스택을 생성할 수도 있습니다.

3. 배포 상태 확인

AWS 콘솔에서 스택의 상태를 모니터링할 수 있으며, CLI에서 다음 명령어를 사용하여 배포 상태를 확인할 수 있습니다.

4. 스택 업데이트 및 변경 집합 활용

변경 집합(Change Set)을 활용하여 업데이트 전 변경 사항을 검토합니다.

5. 스택 삭제

필요하지 않은 스택을 삭제하여 관련 리소스를 제거합니다.

 

활용 사례

1. 멀티 계정 및 멀티 리전 배포

대기업에서는 여러 AWS 계정과 리전에 걸쳐 동일한 인프라를 배포해야 하는 경우가 많습니다. CloudFormation을 활용하면 중앙에서 관리하는 템플릿을 사용하여 표준화된 환경을 유지할 수 있습니다.

2. DevOps 및 CI/CD 자동화

CloudFormation을 사용하면 개발 및 운영 환경을 자동으로 배포할 수 있으며, AWS CodePipeline과 연계하여 CI/CD 파이프라인을 구축할 수 있습니다.

3. 보안 및 규정 준수 적용

CloudFormation을 활용하여 보안 그룹, IAM 역할 등을 미리 정의하고 일관된 보안 정책을 적용할 수 있습니다.

4. 비용 최적화 및 운영 효율성 향상

테스트 환경을 필요할 때만 생성하고, 사용 후 자동으로 삭제하여 불필요한 비용을 절감할 수 있습니다. 인프라 변경 사항을 코드로 관리하여 수동 설정 오류를 방지할 수 있습니다.