NestJS · Serverless

AWS Lambda에서 Nest를 실행할 때의 비용선

서버리스 NestJS는 서버 관리가 사라지는 선택이 아니라, cold start, connection reuse, package size, stateless execution을 설계해야 하는 배포 모델이다.

01

핸들러 래핑

NestFactory로 만든 앱을 서버리스 adapter에 연결하고 handler를 export한다.

02

부트스트랩 캐시

컨테이너 재사용 시 앱 인스턴스를 재활용해 cold start 비용을 줄인다.

03

연결 관리

DB와 외부 클라이언트는 함수 호출마다 새로 만들지 않도록 범위를 조정한다.

04

패키지 축소

불필요 의존성과 asset을 제거해 배포 zip과 초기화 시간을 줄인다.

Cold start
첫 요청 지연 Nest bootstrap, DI container, module scan 비용
메모리 크기와 bundle 크기 영향
Warm reuse
컨테이너 재사용 전역 변수에 app handler를 캐시 가능
영속 상태로 착각 금지
DB pool
연결 폭증 위험 동시 Lambda 수만큼 DB 연결이 늘 수 있음
RDS Proxy 등 검토
Timeout
실행 시간 제한 긴 배치나 streaming 작업에는 부적합할 수 있음
재시도와 idempotency 필요

패키지 · 부트 시간 · 연결 점검

패키지 배포 artifact에 dev dependency와 테스트 파일이 들어가지 않는다.
부트 시간 cold start p95를 실제 리전에서 측정했다.
연결 동시 실행 증가가 DB 연결 한도를 넘지 않는다.
재시도 중복 호출이 같은 명령을 두 번 처리하지 않도록 설계했다.