SnapStart ?
- Java용 Lambda SnapStart는 일반적으로 함수 코드를 변경하지 않고도 추가 비용 없이 지연 시간에 민감한 애플리케이션의 성능을 최대 10배까지 높일 수 있다.
- 시작 지연 시간(콜드 스타트)이 발생하는 가장 큰 원인은 Lambda가 함수를 초기화 하는데 시간을 소비하기 때문이다.
- 콜드 스타트에는 함수 코드 로드 시간, 런타임 시작 시간, 함수 코드 초기화 시간이 포함된다.
- SnapStart를 사용하면 함수 버전을 게시할 때 Lambda가 함수를 초기화 한다. Lambda는 초기화된 실행 환경의 메모리 및 디스크 상태 Firecracker MicroVM 스냅샷을 생성하고 스냅샷을 암호화하며 짧은 지연 시간으로 엑세스할 수 있도록 스냅샷을 캐싱한다.
- 함수 버전을 처음 호출하는 경우와 호출이 스케일 업 되는 경우 Lambda는 실행 환경을 처음부터 초기화하는 대신 캐싱된 스냅샷에서 새 실행 환경을 재개하여 시작 지연 시간을 개선한다.
SnapStart의 지원 기능 및 제한 사항
- SnapStart는 Java 11 및 17 관리형 런타임을 지원한다. 다른 런타임 관리형 (nodeJs, python …) 자용자 지정 런타임 및 컨테이너 이미지는 지원하지 않는다.