Cloud Development Kit - 프로그래밍 언어로 클라우드 설계
# CDK - Cloud Development Kit
CDK는 익숙한 프로그래밍 언어로 클라우드 인프라를 정의하는 방식이다. 예를 들어, YAML 형식이라 CloudFormatin을 직접 사용하지 않고 JavaScript, TypeScript, Python, Java 등등의 언어로 클라우드 인프라를 작성하고자 할 때 CDK를 사용할 수 있다.
프로그래밍 언어로 인프라를 작성하면 CDK를 통해 코드가 JSON 또는 YAML 형식으로 CloudFormation 템플릿에 컴파일된다. 덕분에 인프라와 애플리케이션의 런타임 코드를 함께 배포할 수 있게 된다. 동일한 언어를 공유하기 때문이다.
-> 람다 함수나 ECS, EKS의 도커 컨테이너에 유용하다!
# CDK 예시
아래에서는 Python을 프로그래밍 언어로 선택해 인프라를 정의하는 예시를 살펴보겠다.

CDK 애플리케이션을 파이썬으로 작성하고 다른 AWS 서비스를 위한 DynamoDB 테이블의 람다 함수를 정의한다. 그러면 CDK CLI를 사용하는 CDK 애플리케이션은 CloudFormation 템플릿으로 변환되고, 생성된 템플릿은 인프라 배포에 적용된다. 이 과정이 바로 '프로그래밍 언어를 사용해서 클라우드 인프라를 사용'하는 것이다. type-safe 하게 되고, 익숙한 구조를 가지며, 빠르게 수행할 수 있고 코드를 재사용하도록 For loop 같은 것을 사용할 수 있다는 것이 특징이다.
# CDK 코드 예시
JavaScript나 TypeScript를 사용한 예시이다.

정의된 VPC와 ECS 클러스터, Fargate 서비스용 ALB가 있다. 이 3가지가 CDK CLI로 사용 가능한 CloudFormation 템플릿에 컴파일 되어 업로드와 배포가 가능하다.