AWS Lambda란 AWS에서 제공하고 있는 FaaS 서비스이며 대체적으로 서버리스를 이야기할 때 대표적으로 언급되는 서비스이다.

Lambda는 이벤트가 들어 왔을 때 작동하는 함수와 같은 존재이다.

이러한 Lambda를 실행하기 위해 이벤트가 발생하면 VM을 띄우고 Lambda를 실행한다.

함수가 실행될 때 필요한 환경이 있는데 이를 런타임이라고 한다. 런타임은 어떤 언어로 작성하는지에 따라 다르며 환경에 따라 다르다.

Untitled

Lambda가 실행되면 리눅스 기반의 Micro VM이 실행된다. 환경 변수 등 적절한 실행 환경을 조성하고, 지정한 언어별 런타임 환경을 준비한다. 그리고 마지막에 작성한 함수를 실행한다.

Lambda는 이처럼 이벤트가 발생할 때만 구동하여 불필요한 서버의 가용시간 및 가용 자원을 획기적으로 줄일 수 있다. 그렇지만 이런 Lambda도 단점은 존재한다.

Lambda의 Cold Start 그리고 Warm Start

Lambda를 처음 실행하면 작성한 코드를 VM에 다운로드 하고 실행환경을 조성한다.

이와 같은 작업이 진행 되는 시간을 Cold Start라고 한다. 이후 작성된 함수가 실행되며 이를 Warm Start라고 한다.

위처럼 코드를 다운로드하고 실행환경을 조성하면서 지연시간이 발생한다. 이는 처음 시작했을 때 뿐만아니라 함수가 일정기간 실행되지 않은 이후에 다시 재 실행되었을때도 마찬가지로 Cold Start가 발생한다. (VM에서 코드가 하역되기 전에 코드를 다시 실행했을때는 Partial cold Start가 발생한다.)

Cold Start의 경우 언어,런타임,리소스 양, 패키지, 종속성 등.. 다양한 요소에 따라 걸리는 시간이 다르다.

AWS Lambda의 Event

AWS Lambda 함수로 서비스를 호출하는 방법은 동기식과 비동기식이 있다.

  1. 동기식