AWS

AWS CloudFormation: 인프라를 코드로 효율적으로 관리하기

heesoohi 2025. 3. 23. 00:09

# CloudFormation

 

 

AWS에서 워크로드를 배포하는 다양한 방법이 있다. 그 중 대규모로 인프라를 배포하고 관리하는 서비스가 매우 유용한데, CloudFormation이 대표적인 서비스이다. 

 

 

CloudFormation은 aws 인프라의 모든 리소스에 대해 개략적인 윤곽을 잡아줄 수 있는 선언적인 방식이다. aws의 대부분의 리소스를 지원한다. 

 

 

구체적인 예시를 들어 CloudFormation을 이해해보자면, 

 

사용자는

  • 보안 그룹을 원한다
  • 2개의 EC2 인스턴스가 해당 보안 그룹을 사용한다
  • S3 버킷도 원한다
  • 위의 머신들 앞에 로드밸런서를 두고 싶다

이런 요구사항들이 있을 때, CloudFormation이 자동으로 순서에 맞게, 사용자가 지정한 구성에 맞춰 리소스들을 만들어준다. 

 

 

 

# CloudFormation의 이점

 

  • Infrastructure as Code

    - CloudFormation에서는 모든 인프라를 코드로 관리한다. 
        -> 따라서 사용자가 리소스를 수동으로 만들 필요가 없다

    - 인프라에 변화가 있을 때 마다, 코드 리뷰를 통해 검토된다.
        -> 클라우드에서 작동하기 좋은 방식!


  • 비용 절감 효과

    - 스택 내 각 리소스는 태그로 구분된다
       -> 리소스의 비용을 쉽게 확인 가능

    - CloudFormation의 템플릿을 사용하여, 리소스 비용 절감할 수 있다
       ex) 절약 전략으로, 오후 5시에 모든 템플릿에 연결된 모든 리소스들을 자동으로 삭제하고, 오전 8시에 다시 만들 수 있다.
             오후 5시-오전 8시 사이에 리소스가 없어 비용을 절약할 수 있다.


  • 생산성

    - CloudFormation을 이용하여 리소스를 만들고 지우기 쉽다
        -> 이 부분은 클라우드의 원칙과도 통함

    - 템플릿에 관한 도식을 자동으로 생성해준다

    - 선언적 프로그래밍
        ex) EC2 인스턴스에 먼저 DynamoDB 테이블을 만들어야 하는지, 동시에 만들어야 하는지 등을 사용자가 파악할 필요가 없다. 템플릿이 알아서 처리함

    - 기존 템플릿을 이용하여 레버리징할 수 있다

 

 

# CloudFormation Stack Designer

 

CloudFormation에서 무엇이 만들어졌는지 도식으로 볼 수 있다. 

 

 

 

 

어떤 구성 요소가 있는지(예를 들어 보안 그룹, 로드 밸런서, 실행 구성, RDS용 데이터베이스 인스턴스, 오토스케일링그룹 등) 확인할 수 있으며, 구성 요소간의 관계도 확인할 수 있다. 

 

 

 

이렇게 CloudFormation에 대해 정리해보았다. 정리하자면, CloudFormation은 코드로 인프라를 관리하며, 아키텍처를 다른 환경, 리전, 다른 AWS 계정에서 반복해야 할 때 유용한 서비스이다.