AWS CloudFormation(클라우드 포메이션)

1. 클라우드 포메이션 개요

AWS CloudFormation은 YAML 또는 JSON 형식의 템플릿을 사용하여 EC2, RDS, S3, VPC, IAM 등의 AWS 리소스를 코드처럼 정의하고, 자동으로 생성·변경·삭제할 수 있도록 도와줍니다. 이를 통해 인프라의 버전 관리, 재현성, 자동화가 가능해집니다.

2. 클라우드 포메이션의 주요 구성 요소

2.1 템플릿(Template)

  • 인프라 자원을 정의하는 핵심 문서입니다.
  • YAML 또는 JSON 형식으로 작성됩니다.
  • 구성:
    • AWSTemplateFormatVersion: 템플릿 버전
    • Description: 템플릿 설명
    • Parameters: 사용자 입력값 정의
    • Mappings: 조건별 리소스 값 설정
    • Conditions: 조건부 리소스 생성을 위한 조건문
    • Resources: 생성할 실제 AWS 리소스 정의
    • Outputs: 결과 출력 값 지정 (예: ELB 주소)

2.2 스택(Stack)

  • 템플릿을 실행하여 생성된 AWS 리소스들의 모음입니다.
  • 하나의 스택이 하나의 애플리케이션 또는 환경(예: dev, prod)을 구성할 수 있습니다.

2.3 변경 세트(Change Set)

  • 템플릿 변경 시 실제 반영 전, 어떤 변경이 이루어질지 미리 확인할 수 있는 기능입니다.

3. 클라우드포메이션의 특징

3.1 장점

  • 인프라 자동화: 수동 작업 없이 빠르게 배포 가능
  • 버전 관리 용이: Git 등과 연동해 코드로 관리 가능
  • 재현성 보장: 동일한 템플릿으로 여러 환경 생성 가능
  • 롤백 기능: 배포 실패 시 자동으로 이전 상태로 복구

3.2 단점

  • 학습 곡선 존재: YAML 문법, 자원 구조에 대한 이해 필요
  • 디버깅 어려움: 실패 원인을 파악하는 데 시간이 걸릴 수 있음
  • 리소스 종속성 관리 주의: 순서나 의존성 설정이 잘못되면 실패 가능성 존재

4. 사용 사례

사례설명
웹 애플리케이션 배포EC2, RDS, ELB, Auto Scaling 등을 포함한 웹 아키텍처 자동화
복잡한 네트워크 구성VPC, 서브넷, 라우팅 테이블 등 네트워크 설정 자동화
멀티 환경 구성dev, test, prod 환경별 동일 구조 배포
CICD 파이프라인 구축CodePipeline, CodeBuild, S3, Lambda 등 자원 자동화

5. 예시: 간단한 EC2 템플릿 (YAML)

6. 클라우드포메이션 아키텍처 구성도

7. 정리

  • 클라우드포메이션은 인프라 자동화를 위한 강력한 도구로, DevOps나 IaC(Infrastructure as Code) 환경 구축에 필수적입니다.
  • 다른 IaC 도구(Terraform 등)에 비해 AWS에 최적화되어 있으며, AWS 내 서비스와의 통합성이 매우 뛰어납니다.
  • 초기에는 학습이 필요하지만, 일단 익숙해지면 대규모 환경을 빠르고 안정적으로 운영할 수 있습니다.

Leave a Comment