AWS Lambda는 최근 SnapStart 기능을 컨테이너 이미지 함수에 적용해, 함수 초기화 환경을 스냅샷으로 저장하고 이를 호출 시 복원함으로써 콜드 스타트 시간을 획기적으로 줄였다. 기존에는 컨테이너 이미지 다운로드와 초기화에 수초가 소요됐으나, SnapStart는 초기화 과정을 배포 시 한 번만 수행하고 이후 호출에서는 스냅샷 복원만 진행한다.
SnapStart는 Java, Python, .NET 등 주요 관리형 런타임뿐 아니라 컨테이너 이미지 함수에도 지원을 확대했다. 이를 통해 머신러닝 추론, 대화형 API 등 지연 시간에 민감한 워크로드에서 빠른 응답을 구현할 수 있다. 지원하는 베이스 이미지는 AWS가 제공하는 Lambda 베이스 이미지이며, 커스텀 이미지도 일부 조건 하에 SnapStart를 활용할 수 있다.
SnapStart 활성화는 AWS 관리 콘솔, CLI, SDK, CloudFormation, SAM, CDK 등 다양한 AWS 도구를 통해 가능하다. 활성화 후 함수 버전을 게시하면 초기화 환경 스냅샷이 생성되고, 이후 호출 시 이 스냅샷에서 빠르게 복원된다. 다만 SnapStart는 게시된 버전에만 적용되며 최신 버전($LATEST)에는 적용되지 않는다.
SnapStart 사용 시 네트워크 연결, 고유 ID, 캐시된 자격 증명 등 초기화 시점에 생성된 상태가 복원되므로, 호출 시점에 이를 재설정하는 후처리 훅을 제공한다. 이를 통해 데이터베이스 연결 재설정, 고유값 재생성 등 상태 일관성을 유지할 수 있다. 또한 CloudWatch 로그와 AWS X-Ray를 통한 복원 시간 모니터링도 지원한다.
SnapStart는 프로비저닝된 동시성, Amazon EFS, 512MB 초과 임시 저장소 등 일부 기능과는 호환되지 않으며, 최대 컨테이너 이미지 크기는 10GB로 제한된다. 가격은 스냅샷 캐싱과 복원 호출에 따라 책정되며, 사용하지 않는 함수 버전 삭제로 비용을 절감할 수 있다.
출처: AWS Compute


