AWS CloudFormation
안녕하세요. 저는 AWS 교육 및 자격증 팀의 Andy Cummings입니다. AWS CloudFormation에 대한 소개를 시작하겠습니다.
저는 AWS에서 근무한지 거의 1년 반 정도 되었고 현재는 북미 지역 교육 담당자로 실시간 교육 이벤트를 제공하는 일을 담당하고 있습니다.
이 동영상에서는 AWS CloudFormation에 대해 소개합니다. 개요 및 서비스의 잠재적인 사용 사례를 살펴보고 데모를 통해 서비스가 실제로 작동하는지 확인하겠습니다.
AWS CloudFormation이란
AWS CloudFormation이란 무엇일까요? AWS CloudFormation은 애플리케이션을 구동하는 관련 리소스 그룹을 예상한 대로 반복해서 생성하는 작업을 단순화합니다. 이것이 키워드입니다. 예상한 대로 반복해서. AWS CloudFormation은 리소스 프로비저닝 자동화에 관한 것입니다.
그럼 어떻게 AWS와 상호 작용할 수 있을까요? API(애플리케이션 프로그래밍 인터페이스)를 호출하여 서비스가 수행할 작업을 지시합니다.
API를 호출하는 세 가지 방법이 있습니다.
- AWS Management Console,
- AWS 명령줄 인터페이스(CLI),
- 언어별 소프트웨어 개발 키트나 직접 API 호출
을 사용하는 것입니다. 세 가지 방법 중 하나를 사용하여 워크로드에 대한 가상 환경을 구성할 수 있습니다.
createVPC와 같은 API 호출을 사용하여 VPC를 구성하거나 인스턴스를 시작하여 새 EC2 인스턴스를 생성합니다.
이 예에서는 VPC 내의 단일 버킷 서브넷에 있는 EC2 인스턴스에서 실행되는 애플리케이션이 있습니다. 이 애플리케이션은 DynamoDB 테이블을 호출하고 S3 버킷을 사용합니다.
그러면 이 프로세스를 어떻게 자동화하고 이 환경을 복제할 수 있을까요? 더 구체적으로, AWS 리소스의 프로비저닝을 어떻게 자동화할 수 있을까요? 자동화에 사용할 수 있는 여러 도구가 있지만 AWS CloudFormation은 AWS 서비스에 도달할 수 있으므로 반드시 이해할 필요가 있습니다.
AWS CloudFormation의 역할
그럼 AWS CloudFormation은 무엇을 하나요? 먼저 이것은 완전 관리형 서비스이므로, 지원할 인프라가 없습니다.
AWS CloudFormation은 스택이라고 하는 리소스 및 세트를 생성, 업데이트, 삭제할 수 있습니다.
서비스의 개요와 몇 가지 잠재적인 사용 사례를 알아보겠습니다. AWS CloudFormation의 전체적인 프로세스는 정말 간단합니다. AWS CloudFormation은 템플릿 파일을 읽습니다. 템플릿 파일이 무엇이죠? 실제로 진행되고 프로비저닝할 리소스에 대한 지침입니다. AWS CloudFormation은 템플릿 파일에 나열된 리소스를 구성하며 이 프로세스의 출력은 스택이라고 알려진 환경입니다. 단일 리소스 스택 또는 수백 개의 리소스가 있는 스택을 생성하는 템플릿을 만들 수 있습니다.
CloudFormation을 어떻게 제어할까요? 세 가지 주요 인터페이스로 다시 돌아가죠. AWS Management Console, AWS CLI, SDK/API 호출입니다. 즉, AWS Management Console을 통해 서비스와 상호 작용하거나 스크립트를 작성하여 CloudFormation 작업을 자동화할 수 있습니다.
스택이란
스택에 대해 잠시 살펴보도록 하겠습니다. 스택은 템플릿에 의해 생성되는 리소스입니다. 하지만 배포 단위이기도 합니다. 스택을 생성하고, 수정된 템플릿을 재실행하여 업데이트를 만들고, 스택을 삭제할 수도 있습니다. 스택을 삭제하면 기본적으로 스택의 모든 리소스가 삭제됩니다. 배포 단위라는 점을 기억하세요. 대부분의 조직은 네트워킹, 보안, 애플리케이션을 위한 별도의 템플릿을 생성하여 스택을 모듈화합니다.
템플릿이란
이제 템플릿을 자세히 살펴보겠습니다. 템플릿은 프로비저닝할 리소스를 설명합니다. 이것은 JSON 또는 YAML 형식으로 작성된 텍스트 파일입니다. 또 다른 이점으로, 템플릿을 사용하여 환경을 프로비저닝한 경우 템플릿은 환경에 맞는 문서 형식이 됩니다.
템플릿 파일에는 무엇이 있죠? 콘솔을 통해 환경을 수동으로 구축한 경우 지정한 정보와 동일합니다. 전혀 문제가 없죠. 템플릿은 특정 형식 지정 구성을 사용하지만 리소스 및 속성 정보는 동일합니다.
AWS CloudFormation의 한 가지 이점은 정확한 리소스 생성 순서로 템플릿에 리소스를 나열할 필요가 없다는 것입니다. DependsOn 속성을 사용하여 AWS CloudFormation이 리소스를 생성하는 순서를 제어하고 이벤트 시퀀스를 구축할 수 있습니다. 웹 서버를 생성하기 전에 데이터베이스 서버를 생성해야 하는 경우와 같습니다.
단일 환경을 생성하는 데 템플릿만 적합할까요? 템플릿에 파라미터와 조건을 추가하면 동일한 템플릿을 사용하여 다른 환경을 생성할 수 있습니다.
파라미터란
파라미터는 템플릿의 변수입니다. AWS CloudFormation을 통해 템플릿을 실행하면 파라미터를 입력해야 합니다. 즉, 파라미터 1을 선택하면 개발 스택을 생성할 수 있고 파라미터 2는 프로덕션 스택을 생성합니다. 이를 통해 템플릿의 유연성과 기능이 향상됩니다.
생성되는 이 모든 템플릿은 어떻게 될까요? 각 템플릿은 코드형 인프라의 예이며, 이는 소프트웨어 코드를 통해 인프라를 제어한다는 의미입니다. 템플릿과 마찬가지로 소프트웨어는 유연합니다. 이건 변경할 수 있습니다. 동일한 템플릿의 다른 버전을 유지할 수도 있습니다. 정확히 개발자가 애플리케이션의 소스 코드로 수행하는 작업입니다. 이것이 바로 템플릿을 취급할 때 원하는 방식이죠. AWS CloudFormation에 의존하는 조직은 애플리케이션에 대한 코드 리포지토리만큼 많은 템플릿 라이브러리를 구축합니다.
요구 사항
AWS CloudFormation 실행에는 두 가지 중요한 요구 사항이 있습니다.
첫 번째는 앞서 논의했던 템플릿입니다. 템플릿에 오류가 있는 경우 기본적으로 AWS CloudFormation은 처리를 중지하고 템플릿에서 이미 생성된 모든 객체를 롤백합니다.
AWS CloudFormation 실행에 대한 두 번째 요구 사항은 처리할 템플릿을 호출하는 사람이 템플릿에서 참조되는 모든 서비스에 대한 권한을 가져야 한다는 것입니다. AWS CloudFormation을 통해 템플릿을 처리할 수 있는 사람을 제어할 수도 있습니다.
데모
좋습니다. 그러 AWS CloudFormation에 대한 간략한 데모를 통해 직접 확인해 보겠습니다. AWS CloudFormation 서비스의 일부인 AWS CloudFormation Designer를 사용하겠습니다. AWS CloudFormation면 Designer는 JSON 또는 YAML 형식으로 작업하는 데 많은 경험이 없는 경우 시작하기에 유용한 도구입니다. 이 도구는 드래그 앤 드롭 인터페이스를 사용하여 템플릿을 구축합니다. VPC 리소스를 생성할 새 템플릿을 만들어 보겠습니다. 리소스 속성을 추가한 다음 템플릿을 사용하여 스택을 만듭니다. 새로 생성한 VPC를 보는 것으로 완료합니다.
이제 먼저 할 일은 AWS Management Console을 통해 AWS CloudFormation을 여는 것입니다. 이제 서비스에서 CloudFormation을 입력하고 CloudFormation을 찾습니다. 이제 내부에 있게 되면 계속 진행해서 새 스택을 생성합니다. 이제 여기에서 스택 새로 만들기 버튼을 선택합니다. 이제 기존 템플릿을 로드하거나 처음부터 디자인할 수 있습니다. 계속 진행해서 템플릿 디자인을 선택합니다. 그러면 CloudFormation Designer로 이동하게 됩니다. 이제 CloudFormation Designer 인터페이스가 설정되어 화면 왼쪽에 리소스 유형 목록이 표시됩니다. 이 목록을 여기 템플릿 영역 위, 상단의 그리드로 드래그합니다. 그러면 템플릿의 파라미터가 구축되기 시작합니다. 이제 다음으로 EC2로 진행하겠습니다. VPC는 EC2의 일부입니다. 네트워킹에 속해야 한다고 생각할 수 있지만 EC2 리소스가 VPC에 있어야 하기 때문에 서로 연결되어 있습니다. VPC를 여기 그리드 영역으로 드래그합니다. 이제 아래 화면에서 어떤 일이 발생했는지 알 수 있습니다. 여기에 템플릿을 구축하고 있습니다. 이 그리드 내부의 VPC를 논리적으로 표현한 것입니다. 아래에서 주목할 수 있는 것은 템플릿입니다. 아래에서 볼 수 있듯이 실제로 템플릿 내부에 리소스 항목이 생성되었습니다. 특히 아래의 VPC가 된다는 점을 보여 주고 있습니다. 그리고 몇 가지 속성을 채워야 합니다. 이제 VPC를 생성하려고 할 때 필요한 유일한 속성은 VPC의 이름입니다. 이미 여기에 갖고 있죠. 여기에 네트워크 주소인 CIDR 블록을 추가할 것입니다. 그러면 계속 진행해서 추가해 보겠습니다. CTRL+SHIFT를 누르겠습니다. 이 특정 객체에 대해 실제로 선택할 속성 목록을 가져옵니다. 그런 다음 CIDR 블록을 선택하겠습니다. 콜론을 추가하고 괄호 안에 필요한 데이터를 추가합니다. 10.0.0.0/16입니다. 그러면 설정과 준비가 완료된 겁니다. 지금 하나의 리소스를 생성할 수 있는 템플릿에 대한 기초를 가지고 있습니다. 이제 이것을 가지고 여기서 할 일은 상단 왼쪽으로 이동하는 겁니다. 이제 스택을 생성하려고 하는데요. 이 작업을 수행하면 즉시 생성됩니다. 이전 화면으로 되돌아갑니다. 이미 템플릿을 디자인했죠. 방금 생성한 템플릿이 자동으로 S3 버킷에 추가되었습니다. 그러면 모두 전송되고 준비가 완료된 겁니다. 이제 계속 진행해서 다음을 선택합니다. 스택에 이름을 지정합니다. VPC2라고 하죠. 다음을 선택합니다. 이제 내부에 태그를 추가할 수 있습니다. 그런 다음 필요에 따라 적절한 권한이 없는 경우 역할을 지정할 수도 있습니다. 이제 이에 따라 클릭하면 최종 결과를 볼 수 있습니다. 검토할 요약이 있으며, 설명문 생성으로 완료할 수 있습니다. 지금 여기에 많은 일이 일어나고 있는 것처럼 보이진 않는데요. 하지만 이제 우리가 할 일은 스택으로 돌아가는 것입니다. 좋아요. 보시다시피 스택의 생성이 완료되었습니다. VPC는 처음부터 끝까지 실행되었으며 여전히 AWS CloudFormation에 있는 걸 볼 수 있습니다. 이제 서비스를 빨리 건너뛰고 VPC를 살펴보겠습니다. 생성된 VPC를 볼 수 있다는 걸 분명히 하고 싶습니다. 그러면 이제 VPC를 살펴보겠습니다. 목록의 두 번째 VPC인데요. 첫 번째는 바로 아래에 있는 리전의 기본값입니다. 두 번째는 보시다시피 10.0.0.0/16이고, 새로운 VPC가 있죠.
요약
이제 학습한 내용을 요약해 보겠습니다.
AWS CloudFormation은 완전 관리형 서비스로, AWS 리소스의 프로비저닝을 자동화하는 엔진 역할을 합니다. AWS CloudFormation은 배포할 리소스를 지정하는 템플릿 파일을 읽습니다. 프로비저닝된 리소스를 스택이라고 합니다. AWS CloudFormation을 통해 스택을 생성, 업데이트, 삭제할 수 있습니다.
여러분이 배운 모든 AWS 서비스는 솔루션을 구축하기 위한 하나의 도구임을 기억하세요. 활용할 수 있는 도구가 많을수록 여러분은 더 강력해집니다.
시청해 주셔서 감사합니다.