AWS CDK의 합성(Synthesis)과 배포(Deployment)는 우리가 짠 Java 코드가 실제 AWS 리소스로 변신하는 핵심 과정이다. 쉽게 비유하면 합성은 설계도를 그리는 과정이고 배포는 그 설계도대로 집을 짓는 과정이라 할 수 있다.
합성은 Java 코드를 실행하여 AWS의 표준 언어인 CloudFormation 템플릿(JSON/YAML)으로 번역하는 단계이다.
main 메서드가 실행되면서 app.synth()가 호출된다. 이때 CDK는 메모리에 구축된 객체 트리(App-Stack-Construct)를 훑으며 cdk.out폴더에 Cloud Assembly라 불리는 결과물들을 만들어낸다.*.template.json: 실제 CloudFormation 템플릿.manifest.json: 자산(Assets)의 위치와 스택 간 의존성 확보
cdk synth는 로컬에서만 실행되므로 AWS 비용이 전혀 들지 않는다. 배포 전 설계도가 잘 그려졌는지 확인하는 용도로 자주 사용한다.
합성된 설계도를 AWS CloudFormation 서비스로 전달하여 실제 리소스를 생성하는 단계이다.
cdk diff를 통해 미리 볼 수 있다.)우리가 작성하는 main 클래스가 바로 이 모든 과정의 지휘자이다.
public class MyProjectApp {
public static void main(final String[] args) {
App app = new App();
// 1. Construction: 객체들이 메모리에 생성됨
new MyStack(app, "MyStack", StackProps.builder().build());
// 2. Synthesis: 이 메서드가 호출될 때 cdk.out에 템플릿이 구워짐
app.synth();
}
}
합성과 배포를 더 효율적으로 관리하기 위한 도구들이다.
| 명령어 | 단계 | 설명 |
|---|---|---|
cdk synth | 합성 | Java 코드를 CloudFormation 템플릿으로 변환해 본다. |
cdk diff | 비교 | 배포 전 필수! 현재 클라우드 상태와 내 코드의 차이점을 보여준다. |
cdk deploy | 배포 | 실제 AWS에 리소스를 생성/수정한다. |
cdk watch | 배포 | 코드를 수정하면 자동으로 감지해서 HotSwap 배포를 시도한다. (개발 속도 향상) |
cdk destroy | 제거 | 배포된 모든 리소스를 안전하게 삭제한다. |
synth 단계에서 문법이나 논리 오류를 먼저 잡아낼 수 있다.cdk.out에 저장된 합성 결과물은 결정론(Determinism) 원칙에 따라 어디서 배포하든 같은 결과를 보장한다.