초보자도 이해할 수 있는 AWS CloudFormation

2021.12.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 AWS CloudFormation에 대한 설명을 할려고 합니다.

AWS CloudFormation 이란?

Amazon Web Services 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스입니다.

CloudFormation문서는 YAML 과 JSON 을 사용하여 작성할 수 있지만 YAML을 사용하면 문서에 대한 설명을 추가할 수 있기 때문에 AWS에서는 YAML을 추천하고 있습니다. (JSON으로 변환할 때에는 주석이 제거 됩니다.)

CloudFormation 문서 참고 자료

YAML 문법

AWS CloudFormation 템플릿 형식

CloudFormation 디자이너

샘플 텟플릿

기능

확장성

AWS CloudFormation 레지스트리를 사용하면 AWS 파트너 네트워크(APN) 파트너 및 개발자 커뮤니티에서 게시한 서드 파티 리소스 및 모듈을 모델링하고 프로비저닝할 수 있습니다.
서드 파티 리소스는 AWS 파트너의 리소스와 함께 모니터링, 팀 생산성, 인시던트 관리 및 버전 제어 도구가 해당됩니다. 또한, AWS 빠른 시작에서 관리하는 항목과 함께 JFrog 및 Stackery의 사전 구축된 모듈 모음을 찾거나 검색하며 선택할 수 있습니다.
그리고 로컬 테스트 및 코드 생성 기능을 포함하여 개발 프로세스를 간소화하는 오픈 소스 도구인 AWS CloudFormation CLI를 사용하여 리소스 공급자를 직접 구축할 수 있습니다.

교차 계정 및 교차 리전 관리

CloudFormation StackSets를 사용하면 단일 CloudFormation 템플릿으로 여러 계정과 리전에 걸쳐 공통된 AWS 리소스 세트를 프로비저닝할 수 있습니다. StackSets에서는 위치에 관계없이 스택을 자동으로 안전하게 프로비저닝, 업데이트 또는 삭제합니다.

JSON/YAML로 작성

CloudFormation을 사용하면 텍스트 파일로 전체 클라우드 환경을 모델링할 수 있습니다. JSON 또는 YAML 같은 오픈 소스 선언 언어를 사용하여 생성 및 구성할 AWS 리소스를 설명할 수 있습니다. 시각적으로 설계하려면 AWS CloudFormation Designer를 통해 AWS CloudFormation 템플릿을 시작하면 됩니다.

친숙한 프로그래밍 언어로 작성

AWS Cloud Development Kit(AWS CDK)에서 TypeScript, Python, Java 및 .NET을 사용하여 클라우드 환경을 정의할 수 있습니다. AWS CDK는 오픈 소스 소프트웨어 개발 프레임워크로, 이를 통해 친숙한 프로그래밍 언어를 사용하여 전문가의 도움 없이 클라우드 애플리케이션 리소스를 모델링한 후 사용자 IDE에서 직접 CloudFormation을 사용하여 인프라를 프로비저닝할 수 있습니다.

SAM을 통해 서버리스 애플리케이션 구축

간편 구문을 통해 함수, API, 데이터베이스 및 이벤트 원본 매핑을 표현하는 오픈 소스 프레임워크인 AWS Serverless Application Model(SAM)을 활용하면 서버리스 애플리케이션을 더 빠른 속도로 구축할 수 있습니다. 리소스당 몇 줄만 있으면 원하는 애플리케이션을 정의하고 YAML을 사용하여 모델링할 수 있습니다.

안전 제어

CloudFormation은 안전하고 제어된 방식으로 인프라 프로비저닝 및 업데이트를 자동화합니다. 오류로 이어질 수 있는 수동 단계 또는 제어 항목이 없습니다. 롤백 트리거를 사용하여 스택 생성 및 업데이트 프로세스 동안 CloudFormation이 모니터링해야 하는 CloudWatch 경보를 지정할 수 있습니다. 트리거된 경보가 있는 경우 CloudFormation이 전체 스택 작업을 이전에 배포된 상태로 롤백합니다.
또한, ChangeSets를 사용하면 CloudFormation이 인프라 및 애플리케이션 리소스에서 변경하도록 제안하는 내용을 실행 전에 미리 볼 수 있으므로 배포가 계획한 대로 정확하게 진행됩니다.

환경의 변경 사항 미리 보기

AWS CloudFormation 변경 세트를 사용하면 스택에 대해 제안된 변경 사항이 실행 중인 리소스에 어떤 영향을 미칠 수 있는지 미리 확인하여 변경 사항으로 인해 중요한 리소스가 삭제되거나 교체될지 여부 등을 살펴볼 수 있습니다. 사용자가 변경 세트를 실행하기로 결정한 후에만 CloudFormation이 스택에 변경 사항을 적용합니다.

종속성 관리

AWS CloudFormation은 스택 관리 작업 중에 리소스 간 종속성을 자동으로 관리합니다. 리소스의 생성, 업데이트 또는 삭제 순서를 지정하기 위해 고민할 필요가 없습니다. CloudFormation에서 스택 작업을 수행할 때 각 리소스에 대해 실행할 작업의 올바른 순서를 결정하기 때문입니다.

요금

사용한 만큼만 비용을 지불하며 최소 요금이나 사전 약정은 없습니다. AWS::*, Alexa::* 및 Custom::*과 같은 네임스페이스의 리소스 공급자에서 AWS CloudFormation을 사용하는 경우 추가 요금은 부과되지 않습니다. 이 경우 수동으로 생성했을 때와 마찬가지로 AWS CloudFormation을 사용해 생성한 AWS 리소스(예: EC2 인스턴스, ELB 등)에 대해서만 요금을 지불하면 됩니다.

CloudFormation이외에 다른 IaC Tool

  • Terraform
  • Chef
  • Puppet
  • Red Hat Ansible Automation Platform
  • Saltstack

마무리

이번 블로그에서는 CloudFormation이 무엇인가를 알아봤습니다. CloudFormation을 사용하면 인프라 구축과 관리가 쉬워집니다. YAML파일을 사용하면 파일에 대한 설명까지 추가할 수 있기때문에 문서 하나로 어떤 인프라인지를 알 수 있다는 장점이 있습니다. 여러분들도 AWS 서비스가 익숙해 지셨다면CloudFormation을 공부하여 구축해보시는 것을 추천합니다.

참고 자료

AWS CloudFormation

AWS CloudFormation으로 인프라 자동화 시작하기

AWS CloudFormation이란 무엇인가요?