왜 CloudFormation 인가
AWS 클라우드(Cloud) 환경에서 리소스를 정의, 배포, 관리하는 서비스의 기능을 반영하여, 사용자가 클라우드 리소스를 형성(Formation)하고 관리하도록 하는 서비스이기 때문이다. 쉽게 말해, AWS 리소스를 자동으로 생성, 삭제, 변경하며, 이 인프라를 코드로 관리할 수 있는 IaC(Infrastructure as Code) 서비스 이다.
특징
- 리소스를 한 번에 관리할 수 있다. 이때 리소스란, AWS의 모든 서비스들을 말한다.
- 여러 환경(개발, 테스트, 운영 등)에서 재사용할 수 있다.
- 자동화가 가능하다.
- 수명 주기 관리(추가, 삭제, 변경)가 가능하다.
CloudFormation의 핵심 개념
- CloudFormation 템플릿
- JSON 또는 YAML 형식으로 작성된 파일로, AWS 리소스의 구성, 속성, 그리고 리소스 간 종속성을 정의하는 것.
- 예시: EC2 인스턴스, S3 버킷, 보안 그룹, RDS 데이터베이스 간의 의존성을 설정.
- 이 템플릿은 반복적으로 재사용 가능하며, 동일한 인프라를 여러 환경(개발, 테스트, 운영)에 쉽게 배포할 수 있다.
Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: InstanceType: "t2.micro"
- CloudFormation 템플릿 파일의 예시.
- 스택(Stack)
- CloudFormation 템플릿이 실행되면서 생성된 리소스들의 논리적 그룹
- 리소스 묶음으로, 템플릿에 정의된 모든 리소스를 하나의 단위로 관리하고, 생성/업데이트/삭제 작업을 일괄적으로 수행할 수 있다.
- 예시: EC2 인스턴스와 그에 연결된 보안 그룹, S3 버킷 등을 하나의 스택으로 관리.
- 스택 세트 (Stack Set): 여러 AWS 계정 또는 리전에 동일한 스택을 배포하는 것.
CloudFormation 템플릿과 스택(Stack) 간의 관계에 대하여.
1. 템플릿은 스택의 설계도
- 템플릿에 정의된 리소스(예: EC2, S3, RDS 등)와 이들 간의 관계, 속성 등을 기반으로 스택이 생성된다.
- 템플릿이 없다면 스택을 생성할 수 없다.
2. 스택은 템플릿의 실행 결과
- 스택(Stack)은 템플릿을 실행하여 생성된 AWS 리소스의 논리적 그룹이기에, 템플릿의 내용을 기반으로 실제 리소스가 프로비저닝되며, 이 리소스들은 하나의 스택으로 관리된다.
- 예를 들어, 템플릿에 EC2와 S3가 정의되어 있으면, 실행 결과로 EC2 인스턴스와 S3 버킷이 포함된 스택이 생성된다.
3. 템플릿과 스택 간의 상호작용
- 템플릿을 수정하면 스택의 리소스도 업데이트된다.
- 템플릿 변경(예: EC2 인스턴스 유형 변경) → 스택 업데이트 → 변경된 리소스 반영.
- 템플릿이 삭제되지 않더라도, 해당 템플릿으로 생성된 스택은 독립적으로 유지된다.
4. 스택은 템플릿을 사용한 실행 환경
- 동일한 템플릿으로 여러 스택을 생성할 수 있다.
- 예: 같은 템플릿으로 개발 환경과 운영 환경에 각각 다른 스택을 생성.
- 템플릿은 코드로 관리되므로, 스택의 구성을 버전 관리하거나 다른 환경으로 쉽게 배포할 수 있다.
관계의 핵심 (결론)
- CloudFormation 템플릿 = 스택 생성의 설계도.
- 스택 = 템플릿 실행의 결과물(리소스 그룹).
자 이제 CloudFormation 을 직접 들어가보자.
들어가보면 스택부터 생성하게 시킨다.
AWS 리소스들을 생성하려면 먼저 어떤 방식으로 리소스들이 종속 관계를 맺고 있는지 정의하여, 해당 설정 구조대로 리소스들이 생성되도록 해야한다. 현재 갖고 있는 템플릿이 없으므로 샘플 템플릿을 사용해보겠다.
LAMP 스택이란?
- L: Linux (운영 체제)
- A: Apache (웹 서버)
- M: MySQL (데이터베이스) - MariaDB 또는 PostgreSQL로 대체되기도 함.
- P: PHP (프로그래밍 언어) - Python, Perl 등으로 대체되기도 함.
EC2 에 대한 기본 설정이 포함되어 있는 것을 알 수 있다.
'Cloud > AWS' 카테고리의 다른 글
S3 (Simple Storage Service) (0) | 2024.05.05 |
---|---|
CloudFront와 엣지 로케이션(Edge Location) (0) | 2024.05.05 |
리전(Region) vs 가용영역(AZ; Availability Zone) (0) | 2024.05.05 |