You are a developer, not a coder.

AWS CloudFormation 본문

AWS/기본 개념

AWS CloudFormation

Mattmk 2020. 2. 20. 11:11
SMALL

1. AWS CloudFormation란?

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

 

다음은 AWS CloudFormation이 어느정도로 유용한지 알려 준다.

 

인프라 관리 간소화

확장 가능한 웹 애플리케이션에 백엔드 데이터베이스도 포함되어 있는 경우 Auto Scaling 그룹, Elastic Load Balancing 로드 밸런서 및 Amazon Relational Database Service 데이터베이스 인스턴스를 사용할 수 있다. 일반적으로 개별 서비스를 사용하여 이러한 리소스를 프로비저닝 할 수 있다. 리소스를 생성한 후 리소스가 서로 연계되어 작동하도록 구성해야 한다. 이렇게 하는 대신 AWS CloudFormation 템플릿을 생성하거나 수정할 수 있다.

템플릿에서는 모든 리소스와 해당 속성에 대해 설명 한다. 템플릿을 사용하여 AWS CloudFormation 스택을 생성할 경우 AWS CloudFormation에서 Auto Scaling 그룹, 로드 밸런서 및 데이터베이스를 자동으로 프로비저닝 한다. 스택이 생성된 이후에 AWS 리소스가 실행 된다. 스택을 쉽게 삭제할 수 있다. 그방법은 스택에 있는 모든 리소스를 삭제하면 된다.

 

신속하게 인프라 복제

애플리케이션 가용성 확대 → 여러 리전에서 애플리케이션 복제


한 리전에서 사용할 수 없는 경우에도 다른 리전의 사용자는 애플리케이션을 계속해서 사용할 수 있다.

애플리케이션을 복제할 때 리소스도 복제해야 한다는 문제가 있다. 애플리케이션에 필요한 모든 리소스를 기록해야 할 뿐아니라, 각 리전에서 해당 리소스를 프로비저닝하고 구성해야 한다.

이러한 단점들을 AWS CloudFormation을 통해 해결 가능하다.

 

AWS CloudFormation을 사용할 때 템플릿을 재사용하여 리소스를 일관되고 반복적으로 설정할 수 있다.

리소스를 한 번만 설명하고 여러 리전에서 동일한 리소스를 반복적으로 프로비저닝할 수 있다.

 

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

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

이러한 단점들을 AWS CloudFormation을 통해 해결 가능 하다.

 

AWS CloudFormation을 사용하여 인프라를 프로비저닝할 경우 프로비저닝되는 리소스와 해당 설정이 AWS CloudFormation 템플릿에 정확히 설명된다. 템플릿은 텍스트 파일이므로 템플릿에서 차이점을 추적하여 인프라 변경 사항을 추적할 수 있다. 이것은 개발자가 소스 코드에 대한 개정 사항을 제어하는 방식과 비슷하다.

예를 들면, 버전 제어 시스템을 템플릿과 함께 사용하여 변경된 내용, 변경한 사람, 변경 시간 등을 정확히 알 수 있다. 언제든지 인프라에 대한 변경 사항을 되돌려야 하는 경우 이전 버전의 템플릿을 사용할 수 있다.

2. 개념

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

AWS CloudFormation의 큰주제는 다음과 같이 3가지가 있다.

 

템플릿

AWS CloudFormation템플릿은 JSON 또는 YAML 형식의 텍스트 파일이다.

.json, .yaml, .template 또는 .txt 등 모든 확장명으로 파일을 저장할 수 있다. AWS CloudFormation에서는 템플릿을 AWS 리소스 구축을 위한 블루프린트로 사용한다. 예를들면, 템플릿에서 인스턴스 유형, AMI ID, 블록 디바이스 매핑, Amazon EC2 키페어 이름 등과 같은 Amazon EC2 인스턴스를 설명할 수 있다.

또한, 스택을 생성할 때 마다 AWS CloudFormation에서템플릿에설명된 항목을 생성하는데 사용되는 템플릿도 지정해야 한다. 단일 템플릿에서 여러 리소스를 지정하고 해당 리소스를 함께 작동 하도록 구성할 수 있다.

AWS CloudFormation 템플릿은 복잡한 리소스 세트를 구축하는 데 사용 가능한 추가 기능이 있으며 다양한 컨텍스트에서 템플릿을 재사용할 수 있다. 예를 들어, AWS CloudFormation 스택을 생성할 때 값이 지정되는 입력 파라미터를 추가할 수 있다. 다시 말해 템플릿을 생성할 때가 아니라 스택을 생성할 때 인스턴스 유형과 같은 값을 지정할 수 있으므로 다양한 상황에서 템플릿을 더 쉽게 재사용할 수 있다.

 

스택

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

 

AWS CloudFormation의 스택 생성 워크플로우

 

변경 세트

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

예를 들면, Amazon RDS 데이터베이스 인스턴스의 이름을 변경한 경우 AWS CloudFormation에서 새 데이터베이스를 생성하고 이전 데이터베이스를 삭제한다. 아직 백업하지 않은 경우 이전 데이터베이스의 데이터를 잃게 된다.

변경 세트를 생성한 경우 변경 후 데이터베이스가 교체된다는 사실을 알 수 있으므로 스택을 업데이트하기 이전에 적절히 계획할 수 있다.

 

스택 업데이트 워크플로우

LIST

'AWS > 기본 개념' 카테고리의 다른 글

Amazon DynamoDB Accelerator(DAX)  (0) 2020.02.20
Amazon ElastiCache  (0) 2020.02.20
AWS Step Functions  (0) 2020.02.18
Amazon Simple Queue Service  (0) 2020.02.18
Amazon Cognito  (1) 2020.02.18
Comments