클라우드와 컨테이너의 기초
서버리스 함수(FaaS)에서, 한동안 호출되지 않았던 함수의 첫 호출만 응답이 수백 밀리초에서 수 초 늦어지는 경우가 있다. 이 현상의 설명으로 올바른 것은?
- A첫 호출의 결과가 캐시되어, 두 번째 이후로는 함수의 코드가 실행되지 않고 저장된 결과만 반환되기 때문에
- B함수를 실행할 환경을 새로 준비하고, 언어 런타임의 시작이나 초기화 처리를 수행하는 데 시간이 걸리기 때문에(콜드 스타트)
- C첫 호출에서는 함수의 코드가 이용자의 단말로 보내져, 단말 위에서 컴파일된 뒤 실행되기 때문에
정답과 해설 보기
정답: B. 함수를 실행할 환경을 새로 준비하고, 언어 런타임의 시작이나 초기화 처리를 수행하는 데 시간이 걸리기 때문에(콜드 스타트)
서버리스 함수에서는 사업자가 실행 환경(컨테이너나 경량 가상 머신 등)을 필요에 따라 준비하고, 한동안 사용되지 않으면 정리합니다. 정리된 뒤의 첫 호출에서는 환경 준비, 언어 런타임의 시작, 함수의 초기화 처리가 필요해지며, 그만큼 응답이 늦어집니다. 이어서 호출되면 준비된 환경이 재사용되므로 빨라집니다(웜 스타트). 대책으로는 초기화 처리나 읽어 들이는 라이브러리를 가볍게 하거나, 미리 일정 수의 환경을 준비해 두는 설정을 사용하는 방법 등이 있습니다.