AWS CloudFormation은 AWS 리소스를 선언적으로 정의하고 자동으로 배포할 수 있는 도구입니다. 이 도구는 템플릿을 사용하여 AWS 인프라를 관리할 수 있게 해주며, 여러 리소스를 효율적으로 배포하고 구성할 수 있도록 도와줍니다.
CloudFormation을 사용하면 복잡한 인프라 구성을 손쉽게 자동화할 수 있습니다.
쉽게 생각한다면 식당에서 알바생이 기본 밑반찬을 서빙해야 합니다.
이때 쟁반에 반찬들을 미리 세팅해 둔다면, 손님이 들어왔을 때 쟁반을 그대로 가지고 나가면 됩니다. 이것이 CloudFormation입니다.
CloudFormation은 선언적 방식으로 인프라를 관리합니다. 즉, 사용자는 CloudFormation 템플릿에 원하는 리소스를 정의하고, 이 템플릿에 따라 AWS 리소스를 자동으로 배포할 수 있습니다. 예를 들어, 템플릿에 다음과 같이 기술할 수 있습니다
1. 보안 그룹(Security Group) 을 생성하고
2. EC2 인스턴스 두 개를 생성하여 해당 보안 그룹을 연결하며
3. 이 EC2 인스턴스에 연결할 Elastic IP 두 개를 생성합니다.
4. S3 버킷을 생성하고
5. 로드 밸런서(ELB) 를 사용하여 EC2 인스턴스 앞에 배치합니다.
CloudFormation은 템플릿에 정의된 리소스를 정확한 순서와 구성으로 생성합니다. 이를 통해 수동으로 작업할 때 발생할 수 있는 오류를 최소화하고, 효율적인 리소스 배포가 가능합니다.
CloudFormation은 리소스를 자동으로 생성하고 관리합니다. 예를 들어, EC2 인스턴스와 그에 대한 Elastic IP를 자동으로 할당해주므로 사용자는 수동으로 설정할 필요가 없습니다
CloudFormation 템플릿은 한 번 작성한 후 여러 환경(개발, 테스트, 프로덕션)에서 재사용이 가능합니다. 템플릿을 통해 환경을 일관되게 구축할 수 있습니다
복잡한 인프라를 정의할 때 각 리소스 간의 의존성을 자동으로 처리합니다. 예를 들어, 로드 밸런서를 EC2 인스턴스 앞에 배치하려면 로드 밸런서가 먼저 생성되고, 그 후에 EC2 인스턴스가 생성됩니다. 이러한 순서는 CloudFormation이 자동으로 처리합니다

왼쪽을 보면 템플릿과 코드가 나와 있습니다. 선언적인 방식으로 인프라를 구성할 내용을 포함하게 될것입니다.
그 다음 Infrastructure Composer를 이용하여 인프라를 시각화 해줍니다.