Backend/AWS

[AWS] AWS CDK? (Feat. ChatGPT)

HarryJeonn 2023. 7. 6. 15:33
💡 GPT가 소개해준 커리큘럼
- AWS Cloud Development Kit (CDK) 소개
- CDK를 사용한 인프라스트럭처 코드 작성
- ECS와 Fargate를 위한 CDK 애플리케이션 구성

AWS Cloud Development Kit (CDK) 소개

개발자가 클라우드 인프라스트럭처를 프로그래밍 박식으로 정의하고 프로비저닝하는 도구이다.

CDK를 사용하면 인프라스트럭처 코드를 작성하여 AWS 리소스를 구성할 수 있으며, 이를 통해 클라우드 애플리케이션을 빠르고 효율적으로 구축할 수 있다.

지원하는 언어

  • TypeScript
  • JavaScript
  • Python
  • Java
  • C#/.NET
  • Go

대표적으로 위 언어들을 포함하고 있고, 나는 TypeScript나 JavaScript로 하지 않을까 싶다.

사용 방식

AWS 리소스를 프로그래밍 언어의 클래스와 객체로 나타내는 형식으로 작성된다.

인프라스트럭처를 코드로 작성한다고 할 수 있다.

CDK에서는 이러한 클래스와 객체를 사용하여 AWS 리소스를 정의하고 구성한다.

예를들어, Amazon S3 버킷을 생성하거나 Amazon EC2 인스턴스를 프로비저닝하려면 해당 리소스에 대한 CDK 클래스와 속성을 사용하여 코드를 작성한다.

CDK는 높은 수준의 추상화를 제공하여 개발자가 AWS 리소스를 더 쉽게 정의하고 구성할 수 있도록 돕는다.

이를 통해 개발자는 구체적인 세부사항을 다루는 대신, 추상화된 인터페이스를 사용하여 리소스를 정의하고 구성할 수 있다.

CDK는 이 추상화를 해석하여 AWS CloudFormation 템플릿을 생성하고, 해당 템플릿을 사용하여 리소스를 프로비저닝한다.

주요 장점

  1. 프로그래밍 언어를 사용하여 인프라스트럭처를 정의
  2. 일반적인 개발 작업과 동일한 개발 환경에서 작업할 수 있다.
  3. CDK는 강력한 추상화를 제공하여 개발자가 AWS 리소스를 쉽게 구성할 수 있도록 돕는다.
  4. 코드를 버전 관리할 수 있으며, 변경 사항을 추적하고 재현 가능한 인프라스트럭처를 유지할 수 있다.
  5. 코드를 통한 인프라스트럭처 정의의 재사용성과 확장성이다.

CDK는 모듈화된 방식으로 코드를 구성할 수 있으며, 여러 프로젝트나 애플리케이션에서 동일한 인프라스트럭처 코드를 사용할 수 있다. 또한 CDK는 AWS 리소스의 종속성 관리, 변경 추적, 스택 업데이트 등을 자동으로 처리하여 인프라스트럭처의 유지보수를 용이하게 한다.

CDK를 사용한 인프라스트럭처 코드 작성

CDK는 다양한 프로그래밍 언어를 지원하며, 개발자는 선호하는 언어로 인프라스트럭처 코드를 작성할 수 있다. CDK는 AWS 서비스 및 리소스를 효율적으로 정의하기 위한 고수준 추상화를 제공한다. 이를 통해 개발자는 AWS 리소스를 선언적인 방식으로 정의하고 구성할 수 있다.

