3. AWS Cloud Development Kit (AWS CDK) 란?
프로그래밍 언어를 사용하여 클라우드 애플리케이션 리소스를
모델링 및 프로비저닝 해주는 도구 입니다.
AWS CDK를 사용하면 인프라를 코드로 정의하고 AWS CloudFormation을
통해 프로비저닝 할 수 있습니다.
기존의 yaml, json 형태의 선언적 접근 방식보다 더 개발자에게 친화적인
언어를 사용해서 작성할 수 있습니다.
AWS CloudFormation을 추상화 시켜서 한 단계 상위 레벨로 만들었고,
조금 더 개발자 친화적으로 만든 IaC(Infrastructure as Code) 도구 입니다.
Part
1
4. # CDK 구조
App Stack Construct
CDK CLI를 통해 AWS
CloudFormation 템플릿을
렌더링하고 배포할 수
있는 기능을 제공
리전 및 계정에 대한
정보가 포함된 하나
이상의 Stack으로 구성
AWS CDK에서 배포 단위
AWS 람다, AWS ECS와
같이 AWS 리소스를 표현
하는 구문이 포함
CDK 앱을 만들기 위해 가
장 기본적인 블록
ex) S3 의 버 킷 , 복 수 의
AWS CDK 리소스로 구성
된 보다 고 수준의 리소스
단위
Part
1
6. # CDK 장점
익숙한 개발 언어로
인프라를 관리
2022년 기준 Typescript, Javascript,
Python, Java, .net 을 지원하고 있습니다.
주로 사용하는 프로그래밍 언어로 AWS
CDK를 사용 할 수 있습니다.
IaC 의 테스트가
쉬워짐
git 등을 사용하며 인프라 버전관리,
코드리뷰, 문제 발생시 실수없는 빠른 롤백
등의 작업이 가능해 집니다.
Part
1
7. # Terraform VS AWS CDK
Part
1
- Terraform CDK
프로그래밍 기술
Yaml 혹은 HCL로 구현, 기존과 다른 새로운 언어
를 익혀야함, 심플하나 완벽한 OOP언어가 아니
므로 확장성면에서의 제약이 있음, 보조툴을 설
치하여 자동완성에 대한 기능을 사용가능하나 완
벽하지 않음, 컴파일 에러등으로 사전확인 등 안
전한 구현이 힘듬
5가지의 기존 프로그래밍 언어를 이용(확
장중), OOP를 이용하여 다양하게 확장가
능, Pattern을 이용해여 유연한 구조 및
재사용성 제고가능, 작성자의 프로그래밍
능력에 의해 무한한 확장 가능성 을 가짐,
IDE를 통한 자동완성, 컴파일 에러를 통
해 안전한 구현
인프라구성의 워크로드
IaaS부터의 접근방식으로 이러한 인프라 구성 관
련한 레퍼런스가 많음
IaaS보다는 Container/Serverless에 최신
기술들이 접목 되어 최적의 시너지를 발
휘할 수 있음. IaaS도 완벽히 지원,
Public Cloud 지원 Public Cloud를 다양하게 지원
AWS에 특화 된 IaC, CDK for
Terraform 과 CDK8S 와 같은 생태계가
만들어 지고 있기 때문에 성장가능성 높
음.
라이센스, 기술성숙도 및
배포안정성
특정기능 이상 엔트프라이즈 계약 필요, SDK로
직접 배포하기 때문에 배포의 안정성이 조금 떨
어질수 있음
CloudFormation, ParameterStore등을 무
료로 사용가능, 배포의 백엔드로
CloudFormation을 사용 하여 성숙된 배
포완성도를 가짐
11. Part
2
• bin/cdk-test.ts -
CDK 애플리케이션에 대한 진입 포인트입니다.
lib/* 하위에 정의한 모든 스택을 로드/생성합니다.
• lib/cdk-test-stack.ts -
주요 CDK 애플리케이션이 정의되는 지점입니다.
리소스 및 그 속성이 여기로 이동할 수 있습니다.
• package.json -
프로젝트 종속 파일, 그리고 일부 추가 정보를 정의하고
스크립트를 구축하는 지점입니다(npm build, npm test,
npm watch).
• cdk.json -
이 파일은 애플리케이션은 물론 CDK 및 프로젝트에
관련된 일부 추가 설정 및 파라미터를 실행하는 방법에
대한 도구 키트를 알려줍니다.
# CDK 프로젝트 구조
12. Part
2
cdk ls Stack 리스트 확인 가능
cdk synthesize Stack을 CloudFormation 템플릿으로 변환 후 출력
cdk bootstrap AWS 환경에 CDK Toolkit을 위한 Stack을 배포(처음 deploy 전 필요한 사전 작업)
cdk deploy CloudFormation을 통해 프로덕션에 AWS CDK 애플리케이션을 배포
cdkdestroy CDK Stack(배포된 CloudFromation과 AWS Resource) 삭제
cdk diff 배포된 Stack과 현재 Stack의 변경 사항 확인
cdk metadata Stack에 대한 메타데이터를 표시
cdk init 현재 디렉터리에 새 CDK 프로젝트 생성
cdk context 캐시된 컨텍스트 값 관리
cdk doc CDK API Reference
cdk doctor CDK 프로젝트에 문제가 있는지 체크
# CDK 명령어
13. # CDK 프로젝트 ex)
시스템 구성도
Part
2
AWS Cloud
VPC
Availability Zone 1 Availability Zone 2
10.0.1.0/24
Public subnet
10.0.3.0/24
Public subnet
- 두 개의 퍼블릭 서브넷이 있는 VPC를 두 개의 가용성 영역에 걸쳐 분산되도록 생성
14. S3 Bucket SNS USER
PUT Event Email Subscription
# CDK 프로젝트 ex)
시스템 구성도
- AWS CDK로 S3 버킷에 파일이 업로드 되면 알림을 전송하는 시스템
Part
2