CloudFormation

기술노트

CloudFormation

비유로 쉽게 이해하기

CloudFormation은 **'건축 설계도'**와 같습니다. 건물을 지을 때, 설계도만 있으면 어떤 자재(리소스)가 얼마나 필요하고, 어떤 순서로 지어야 하는지(종속성) 명확하게 알 수 있습니다. CloudFormation은 이처럼 AWS 인프라(EC2, S3, VPC 등)를 코드로 정의한 설계도(템플릿)이며, 이 설계도만 있으면 언제든지 동일한 인프라를 자동으로, 반복해서, 실수 없이 구축할 수 있습니다.

개요

AWS CloudFormation은 AWS 리소스를 모델링하고 설정하는 데 도움이 되는 IaC(Infrastructure as Code, 코드형 인프라) 서비스입니다. JSON 또는 YAML 형식의 템플릿 파일을 사용하여 필요한 모든 AWS 인프라를 정의하고, CloudFormation이 해당 템플릿에 따라 리소스를 자동으로 프로비저닝하고 구성합니다.

상세 설명

개발자가 수동으로 AWS 관리 콘솔을 클릭하여 리소스를 생성하는 대신, CloudFormation 템플릿에 필요한 모든 리소스와 그 속성, 종속성을 코드로 명시합니다. 예를 들어, 특정 사양의 EC2 인스턴스, 해당 인스턴스에 연결될 EBS 볼륨, 그리고 적용될 Security Group 규칙 등을 하나의 템플릿 파일에 모두 정의할 수 있습니다.

이 템플릿을 CloudFormation에 업로드하면, CloudFormation은 '스택(Stack)'이라는 단위로 관련 리소스들을 하나의 그룹으로 묶어 관리합니다. 스택을 생성하면 템플릿에 정의된 모든 리소스가 자동으로 생성되고, 스택을 업데이트하면 변경 사항이 적용되며, 스택을 삭제하면 관련된 모든 리소스가 한 번에 깔끔하게 삭제됩니다.

왜 중요할까요?

  • 자동화 및 표준화: 인프라 구축 과정을 자동화하여 사람의 실수를 줄이고, 템플릿을 통해 조직 전체의 인프라 구성을 표준화할 수 있습니다.
  • 변경 관리의 용이성: 인프라를 코드로 관리하므로, Git과 같은 버전 관리 시스템을 통해 변경 이력을 추적하고 검토하기 용이합니다.
  • 재사용성 및 이식성: 잘 만들어진 템플릿은 다른 환경(개발, 스테이징, 운영)이나 다른 프로젝트에서 쉽게 재사용할 수 있습니다.

주요 특징

  • 코드형 인프라(IaC): 인프라를 텍스트 파일(YAML/JSON)로 정의하고 관리합니다.
  • 스택(Stack) 관리: 관련된 리소스들을 스택이라는 단일 단위로 생성, 업데이트, 삭제합니다.
  • 변경 세트(Change Sets): 스택을 업데이트하기 전에, 어떤 리소스가 어떻게 변경될지 미리 확인하여 의도치 않은 변경을 방지할 수 있습니다.
  • 롤백 기능: 스택 생성 또는 업데이트 중 오류가 발생하면, 자동으로 이전의 안정적인 상태로 롤백하여 인프라의 일관성을 유지합니다.
  • 사용자 지정 리소스: AWS 리소스가 아닌 서드파티 리소스나 사용자 정의 로직도 CloudFormation을 통해 프로비저닝할 수 있습니다.

사용 사례

  • 개발, 테스트, 프로덕션 환경에 대해 동일한 애플리케이션 인프라를 반복적으로 배포
  • 재해 복구(DR)를 위해 주 리전의 인프라를 다른 리전에 동일하게 복제
  • 조직의 보안 및 규정 준수 정책이 적용된 표준화된 인프라 템플릿 배포
  • 복잡한 다중 계층 애플리케이션의 모든 리소스를 한 번에 관리

관련 서비스/용어

참고 자료