AWS CloudFormation
CloudFormation은 AWS 리소스 구성을 템플릿으로 선언하고 그 상태대로 실제 인프라를 만들어 주는 IaC 엔진입니다. 템플릿이 원하는 구조를 정의하면 스택이 생성·변경·롤백을 일관되게 수행합니다.
▶아키텍처 다이어그램
🔄 프로세스 다이어그램점선 애니메이션은 데이터 또는 요청의 흐름 방향을 나타냅니다
운영 환경은 콘솔에서 고치고 개발 환경은 기억으로 다시 만들면, 시간이 지날수록 어느 설정이 정답인지 아무도 확신하지 못합니다. 같은 인프라를 다시 세울 때마다 순서와 값이 달라지면 장애 복구와 확장이 모두 느려집니다.
과거에는 위키 문서나 셸 스크립트로 인프라 설치 순서를 공유했지만, 이 방식은 드리프트와 재현 실패를 낳았습니다. 수동 수정이 쌓이면 콘솔 상태와 문서가 달라져 장애 복구 때 어느 구성이 맞는지 확인하느라 수 시간을 쓰거나, 환경 재현에 실패해 릴리스 자체가 막히는 상황이 반복됐습니다. 이런 압박 속에서 인프라 자체를 코드로 관리하는 CloudFormation 같은 접근이 표준이 되었습니다.
CloudFormation은 템플릿에 선언된 desired state와 현재 스택의 실제 상태를 비교해 차이를 계산합니다. 변경 사항을 바로 실행하지 않고 먼저 Change Set으로 만들어 어떤 리소스가 추가·수정·삭제될지 미리 확인할 수 있습니다. 승인하면 CloudFormation이 의존성 순서를 분석해 리소스를 순서대로 적용합니다. 중간에 실패가 생기면 이미 적용한 변경을 자동으로 되돌립니다. 이 흐름 덕분에 템플릿을 수정하면 '어떤 리소스가 어떤 순서로 바뀌는지' 배포 전에 예측할 수 있습니다.
CloudFormation과 CodePipeline은 둘 다 배포 체인에 등장하지만 역할이 다릅니다. CloudFormation은 리소스를 선언적으로 생성·변경하는 IaC 엔진이고, CodePipeline은 소스부터 배포 완료까지 전달 단계를 조율합니다. 인프라 구성을 코드로 고정하는 문제가 핵심이면 CloudFormation을 보고, 그 변경을 어떤 순서로 빌드·승인·배포할지가 핵심이면 CodePipeline을 보면 됩니다.
반복 배포되는 환경, 개발·스테이징·운영 환경 복제, 네트워크와 컴퓨팅 리소스 표준화에 적합합니다. 소스부터 배포까지 릴리스 흐름 전체를 자동화하는 것은 IaC만으로 해결되지 않습니다.