AWS CloudFormation은 AWS 리소스를 모델링하고 설정하여 인프라 관리에 드는 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많이 집중할 수 있게 해주는 서비스이다.
설계도 하나도 AWS의 모든 자원을 자동으로 만들고 관리하는 서비스라고 이해하면 편하다. CDK는 결국 이 CloudFormation이라는 서비스를 더 간편하게 사용하기 위한 것이다.
CloudFormation을 이해하려면 두 가지 용어를 기억해야 한다.
개발자가 텍스트 파일을 던지면 CloudFormation은 다음과 같은 과정을 거친다.
CREATE_COMPLETE)| 구분 | CloudFormation | AWS CDK |
|---|---|---|
| 형태 | 선언적 (JSON/YAML) | 명령적 (Java, Python 등 프로그래밍 언어) |
| 추상화 | 낮음 (모든 세부 설정을 직접 적어야 함) | 높음 (Construct를 통해 수백 줄의 코드를 한 줄로 요약) |
| 가독성 | 파일이 길어질수록 읽기 힘듦 | 객체 지향적으로 코드를 깔끔하게 관리 가능 |
| 비유 | 조립식 가구의 상세 설명서 | 가구를 주문하는 키오스크 |
배포 전 cdk diff를 통해 확인했던 내용은 실제로 CloudFormation의 변경 세트 기능이다.
변경 세트란 템플릿을 수정했을 때 실제 운영 중인 인프라에 어떤 변화가 생길지(예: 리소스 삭제, 수정, 추가) 배포 전에 요약해서 보여주는 보고서이다.
AWS CloudFormation은 AWS의 가장 근본적인 인프라 관리 엔진이다. CDK를 쓴다는 것은 이 엔진을 직접 다루는 대신, 코드라는 도구로 엔진을 제어하는 것과 같다.
하지만 문제가 생겼을 때(롤백 등)는 결국 CloudFormation 콘솔에 들어가서 로그를 확인해야 하므로 이 엔진의 원리를 아는 것이 매우 중요하다.