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)
AWSTemplateFormatVersion: '2010-09-09'
Description: EC2 instance 생성 예제
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: ami-0abcdef1234567890
KeyName: my-key
6. 클라우드포메이션 아키텍처 구성도
사용자 → CloudFormation → AWS 서비스
↓
템플릿(YAML)
↓
EC2 / RDS / S3 / VPC 등
7. 정리
- 클라우드포메이션은 인프라 자동화를 위한 강력한 도구로, DevOps나 IaC(Infrastructure as Code) 환경 구축에 필수적입니다.
- 다른 IaC 도구(Terraform 등)에 비해 AWS에 최적화되어 있으며, AWS 내 서비스와의 통합성이 매우 뛰어납니다.
- 초기에는 학습이 필요하지만, 일단 익숙해지면 대규모 환경을 빠르고 안정적으로 운영할 수 있습니다.