CloudFormation이란?
AWS CloudFormation은 AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스이다. 필요한 모든 AWS 리소스(예: Amazon EC2 인스턴스 또는 Amazon RDS DB 인스턴스)를 설명하는 템플릿을 생성하면 CloudFormation이 해당 리소스의 프로비저닝과 구성을 담당한다. AWS 리소스를 개별적으로 생성하고 구성할 필요가 없으며 어떤 것이 무엇에 의존하는지 파악할 필요도 없다. CloudFormation에서 모든 것을 처리한다. 다음 시나리오는 CloudFormation이 얼마나 유용한지를 보여준다.
1. 인프라 관리 간소화
확장 가능한 웹 애플리케이션에 백엔드 데이터베이스도 포함되어 있는 경우 Auto Scaling 그룹, Elastic Load Balancing 로드 밸런서 및 Amazon Relational Database Service 데이터베이스 인스턴스를 사용할 수 있다. 각 개별 서비스를 사용하여 이러한 리소스를 프로비저닝할 수 있으며 리소스를 생성한 후에는 함께 작동하도록 구성해야 한다. 모든 작업을 마치고 애플리케이션을 제대로 실행하려면 복잡하고 많은 시간이 소요될 수 있다.
이렇게 하는 대신 CloudFormation 템플릿을 생성하거나 기존 템플릿을 수정할 수 있다. 템플릿에는 모든 리소스와 해당하는 속성이 설명된다. 템플릿을 사용하여 CloudFormation 스택을 생성할 경우 CloudFormation에서 Auto Scaling 그룹, 로드 밸런서 및 데이터베이스를 자동으로 프로비저닝한다. 스택이 생성된 이후에 AWS 리소스가 실행된다. 스택을 쉽게 삭제할 수 있다. 스택에 있는 모든 리소스를 삭제하면 된다. CloudFormation을 사용하여 리소스 모음을 단일 단위로 쉽게 관리할 수 있다.
2. 신속하게 인프라 복제
애플리케이션의 가용성을 확대해야 하는 경우 여러 리전에서 애플리케이션을 복제할 수 있다. 그러면 한 리전에서 사용할 수 없는 경우에도 다른 리전의 사용자는 애플리케이션을 계속해서 사용할 수 있다. 애플리케이션을 복제할 때 리소스도 복제해야 한다는 문제가 있다. 애플리케이션에 필요한 모든 리소스를 기록해야 할 뿐 아니라, 각 리전에서 해당 리소스를 프로비저닝하고 구성해야 한다.
CloudFormation 템플릿을 재사용하여 리소스를 일관되고 반복적으로 생성할 수 있다. 템플릿을 재사용하려면 리소스를 한 번만 설명하고 여러 리전에서 동일한 리소스를 반복적으로 프로비저닝할 수 있다.
3. 인프라 변경 사항을 쉽게 제어 및 추적
기본 리소스를 증분 방식으로 업그레이드해야 하는 경우도 있다. 예를 들어 Auto Scaling 시작 구성에서 더 우수한 성능의 인스턴스 유형으로 변경하여 Auto Scaling 그룹의 최대 인스턴스 수를 줄일 수 있다. 업데이트를 완료한 이후에 문제가 발생할 경우 인프라를 원래 설정으로 롤백해야 할 수 있다. 이 작업을 수동으로 수행하려면 변경된 리소스를 기억하고 원래 설정을 알고 있어야 한다.
CloudFormation을 사용하여 인프라를 프로비저닝할 경우 프로비저닝되는 리소스와 해당 설정이 CloudFormation 템플릿에 정확히 설명된다. 템플릿은 텍스트 파일이므로 템플릿에서 차이점을 추적하여 인프라 변경 사항을 추적할 수 있다. 이는 개발자가 소스 코드에 대한 개정 사항을 제어하는 방식과 비슷하다. 예를 들어 버전 제어 시스템을 템플릿과 함께 사용하여 변경된 내용, 변경한 사람, 변경 시간 등을 정확히 알 수 있다. 언제든지 인프라에 대한 변경 사항을 되돌려야 하는 경우 이전 버전의 템플릿을 사용할 수 있다.