この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
소개
안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 AWS CloudFormation에 대한 설명을 할려고 합니다.
AWS CloudFormation 이란?
Amazon Web Services 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스입니다.
CloudFormation문서는 YAML 과 JSON 을 사용하여 작성할 수 있지만 YAML을 사용하면 문서에 대한 설명을 추가할 수 있기 때문에 AWS에서는 YAML을 추천하고 있습니다. (JSON으로 변환할 때에는 주석이 제거 됩니다.)
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을 공부하여 구축해보시는 것을 추천합니다.