본문 바로가기
AWS/AWS CDK

AWS CDK란 무엇일까?

by HP_Factory 2021. 1. 7.

AWS CDK(Cloud Development Kit)는 프로그래밍 언어를 사용하여 클라우드 애플리케이션 리소스를 모델링 및 프로비저닝 해주는 도구입니다. AWS CDK를 사용하면 인프라를 코드로 정의하고 AWS CloudFormation을 통해 프로비저닝 할 수 수 있습니다. 즉, 익숙한 프로그래밍 언어를 사용하여 클라우드 애플리케이션 리소스를 정의할 수 있는 오픈 소스 소프트웨어 개발 프레임워크 입니다.

 

 

AWS CDK 구성

 

AWS CDK의 구성

CDK는 앱, 스택, 구문(Construct)으로 구성되어있습니다.

 

 

AWS CDK APP

앱은 기본 구문이며, CDK CLI를 통해 AWS CloudFormation 템플릿을 렌더링하고 배포합니다. 그리고 배포 가능한 단위인 하나 이상의 스택으로 구성되며 리전 및 계정에 대한 정보를 포함합니다.

 

 

 

AWS CDK Stack

스택에는 AWS 람다, AWS ECS와 같이 AWS 리소스를 표현하는 구문이 포함됩니다.

 

 

 

AWS CDK Construct(구문)

구문은 위에 그림과 같이 계층 구조를 가지고 있습니다. AWS에서 구문은 3가지 레벨로 표현합니다.

 

  • 레벨 1 : AWS CloudFormation 리소스
    기존 리소스의 1대1 매핑이며 자동으로 생성됩니다. 선언적 접근 방식의 YAML 또는 JSON에서 사용하는 리소스와 동일합니다.

  • 레벨 2 : AWS 구문 라이브러리
    이러한 구문은 AWS 서비스 레벨에 위치하며, AWS가 직접 작성한 구문입니다. 적절한 기본값이 설정되어 있으므로 세부 정보에 대한 큰 고민 없이 손쉽게 AWS 리소스를 생성할 수 있습니다.

    예를 들어 모든 가용 영역에 프라이빗 및 퍼블릭 서브넷을 갖춘 완전한 VPC를 생성하는 방법은 아래와 같습니다.
    import ec2 = require('@aws-cdk/aws-ec2');
    const vpc = new ec2.VpcNetwork(this, 'VPC');

  • 레벨 3 : Your awesome stuff
    앞서 말한 것과 같이 Construct(구문)는 계층 구조입니다. 구문은 다른 구문을 기반으로 하는 상위 레벨의 추상화일 수도 있습니다. 예를 들어 레벨3에서는 자동 노드 드레이닝, Auto Scaling 및 적합한 모든 경보를 포함하는 자체 AWS ECS 클러스터 구문을 작성할 수 있습니다. 또는 AWS RD5 데이터베이스가 모니터링해야 하는 모든 필수 경보에 대한 구문을 작성해도 됩니다.

    레벨 3은 레벨 2의 조합과 추가적인 옵션으로 이루어집니다. AWS ECS를 예로 들면 로드밸런서, Task, Task Definition, Service와 같이 ECS를 구성하는데 있어서 필요한 레벨 2의 구문도 있지만, 위에서 설명한 것과 같이 입맛대로 필요한 옵션을 곁들일 수도 있습니다. 이런 조합을 구성해서 나만의 멋진 Stuff로 만들 수 있다는 것입니다. 그리고 확장성을 고려해 구문을 작성한다면 어느 곳에든 공유하고 사용할 수 있게 됩니다.

 

 

AWS CDK 리소스 생성

App, Stack, Construct로 구성된 CDK Application은 AWS CloudFormation을 통해 리소스가 생성됩니다.

CDK Application의 구성

 

정리

AWS CDK는 기존의 IaC(Infrastructure as Code)에서 제공하는 YAML 또는 JSON 형태의 선언전 접근 방식과는 달리 개발자 친화적인 프로그래밍 언어로 되어있는 장점이 있습니다. 그리고 잘 만든 구문은 재사용성이 높기 때문에 생산성이 높아진다는 장점이 있습니다. AWS CloudFormation과는 달리 TS, JS, JAVA 등 익숙한 프로그래밍 언어를 사용하여 클라우드 애플리케이션 리소스를 정의할 수 있는 오픈 소스 소프트웨어 개발 프레임워크인 CDK를 공부한번 해보시길 추천드립니다.

댓글