Alex Xu 라는 사람이 트위터에 올린 “AWS Lambda behind the scenes” 트윗 내용을 번역하였습니다.
- 글 시작: Alex Xu on Twitter
- 전체 Thread 보기: Thread by @alexxubyte on Thread Reader App
서버리스는 클라우드 서비스들 중에서 가장 핫한 주제 중 하나입니다. 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
'AWS > Lambda' 카테고리의 다른 글
Lambda Function에서 Python용 Handler를 호출해주는 코드 (1) | 2024.11.15 |
---|---|
AWS Lambda 런타임 중 Python에서 사용가능한 기본 Package 목록 (0) | 2023.06.08 |
AWS SAM Local Testing 시 Docker desktop이 아닌 'minikube' 사용하기 (macOS 기준) (0) | 2023.02.01 |
AWS Lambda Function 퍼포먼스 비교: python에서 boto3와 aioboto3의 병렬처리 (0) | 2022.07.14 |
Lambda함수 내에서 사용할 수 있는 최대 CPU 개수는?? (0) | 2022.07.14 |