AWS CDK: 라이프사이클

김기현·2026년 2월 1일

AWS

목록 보기
34/44

AWS CDK의 라이프사이클은 개발자가 작성한 프로그래밍 언어 코드가 최종적으로 AWS 클라우드 리소스로 프로비저닝되기 전까지의 전 과정을 의미한다. 이 과정은 크게 Construct(구성), Sysnthesis(합성), Deployment(배포)의 단계로 나뉜다.


1. CDK 라이프사이클 전체 흐름

CDK는 단순히 코드를 실행하는 것이 아니라 여러 단계를 거쳐 의존성을 확인하고 템플릿을 생성한다.

  1. Construction (구성): Java 코드가 실행되어 객체 트리(app, Stack, Construct)가 메모리에 생성된다.
  2. Preparation (준비): 모든 Construct가 배포 준비 상태인지 확인하고 이 단계에서 Aspects가 적용된다.
  3. Validation (검증): 생성된 리소스들이 유효한 설정값을 가졌는지 검사한다.
  4. Systnesis (합성): 메모리의 객체 트리를 기반으로 CloudFormation 템플릿(JSON/YAML) 및 자산(Assets)을 생성한다.
  5. Deployment (배포): 생성된 템플릿을 AWS CloudFormation 서비스로 전송하여 실제 리소스를 생성한다.

2. 핵심 단계 상세 설명

STEP 1: Systhesis (합성) - cdk synth

이 단계는 프로그래밍 언어 세계에서 선언적 명세서(CloudFormation)의 세계로 넘어가는 연결점이다.

  • 실행 주체: Java의 main 메서드 내 app.synth()호출 시점.
  • 산출물: 프로젝트 루트의 cdk.out 폴더에 template.json 파일이 생성된다.
  • 특징: 실제로 AWS에 리소스를 생성하지 않으므로 비용이 발생하지 않으며 로컬에서 템플릿의 오류를 확인하기에 적합하다.

STEP 2: Asset 관리 (자산 정보)

Lambda 소스 코드나 Docker 이미지와 같은 로컬 파일들을 배포 가능한 형태로 가공한다.

  • 동작: CDK는 로컬 자산을 압축하여 S3 버킷(부트스트래핑 시 생성된 버킷)에 업로드하거나 이미지를 ECR에 푸시한다.
  • 참조: 생성된 CloudFormation 템플릿에는 이 업로드된 자산의 위치 정보(S3 URL 등)가 자동으로 기록된다.

STEP 3: Deployment (배포) - cdk deploy

실제로 AWS 계정에 변화를 일으키는 단계이다.

  • CloudFormation 전송: 합성된 템플릿과 자산 정보를 CloudFormation 서비스로 보낸다.
  • 트랜잭션 관리: CloudFormation은 변경 사항을 분석(Change Set 생성)하고 순서에 맞게 리소스를 생성, 수정, 삭제한다. 만약 배포 중 오류가 발생하면 롤백을 통해 이전 상태로 안전하게 되돌린다.

3. Java 코드에서의 실행 시점 이해

Java 코드 관점에서 라이프사이클이 어떻게 동작하는지 직관적으로 파악할 수 있다.

public class MyApp {
    public static void main(final String[] args) {
        // 1. Construction 단계 시작
        App app = new App();

        new MyStack(app, "MyStack", StackProps.builder().build());

        // 2. Synthesis 단계 트리거
        // 이 코드가 실행되면서 cdk.out 폴더에 CloudFormation 템플릿이 물리적으로 생성된다.
        app.synth();
    }
}

개발자가 터미널에서 cdk deploy 를 입력하면 내부적으로 다음 과정이 순차적으로 발생한다.

  1. Java 코드를 컴파일한다.
  2. 컴파일된 바이너리를 실행하여 app.synth() 를 수행한다.
  3. 생성된 cdk.out 내부의 템플릿을 AWS로 전송한다.

4. 라이프사이클 관리 필수 명령어

명령어라이프사이클 단계설명
cdk synthSynthesis코드를 CloudFormation 템플릿으로 변환하고 결과를 확인한다.
cdk diffSynthesis & Compare현재 배포된 리소스와 로컬 코드의 차이점을 분석하여 보여준다.
cdk deployDeployment실제 AWS 계정에 리소스를 배포한다.
cdk destroyCleanup배포된 스택과 리소스를 AWS에서 삭제한다.
profile
백엔드 개발자를 목표로 공부하는 대학생

0개의 댓글