esbuild로 서버리스 스택을 위한 CDK 배포 속도 향상

esbuild의 도움으로 빠른 배포를 쉽게 설정할 수 있습니다. CDK로 작성된 스택은 이 훌륭한 번들러를 사용하여 클라우드에 빠르게 있을 수 있습니다.

1. 이전 경험



개발 경력을 쌓는 동안 AWS에 스택을 배포하는 다양한 솔루션을 만났습니다. 운이 좋게도 CloudFormation , SAM , CDKServerless Framework 을 사용할 수 있었습니다.

저는 대부분 서버리스 기술을 사용합니다. 나는 TypeScriptNode.js 을 사용하지만 Lambda 함수는 JavaScript 코드만 허용합니다.

코드 변환, 번들링 및 배포는 몇 분이 걸릴 수 있으며 때로는 영원처럼 보입니다. 스택에 약간의 변경을 가한 다음 클라우드에서 업데이트된 스택을 몇 분 동안 기다려야 할 때 답답함을 느낍니다.
esbuild는 CDK와 잘 작동하는 놀랍도록 빠른 JavaScript 번들러입니다.

2. 샘플 스택



이를 시연하기 위해 test-project라는 폴더에 샘플 스택을 생성합니다.

npx cdk init --language=typescript


이 명령은 TestProject라는 CDK 버전 2 스택의 폴더 구조를 생성합니다. 패키지 작성자가 때때로 최신 버전보다 뒤쳐지기 때문에 모든 패키지는 준비가 된 후에 업데이트합니다.
lib 폴더에 Lambda 함수를 생성해 보겠습니다.

import { Duration, Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { NodejsFunction, LogLevel, NodejsFunctionProps } from 'aws-cdk-lib/aws-lambda-nodejs';
import { Runtime } from 'aws-cdk-lib/aws-lambda';
import { RetentionDays } from 'aws-cdk-lib/aws-logs';

const lambdaFnProps: Partial<NodejsFunctionProps> = {
  bundling: {
    target: 'es2020',
    keepNames: true,
    logLevel: LogLevel.INFO,
    sourceMap: true,
    minify: true,
  },
  runtime: Runtime.NODEJS_16_X,
  timeout: Duration.seconds(6),
  memorySize: 256,
  logRetention: RetentionDays.ONE_DAY,
  environment: {
    NODE_OPTIONS: '--enable-source-maps',
  },
};

export class TestProjectStack extends Stack {
  constructor(scope: Construct, id: string, props: StackProps) {
    super(scope, id, props);

    new NodejsFunction(this, 'test', {
      ...lambdaFnProps,
      functionName: 'TestFn',
    });
  }
}


스택을 배포하려면 npm run cdk deploy를 실행할 수 있습니다. 그러나 이 시점에서 Docker을 실행해야 합니다. 그렇지 않으면 명령이 오류를 반환합니다.

3. 에스빌드 사용하기



스택 모듈에 일부 bundling 옵션을 설정했지만 CDK는 여전히 번들링에 Docker image을 사용하고 있습니다.

Docker를 사용하지 않고 로컬로 설치esbuild하면 배포 시간을 크게 단축할 수 있습니다.

npm install -D esbuild


그리고 이것이 전부입니다. npm run cdk deploy 명령은 이제 Docker 없이 작동하며 배포가 빠릅니다. CDK는 esbuild를 사용하여 TypeScript를 JavaScript로 자동 트랜스파일합니다. CDK와 esbuild가 우리를 위해 모든 것을 해결할 것이기 때문에 webpack 또는 다른 번들러를 사용할 필요가 없습니다.

4. 요약


esbuild는 CDK v2가 배포 시 TypeScript 코드를 변환하는 데 사용하는 뛰어난 모듈 번들러입니다. esbuild 의 빠른 번들링과 CDK의 향상된 배포 시간을 활용하려면 패키지를 로컬로 설치해야 합니다.

5. 추가 자료



esbuild documentation - esbuild에 대한 모든 것

좋은 웹페이지 즐겨찾기