AWS CDK: 핵심 철학을 코드에서 구현하기

김기현·2026년 2월 1일

AWS

목록 보기
33/44

CDK의 기본 구조를 넘어 실제 운영 환경에서 복잡한 인프라를 안전하고 유연하게 관리하기 위해 반드시 알아야 하는 핵심 철학이 존재한다. 이 개념들은 CDK가 단순한 스크립트 도구를 넘어 왜 프레임워크인지를 증명하는 요소들이다.


1. Aspect: 거버넌스 및 규준 준수(Governance)

시스템 전체에 일관된 규칙을 어떻게 적용할 것인가?에 대한 답

Aspect는 객체 지향의 방문자 패턴(Visitor Pattern)을 인프라에 적용한 개념이다. 특정 범위(Scope) 내의 모든 리소스를 순회하며 일괄적인 변경이나 검증을 수행할 때 사용한다.

  • 철학: 개별 객체가 스스로를 증명하기 어렵다면 외부에서 일괄적으로 규정을 강제한다.
  • 용도: 모든 S3 버킷에 공통 태그를 붙이거나 모든 보안 그룹이 특정 포트를 열지 못하도록 검사하는 보안 규정 강제에 활용한다.
public class BucketTaggingAspect implements IAspect {
    @Override
    public void visit(IConstruct node) {
        // 노드가 S3 버킷(L1)인 경우 태그를 추가한다.
        if (node instanceof CfnBucket) {
            Tag.add(node, "CreatedBy", "CDK-Team");
        }
    }
}
// App에서 적용
Aspects.of(app).add(new BucketTaggingAspect());

2. Escape Hatches: 실용주의(Pragmatism)

추상화의 한계를 인정하고 탈출구를 제공한다

CDK의 고수준 객체(L2)가 AWS의 모든 최신 기능을 즉시 지원하지 못할 때가 있다. 이때 Escape Hatches를 사용하여 하위 수준의 CloudFormation 리소스(L1)에 직접 접근한다.

  • 철학: 추상화는 강력해야 하지만 필요할 때 언제든 구체화할 수 있는 방법이 있어야한다.
  • 용도: L2 메서드에는 없는 미지원 속성을 강제로 설정할 때 사용한다.
Bucket bucket = Bucket.Builder.create(this, "MyBucket").build();

// L2 객체에서 L1 객체(CfnBucket)를 추출한다.
CfnBucket cfnBucket = (CfnBucket) bucket.getNode().getDefaultChild();

// L2에는 없는 로우 레벨 속성을 설정한다.
cfnBucket.addPropertyOverride("NotificationConfiguration.LambdaConfigurations", someValue);

3. Context & Determinisn (컨텍스트와 결정론)

언제 어디서 배포해도 결과가 같아야 한다

CDK 코드는 실행될 때마다 항상 같은 결과(CloudFormation 템플릿)를 만들어내야 한다. 이를 결정론(Determinism)이라고 한다. 하지만 VPC ID나 가용 영역(AZ) 정보처럼 AWS 환경에서 가져와야 하는 동적 정보가 코드의 결과에 영향을 줄 수 있다.

  • 철학: 인프라 코드는 외부 환경에 따라 결과가 변하지 않도록 조회된 외부 정보를 로컬에 캐싱해야 한다.
  • Context의 역할: cdk.json에 외부 조회 결과를 저장하여 다음 합성(Synth) 시에는 네트워크 통신 없이 저장된 값을 사용하여 동일한 결과를 보장한다.

4. Bootstrapping: 사전 준비 과정

배포를 하기 위해 필요한 최소한의 기반 시설을 정의한다

CDK 프로젝트를 특정 AWS 계정과 리전에 처음 배포할 때 CDK가 작동하기 위한 기반 리소스를 생성하는 과정이다.

  • 철학: 인프라 배포를 위한 인프라가 먼저 존재해야 한다.
  • 생성 리소스: CDK는 배포에 필요한 S3 버킷(자산 저장용), IAM Role(배포 권한용) 등을 CDKTookit이라는 스택 이름으로 먼저 생성한다.
  • 명령어: cdk bootstrap aws://ACCOUNT-NUMBER/REGION

5. 요약표

개념핵심 철학주요 이점
Aspects방문자 패턴 적용전역적인 보안 정책 및 규정 준수 강제
Escape Hatches추상화 계층 관통미지원 기능 구현 및 세밀한 속성 제어
Context결정론적 합성환경 변화에 무관한 안정적인 템플릿 생성
Bootstrapping배포 기반 마련대규모 자산(Asset) 배포를 위한 파이프라인 구축
profile
백엔드 개발자를 목표로 공부하는 대학생

0개의 댓글