본문 바로가기
AWS/Lambda

AWS Lambda behind the scenes

by 내꿈은한량 2022. 7. 14.


Alex Xu 라는 사람이 트위터에 올린 “AWS Lambda behind the scenes” 트윗 내용을 번역하였습니다.

서버리스는 클라우드 서비스들 중에서 가장 핫한 주제 중 하나입니다. AWS Lambda 는 내부적으로 어떻게 동작하는 걸까요?

Lambda는 이벤트에 대한 응답으로 (역:다양한 프로그래밍 언어로 직접 작성한) Function을 실행하는 Amazon Web Services (AWS)에서 제공하는 Severless 컴퓨팅 서비스입니다.

Firecracker MicroVM

Firecracker는 모든 Lambda Function을 구동하는 엔진입니다[1]. Amazon에서 개발하고 Rust로 작성된 가상화 기술입니다.

아래 다이어그램은 AWS Lambda Worker의 격리 모델을 보여줍니다.

Lambda function들은 최소한의 리눅스 사용자 영역과 일부 공통 라이브러리와 유틸리티를 제공하는 샌드박스내에서 실행됩니다. 이 샌드박스는 EC2 인스턴스상에서 실행 환경(worker)를 생성합니다.

Lambda는 어떻게 초기화되고 호출될까요? 2가지 방법이 있습니다.

Synchronous execution

 

Step 1

Work Manager는 지정된 호스트(샌드박스 프로비저닝)의 위치에 워크로드를 배치하고 이를 Work Manager에게 반환하는 배치 서비스와 통신합니다. [2]

Step 2

그런 다음 Worker Manager는 Init을 호출하여 S3에서 Lambda 패키지를 다운로드하고 Lambda 런타임을 설정하여 실행할 함수를 초기화합니다. [2]

Step 3

이제 Frontend Worker가 Invoke 를 호출합니다. [2]

Asynchronous execution

Step 1

Application Load Balancer는 이벤트를 내부 대기열(SQS)에 배치하는 사용 가능한 Frontend로 호출을 전달합니다.

Step 2

이 내부 대기열에 할당된 Poller 집합이 있습니다. 이 대기열은 이를 폴링하고 이벤트를 Frontend로 동기적으로 이동하는 역할을 합니다. Frontend에 배치된 후 이전에 다룬 동기 호출 패턴을 따릅니다.

 

Ref