피드로 돌아가기
Dev.toInfrastructure
원문 읽기
CDK와 GitHub Actions를 통한 NestJS Serverless 아키텍처 자동화 구현
How to Deploy NestJS to AWS Lambda Using CDK and GitHub Actions
AI 요약
Context
NestJS의 상주형 HTTP 서버 모델과 AWS Lambda의 이벤트 기반 Stateless 실행 모델 간의 구조적 불일치 발생. 기존의 단순 배포 방식으로는 Lambda의 Cold Start 최적화 및 인프라 일관성 유지가 어려운 한계 존재.
Technical Solution
- @codegenie/serverless-express 라이브러리를 통한 Lambda Event의 HTTP Request 변환 및 NestJS 런타임 적응 설계
- 핸들러 외부에 serverlessExpressInstance를 선언하여 컨테이너 재사용 시 부트스트랩 과정을 생략하는 Cold Start 완화 전략 적용
- AWS CDK 기반의 Infrastructure as Code(IaC) 도입으로 Lambda 함수와 HTTP API Gateway의 버전 관리 및 프로비저닝 일치
- GitHub Actions 워크플로우 구성을 통한 코드 Push 기반의 빌드 및 CDK Stack 자동 배포 파이프라인 구축
- API Gateway의 프록시 설정을 통해 모든 요청을 NestJS 내부 라우팅으로 위임하는 중앙 집중형 요청 처리 구조 채택
실천 포인트
1. Lambda 핸들러 외부 영역에 인스턴스를 캐싱하여 Cold Start 오버헤드 최소화 여부 검토
2. @codegenie/serverless-express와 같은 어댑터를 통한 요청/응답 포맷 변환 레이어 검증
3. AWS CDK를 사용하여 API Gateway와 Lambda 간의 권한 및 네트워크 설정 자동화
4. GitHub Actions의 Secrets와 Vars를 구분하여 보안성과 가시성을 동시에 확보한 CI/CD 구성