본문 바로가기
CSP (Cloud Service Provider)/AWS

[AWS] CloudFormation

by BTC_마루 2023. 10. 30.

안녕하세요 비티시보이즈입니다.

 

이번 포스팅은 CloudFormation 입니다.

 


 

CloudFormation이란?

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

 

 

1. 인프라 관리 간소화

확장 가능한 웹 애플리케이션에 백엔드 데이터베이스도 포함되어 있는 경우 오토 스케일링, Elastic Load Balancing 로드 밸런서 및 Amazon Relational Database Service 데이터베이스 인스턴스를 사용할 수 있습니다. 각 개별 서비스를 사용하여 이러한 리소스를 프로비저닝할 수 있으며 리소스를 생성한 후에는 함께 작동하도록 구성해야 합니다. 모든 작업을 마치고 애플리케이션을 제대로 실행하려면 복잡하고 많은 시간이 소요될 수 있습니다.

 

이렇게 하는 대신 CloudFormation 템플릿을 생성하거나 기존 템플릿을 수정할 수 있습니다. 템플릿은 모든 리소스와 해당 속성을 설명합니다. 템플릿을 사용하여 CloudFormation 스택을 생성할 경우 CloudFormation에서 Auto Scaling 그룹, 로드 밸런서 및 데이터베이스를 자동으로 프로비저닝합니다. 스택이 생성된 이후에 AWS 리소스가 실행됩니다. 스택을 쉽게 삭제할 수 있습니다. 스택에 있는 모든 리소스를 삭제하면 됩니다. CloudFormation을 사용하여 리소스 모음을 단일 단위로 쉽게 관리할 수 있습니다.

 

2. 신속하게 인프라 복제

애플리케이션의 가용성을 확대해야 하는 경우 여러 리전에서 애플리케이션을 복제할 수 있습니다. 그러면 한 리전에서 사용할 수 없는 경우에도 다른 리전의 사용자는 애플리케이션을 계속해서 사용할 수 있습니다. 애플리케이션을 복제할 때 리소스도 복제해야 한다는 문제가 있습니다. 애플리케이션에 필요한 모든 리소스를 기록해야 할 뿐 아니라, 각 리전에서 해당 리소스를 프로비저닝하고 구성해야 합니다.

 

CloudFormation 템플릿을 재사용하여 리소스를 일관되고 반복적으로 생성할 수 있습니다. 템플릿을 재사용하려면 리소스를 한 번만 설명하고 여러 리전에서 동일한 리소스를 반복적으로 프로비저닝할 수 있습니다.

 

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

기본 리소스를 증분 방식으로 업그레이드해야 하는 경우도 있습니다. 예를 들어 Auto Scaling 시작 구성에서 더 우수한 성능의 인스턴스 유형으로 변경하여 Auto Scaling 그룹의 최대 인스턴스 수를 줄일 수 있습니다. 업데이트를 완료한 이후에 문제가 발생할 경우 인프라를 원래 설정으로 롤백해야 할 수 있습니다. 이 작업을 수동으로 수행하려면 변경된 리소스를 기억하고 원래 설정을 알고 있어야 합니다.

 

CloudFormation을 사용하여 인프라를 프로비저닝할 경우 프로비저닝되는 리소스와 해당 설정이 CloudFormation 템플릿에 정확히 설명됩니다. 템플릿은 텍스트 파일이므로 템플릿에서 차이점을 추적하여 인프라 변경 사항을 추적할 수 있습니다. 이는 개발자가 소스 코드에 대한 개정 사항을 제어하는 방식과 비슷합니다. 예를 들어 버전 제어 시스템을 템플릿과 함께 사용하여 변경된 내용, 변경한 사람, 변경 시간 등을 정확히 알 수 있습니다. 언제든지 인프라에 대한 변경 사항을 되돌려야 하는 경우 이전 버전의 템플릿을 사용할 수 있습니다.

 


 

AWS CloudFormation을 사용하는 경우에는 템플릿  스택으로 작업합니다. 템플릿을 생성하여 AWS 리소스와 해당 속성에 대해 설명합니다. 스택을 생성할 때마다 CloudFormation에서 템플릿에 설명된 리소스를 프로비저닝합니다.

 

템플릿

CloudFormation 템플릿은 JSON 또는 YAML 형식의 텍스트 파일입니다. .json.yaml.template.txt 등의 확장명을 사용하여 이러한 파일을 저장할 수 있습니다. CloudFormation은 이러한 템플릿을 AWS 리소스 구축을 위한 청사진으로 사용합니다. 예를 들어, 템플릿에서 인스턴스 유형, AMI ID, 블록 디바이스 매핑, Amazon EC2 키 페어 이름 등과 같은 Amazon EC2 인스턴스를 설명할 수 있습니다. 스택을 생성할 때마다 CloudFormation에서 템플릿에 설명된 항목을 생성하는 데 사용되는 템플릿도 지정합니다.

 

스택

CloudFormation을 사용할 경우 스택이라는 하나의 단위로 관련 리소스를 관리합니다. 스택을 생성, 업데이트, 삭제하여 리소스 모음을 생성, 업데이트 및 삭제합니다. 스택의 모든 리소스는 스택의 CloudFormation 템플릿으로 정의합니다. Auto Scaling 그룹, Elastic Load Balancing 로드 밸런서 및 Amazon Relational Database Service(Amazon RDS) 데이터베이스 인스턴스를 포함하는 템플릿을 생성했다고 가정합니다. 이러한 리소스를 생성하려면 생성한 템플릿을 제출하여 스택을 생성합니다. 그러면 CloudFormation에서 모든 리소스를 자동으로 프로비저닝합니다. CloudFormation 콘솔, API 또는 AWS CLI를 사용하여 스택으로 작업할 수 있습니다.

 

변경 세트

스택에서 실행 중인 리소스를 변경해야 하는 경우 스택을 업데이트합니다. 리소스를 변경하기 전에 제안된 변경 사항이 요약된 변경 세트를 생성할 수 있습니다. 변경 세트를 사용하면 변경 사항을 구현하기 이전에 해당 변경이 실행 중인 리소스 특히, 중요 리소스에 미치는 영향을 확인할 수 있습니다.

예를 들어, Amazon RDS 데이터베이스 인스턴스의 이름을 변경한 경우 CloudFormation에서 새 데이터베이스를 생성하고 이전 데이터베이스를 삭제합니다. 아직 백업하지 않은 경우 이전 데이터베이스의 데이터를 잃게 됩니다. 변경 세트를 생성한 경우 변경 후 데이터베이스가 교체된다는 사실을 알 수 있으므로 스택을 업데이트하기 이전에 적절히 계획할 수 있습니다.

댓글