Search

CloudFormation

대분류
DevOps/Tool
소분류
AWS
주요 레퍼런스
https://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/Welcome.html
최종 편집 일시
2025/01/13 12:12
생성 일시
2025/01/07 08:14
15 more properties

CloudFormation

AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스
필요한 모든 AWS 리소스(예: Amazon EC2 인스턴스 또는 Amazon RDS DB 인스턴스)를 설명하는 템플릿을 생성하면 CloudFormation이 해당 리소스의 프로비저닝과 구성을 담당한다.
AWS 리소스를 개별적으로 생성하고 구성할 필요가 없으며 어떤 것이 무엇에 의존하는지 파악할 필요도 없다.

인프라 관리 간소화

보통 인프라 관리를 하려면
확장 가능한 웹 애플리케이션에 백엔드 데이터베이스도 포함되어 있는 경우 Auto Scaling 그룹, Elastic Load Balancing 로드 밸런서 및 Amazon Relational Database Service 데이터베이스 인스턴스를 사용할 수 있다.
각 개별 서비스를 사용하여 이러한 리소스를 프로비저닝할 수 있으며 리소스를 생성한 후에는 함께 작동하도록 구성해야 한다.
하지만 이런 작업들을 마치고 애플리케이션을 제대로 실행하려면 복잡하고 많은 시간이 소요될 수 있다.
이렇게 하는 대신 CloudFormation 템플릿을 생성하거나 기존 템플릿을 수정할 수 있다. 
템플릿은 모든 리소스와 해당 속성을 설명한다.
템플릿을 사용하여 CloudFormation 스택을 생성할 경우 CloudFormation에서 Auto Scaling 그룹, 로드 밸런서 및 데이터베이스를 자동으로 프로비저닝한다.
프로비저닝(Provisioning) : 시스템이나 애플리케이션에서 필요한 리소스나 서비스를 미리 준비하고 배치하는 과정 이 과정은 하드웨어, 소프트웨어, 네트워크 자원 등을 포함할 수 있으며, 이를 통해 사용자가 필요로 할 때 즉시 사용할 수 있도록 준비된 상태를 유지한다. 프로비저닝은 수동으로 이루어질 수도 있고, 스크립트나 자동화 도구를 활용해 자동으로 진행될 수도 있다.
스택이 생성된 이후에 AWS 리소스가 실행된다.
스택을 쉽게 삭제할 수 있다. 스택에 있는 모든 리소스를 삭제하면 된다.
CloudFormation을 사용하여 리소스 모음을 단일 단위로 쉽게 관리할 수 있다.

신속하게 인프라 복제

애플리케이션의 가용성을 확대해야 하는 경우 여러 리전에서 애플리케이션을 복제할 수 있다.
그러면 한 리전에서 사용할 수 없는 경우에도 다른 리전의 사용자는 애플리케이션을 계속해서 사용할 수 있다.
애플리케이션을 복제할 때 리소스도 복제해야 한다는 문제가 있다.
애플리케이션에 필요한 모든 리소스를 기록해야 할 뿐 아니라, 각 리전에서 해당 리소스를 프로비저닝하고 구성해야 한다.
CloudFormation 템플릿을 재사용하여 리소스를 일관되고 반복적으로 생성할 수 있다.
템플릿을 재사용하려면 리소스를 한 번만 설명하고 여러 리전에서 동일한 리소스를 반복적으로 프로비저닝할 수 있다.

인프라 변경 사항을 쉽게 제어 및 추적

기본 리소스를 증분 방식으로 업그레이드해야 하는 경우도 있다.
Auto Scaling 시작 구성에서 더 우수한 성능의 인스턴스 유형으로 변경하여 Auto Scaling 그룹의 최대 인스턴스 수를 줄일 수 있다.
업데이트를 완료한 이후에 문제가 발생할 경우 인프라를 원래 설정으로 롤백해야 할 수 있다.
이 작업을 수동으로 수행하려면 변경된 리소스를 기억하고 원래 설정을 알고 있어야 한다.
CloudFormation을 사용하여 인프라를 프로비저닝할 경우 프로비저닝되는 리소스와 해당 설정이 CloudFormation 템플릿에 정확히 설명된다.
템플릿은 텍스트 파일이므로 템플릿에서 차이점을 추적하여 인프라 변경 사항을 추적할 수 있다.
이는 개발자가 소스 코드에 대한 개정 사항을 제어하는 방식과 비슷하다.
버전 제어 시스템을 템플릿과 함께 사용하여 변경된 내용, 변경한 사람, 변경 시간 등을 정확히 알 수 있다.
언제든지 인프라에 대한 변경 사항을 되돌려야 하는 경우 이전 버전의 템플릿을 사용할 수 있다.