작성 과정

  1. CDK 프로젝트 설정
  2. CDK를 사용하기 위해 프로젝트 디렉토리를 생성하고, 필요한 패키지 및 의존성을 설정한다. 프로젝트 디렉토리를 생성한 후, 적절한 언어와 패키지 관리자를 사용하여 CDK를 설치한다.
  3. CDK 애플리케이션 초기화
  4. CDK 애플리케이션을 초기화하고, 필요한 설정과 구성 파일을 생성한다. CDK 프로젝트의 시작점이 되며 CDK 스택을 정의하는 코드를 작성할 공간을 제공한다.
  5. CDK 스택 작성
  6. CDK 스택은 인프라스트럭처를 정의하는 코드이다. 해당 스택 파일을 열어 AWS 리소스를 프로그래밍 방식으로 정의한다. 예를 들어, Amazon S3 버킷을 생성하거나 Amazon EC2 인스턴스를 프로비저닝할 수 있다.
  7. 리소스 정의
  8. CDK에서는 AWS 리소스를 클래스와 객체로 표현한다. 해당 리소스에 대한 CDK 클래스를 사용하여 속성을 설정하고, 필요한 구성 옵션을 추가한다. 예를 들어, Amazon EC2 인스턴스를 생성하려면 ec2.Instance 클래스를 사용하고, 해당 인스턴스의 속성을 설정한다.
  9. 스택 배포
  10. CDK를 사용하여 작성한 인프라스트럭처 코드를 배포한다. CDK 명령어를 사용하여 스택을 빌드하고, 생성할 리소스를 확인한 후, 배포 명령어를 실행하여 인프라스트럭처를 프로비저닝 한다. CDK는 이러한 작업을 AWS CloudFormation을 통해 수행한다.
  11. 변경 관리
  12. 인프라스트럭처가 변경되면 CDK를 사용하여 변경 사항을 관리할 수 있다. CDK는 리소스의 변경 사항을 감지하고, 필요한 경우 해당 리소스를 업데이트하여 변경 사항을 반영한다. 이를 통해 인프라스트럭처를 쉽게 관리하고 유지할 수 있다.

CDK를 사용하면 프로그래밍 언어를 통해 인프라스트럭처를 정의하고 프로비저닝 할 수 있다.

코드 기반으로 인프라스트럭처를 관리하고, 재사용 가능한 구성요소를 생성하여 개발 프로세스를 가속화하고 일관성을 유지할 수 있다.

ECS와 Fargate를 위한 CDK 애플리케이션 구성

ECS는 컨테이너화된 애플레케이션을 실행하고 관리하기 위한 완전 관리형 컨테이너 오케스트레이션 서비스이다.

Fargate는 서버리스 컨테이너 인프라스트럭처를 제공하며 컨테이너를 실행하기 위해 서버 프로비저닝에 대한 관리 부담을 줄여준다.

작성 과정

  1. CDK 프로젝트 설정
  2. CDK 프로젝트를 생성하고, 필요한 패키지와 의존성을 설정한다. CDK 애플리케이션을 위해 적절한 언어와 패키지 관리자를 선택하고 CDK를 설치한다.
  3. CDK 애플리케이션 초기화
  4. CDK 애플리케이션을 초기화한다. 이 단계에서 CDK 애플리케이션의 시작점이 되는 스택 파일을 생성한다.
  5. ECS 클러스터 생성
  6. CDK를 사용하여 ECS 클러스터를 생성한다. ECS 클러스터는 컨테이너화된 애플리케이션을 실행할 EC2 인스턴스 또는 Fargate 태스크를 호스팅하는 가상 환경이다. CDK에서는 ecs.Cluster 클래스를 사용하여 클러스터를 정의하고 구성한다.
  7. 작업 정의 생성
  8. ECS 작업 정의는 컨테이너화된 애플리케이션의 실행에 필요한 구성을 정의한다. CDK를 사용하여 작업 정의를 생성하고, 컨테이너 이미지, 포트 매핑, 환경 변수 등을 설정한다. 작업 정의를 CDK에서는 ecs.TaskDefinition 클래스를 사용하여 정의합니다.
  9. 서비스 생성
  10. CDK를 사용하여 ECS 서비스를 생성한다. 서비스는 작업 정의를 기반으로 컨테이너화된 애플리케이션을 실행하고 관리한다. CDK에서는 ecs.FargateService 클래스를 사용하여 Fargate를 위한 서비스를 생성할 수 있다.
  11. 배포
  12. CDK 애플리케이션을 배포하여 ECS 클러스터와 서비스를 프로비저닝한다. CDK 명령어를 사용하여 스택을 빌드하고, 변경 사항을 확인한 후, 배포 명령어를 실행하여 인프라스트럭처를 구축한다.

ECS와 Fargate를 위한 애플리케이션을 구성하면 컨테이너화된 애플리케이션을 쉽게 실행하고 관리할 수 있다.

CDK를 통해 컨테이너 클러스터, 작업 정의, 서비스 등을 코드로 정의하고 구성함으로써, 반복적인 작업을 자동화하고 일관성을 유지할 수 있다.