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 템플릿에 정확히 설명된다.
◦
템플릿은 텍스트 파일이므로 템플릿에서 차이점을 추적하여 인프라 변경 사항을 추적할 수 있다.
◦
이는 개발자가 소스 코드에 대한 개정 사항을 제어하는 방식과 비슷하다.
버전 제어 시스템을 템플릿과 함께 사용하여 변경된 내용, 변경한 사람, 변경 시간 등을 정확히 알 수 있다.
▪
언제든지 인프라에 대한 변경 사항을 되돌려야 하는 경우 이전 버전의 템플릿을 사용할 수 있다.