Serverless NestJS

서버리스 NestJS Lambda 흐름

API Gateway 이벤트를 Express 어댑터로 넘기고, Nest 인스턴스는 가능한 재사용해 콜드 스타트 비용을 줄인다.

API Gateway HTTP를 이벤트로 변환

경로, 헤더, 본문을 Lambda 이벤트로 넘긴다.

handler 웜업과 실제 요청 구분

초기화가 필요한지 먼저 판정한다.

cachedServer Nest 인스턴스 재사용

이미 만든 Express 어댑터를 다음 요청에 재활용한다.

Managed State 상태는 밖으로 분리

세션, 파일, 캐시는 RDS, Redis, S3로 보낸다.

Lambda가 맞는 경우

트래픽이 들쭉날쭉하고 유휴 비용을 줄이고 싶을 때.

Fargate가 맞는 경우

긴 실행 시간과 컨테이너 웹 서버 흐름을 유지해야 할 때.

공통 전제

비밀값, 파일, 세션 같은 상태는 코드 밖 관리형 서비스로 둔다.

서버리스 NestJS의 성공 조건은 Nest를 빨리 띄우는 것보다, 띄운 인스턴스를 안전하게 재사용하고 상태를 외부화하는 데 있다.