AWS CloudFormation을 활용하면 Infrastructure as Code를 통해 손쉬운 방법으로 관련된 AWS 및 서드 파티 리소스 모음을 모델링하고, 일관된 방식으로 간단히 프로비저닝하고, 수명 주기 전반에 걸쳐 관리할 수 있습니다. CloudFormation 템플릿에는 원하는 리소스와 종속성이 설명되어 있으므로 이를 모두 하나의 스택으로 구성하고 시작할 수 있습니다. 리소스를 개별적으로 관리하는 대신 템플릿을 통해 전체 스택을 단일 단위로 처리하여 필요한 만큼 자주 생성 및 업데이트하고 삭제할 수 있습니다. 스택은 여러 AWS 계정 및 AWS 리전에 걸쳐 관리 및 프로비저닝할 수 있습니다.
특징
모범 사례 자동화
CloudFormation을 사용하면 git 리포지토리에서 시작하여 CI/CD 파이프라인을 통해 배포하는 등 널리 채택된 프로세스를 사용하여 DevOps 및 GitOps 모범 사례를 적용할 수 있습니다. 또한 GitHub Actions 및 AWS CodePipeline과 같은 파이프라인 통합을 통해 변경 사항 감사를 간소화하고 자동화된 배포를 트리거할 수 있습니다.
인프라를 전 세계로 확장
조직 전체에서 사용하도록 CloudFormation 템플릿을 공유하여 리소스 확장을 관리함으로써 모든 AWS 계정 및 리전 전반에 걸쳐 안전, 규정 준수 및 구성 표준을 준수할 수 있습니다. 템플릿과 파라미터를 통해 손쉽게 확장하면서 모범 사례와 회사 정책을 공유할 수 있습니다. 또한 CloudFormation StackSets를 사용하면 단일 작업으로 여러 AWS 계정과 리전에서 스택을 생성, 업데이트 또는 삭제할 수 있습니다.
다른 AWS 서비스와의 통합
CloudFormation을 다른 AWS 서비스와 통합할 수 있으므로 조직 전반에서 리소스 관리를 추가로 자동화할 수 있습니다. 예를 들어 액세스 제어를 위해 AWS Identity and Access Management(IAM)와 통합하고 턴키 애플리케이션 배포 및 거버넌스 제어를 위해 AWS Service Catalog와 통합할 수 있습니다. CodePipeline 및 기타 빌더 도구와 통합하면 최신 DevOps 모범 사례를 구현하고 자동화, 테스트 및 제어 기능을 개선할 수 있습니다.
서드 파티 및 프라이빗 리소스 관리
모니터링, 팀 생산성, 인시던트 관리, CI/CD 및 버전 관리 애플리케이션 같은 서드 파티 퍼블릭 또는 프라이빗 애플리케이션 리소스를 AWS 리소스와 함께 모델링 및 프로비저닝하고 관리할 수 있습니다. 오픈 소스 CloudFormation CLI를 사용하여 자체 CloudFormation 리소스 유형(오픈 소스로 게시된 네이티브 AWS 유형)를 구축할 수 있습니다.
커뮤니티를 통해 CloudFormation에 기여
AWS CloudFormation GitHub 조직은 CloudFormation의 기능에 구축되는 오픈 소스 프로젝트를 제공합니다. CloudFormation 레지스트리 및 CloudFormation CLI를 사용하면 리소스 공급자를 정의하고 생성하여 클라우드 인프라 생성을 안전하고 체계적으로 자동화할 수 있습니다. CloudFormation GitHub 프로젝트를 사용하면 CloudFormation 템플릿이 정책을 준수하는지 검사하거나(cfn-guard 사용) 모범 사례를 사용하는지 검증할 수 있습니다(cfn-lint 사용).
서드 파티 리소스 유형으로 CloudFormation 확장
CloudFormation 퍼블릭 레지스트리에서 AWS 파트너 네트워크(APN) 파트너 및 개발자 커뮤니티가 게시한 서드 파티 리소스를 검색, 프로비저닝 및 관리합니다. 퍼블릭 레지스트리는 클라우드 인프라 구축을 단순화하는 데 도움이 되는 검색 가능한 관리형 확장 기능 카탈로그를 제공합니다.
작동방식
AWS CloudFormation은 Amazon Web Services 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스입니다. 필요한 모든 AWS 리소스(예: 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 템플릿에 정확히 설명됩니다. 템플릿은 텍스트 파일이므로 템플릿에서 차이점을 추적하여 인프라 변경 사항을 추적할 수 있습니다. 이는 개발자가 소스 코드에 대한 개정 사항을 제어하는 방식과 비슷합니다. 예를 들어 버전 제어 시스템을 템플릿과 함께 사용하여 변경된 내용, 변경한 사람, 변경 시간 등을 정확히 알 수 있습니다. 언제든지 인프라에 대한 변경 사항을 되돌려야 하는 경우 이전 버전의 템플릿을 사용할 수 있습니다.
DOCS
https://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/Welcome.html
'CLOUD > AWS' 카테고리의 다른 글
AWS EKS 애플리케이션 배포(노드생성 및 배포) (0) | 2021.08.11 |
---|---|
AWS EKS 와 kubectl 연결 문제 (0) | 2021.08.11 |
AWS EKS 애플리케이션 배포 (구축) (0) | 2021.08.09 |
AWS CLI 설치 및 접속 설정 방법(MAC) (0) | 2021.08.09 |
ElastiCache for Redis용어 (0) | 2021.08.06 |
댓글