본문으로 이동

AWS Lambda

AWS Lambda는 아마존 웹 서비스(Amazon Web Services, AWS)가 제공하는 서버리스 컴퓨팅 서비스로, 서버를 준비하거나 관리하지 않고 코드를 실행할 수 있게 한다.

위키베이스 항목 수정하기

특징

AWS는 Lambda를 서버리스 컴퓨팅 서비스로 소개하며, 서버를 준비하거나 관리하지 않고 코드를 실행할 수 있다고 설명한다.[1] Lambda는 이벤트 함수(Event Functions), 웹 함수(Web Functions), 마이크로VM(MicroVMs)의 세 가지 컴퓨트 방식을 제공하며, 이벤트 함수는 원래부터 있던 함수 유형이다.[1] AWS는 Lambda가 서버 유지보수, 용량 준비, 규모 조절, 패치 같은 하부 인프라 관리를 맡는다고 설명한다.[1] 이벤트 함수에서 사용자는 핸들러 함수를 쓰고 아마존 API 게이트웨이, 아마존 S3, 아마존 SQS, 아마존 이벤트브리지 같은 트리거에 연결한다.[1] AWS는 이벤트 함수의 각 호출이 상태를 공유하지 않고 독립적으로 실행되며, 수요에 맞춰 수평 확장된다고 밝힌다.[1] 함수는 기본적으로 한 번 호출에 최대 15분까지 실행할 수 있고, 메모리는 128MB부터 10240MB까지 1MB 단위로 정한다.[2] CPU 성능은 설정한 메모리에 비례해 배정되며, 메모리가 1769MB이면 vCPU 하나에 해당한다.[2] 함수 하나당 10초마다 실행 환경을 1000개까지 늘릴 수 있다.[2] .zip 파일(ZIP)로 배포하면 압축을 푼 크기가 250MB까지, 컨테이너 이미지로 배포하면 10GB까지 허용된다.[2] 새 계정은 동시 실행과 메모리 한도가 낮게 시작하고, AWS가 사용량에 따라 자동으로 올린다.[2]

AWS 문서는 파이어크래커(Firecracker) 가상화로 작업 사이를 가상 머신 수준으로 격리한다고 설명한다.[1] Lambda는 요청을 받으면 이전 호출에서 쓰던 실행 환경을 다시 쓰거나 새 실행 환경을 만든다.[3] 새 실행 환경을 만들면서 함수 코드를 불러오고 런타임을 시작하는 초기화 시간이 시작 지연(콜드 스타트)의 가장 큰 원인이라고 AWS는 밝힌다.[4] AWS는 SnapStart가 함수를 게시할 때 초기화를 미리 하고 실행 환경의 메모리와 디스크 스냅샷을 저장해 두었다가, 호출이 늘면 그 스냅샷에서 새 실행 환경을 재개해 시작 지연을 줄인다고 설명한다.[4]

언어와 배포

Lambda는 파이썬, Node.js, 자바, .NET, 루비를 런타임으로 제공하며, 주요 언어 버전마다 런타임 식별자가 따로 있다.[3] Go나 러스트 같은 언어는 운영체제만 있는 런타임(OS-only runtime)으로 쓴다.[3] 런타임은 아마존 리눅스 배포판 중 하나와 짝을 이룬다.[3] AWS는 런타임마다 폐기 일정을 정해 두고, 폐기 뒤에는 한동안만 함수를 만들거나 고칠 수 있다고 안내한다.[3]

AWS가 제공하는 기본 이미지나 자기 이미지에 런타임 인터페이스 클라이언트를 넣어 컨테이너 이미지로도 함수를 배포할 수 있다.[5] Go와 러스트 같은 컴파일 언어에는 운영체제만 든 기본 이미지를 쓴다.[5]

함수 URL은 Lambda 함수 하나에 붙는 전용 HTTP·HTTPS 주소로, https://<url-id>.lambda-url.<리전>.on.aws 꼴이다.[6] 함수 URL은 공용 인터넷으로만 접근할 수 있고, 접근 제어에는 리소스 기반 정책을 쓴다.[6]

요금

Lambda의 이벤트 함수는 처리한 요청 수와 코드가 실행된 시간(GB-초)으로 요금이 매겨진다.[7] 무료 사용량은 매달 요청 100만 건과 40만 GB-초다.[7] AWS는 메모리 크기별로 1밀리초당 가격을 요금표에 싣는다.[7] 2014년 11월 처음 소개했을 때는 100밀리초 단위로 계량한다고 밝혔다.[8]

역사

AWS는 2014년 11월 13일 AWS Lambda를 프리뷰로 발표했다.[8] 당시 AWS는 이미지 업로드, 앱 안의 활동, 웹사이트 클릭, 연결된 기기의 출력 같은 이벤트에 반응해 코드 실행을 밀리초 안에 시작한다고 소개했다.[8] 2018년 11월 29일에는 런타임 API와 레이어(Layers)를 발표했다.[9] 런타임 API는 Lambda와 함수 런타임이 주고받는 HTTP 기반 규격으로, 이를 써서 직접 만든 런타임을 올릴 수 있다.[9] 레이어는 여러 함수가 함께 참조할 수 있는 코드와 데이터 묶음이다.[9] 2020년 12월 1일에는 최대 10GB의 컨테이너 이미지로 함수를 배포하는 기능이 더해졌다.[10]

출처

  1. ↑ 1.0 1.1 1.2 1.3 1.4 1.5 “What is AWS Lambda?”. 《AWS Lambda Developer Guide》 (영어). 2026년 11월 9일에 확인함. 
  2. ↑ 2.0 2.1 2.2 2.3 2.4 “Lambda quotas”. 《AWS Lambda Developer Guide》 (영어). 2026년 11월 9일에 확인함. 
  3. ↑ 3.0 3.1 3.2 3.3 3.4 “Lambda Event Function runtimes”. 《AWS Lambda Developer Guide》 (영어). 2026년 11월 9일에 확인함. 
  4. ↑ 4.0 4.1 “Improving startup performance with Lambda SnapStart”. 《AWS Lambda Developer Guide》 (영어). 2026년 11월 9일에 확인함. 
  5. ↑ 5.0 5.1 “Create a Lambda Event Function using a container image”. 《AWS Lambda Developer Guide》 (영어). 2026년 11월 9일에 확인함. 
  6. ↑ 6.0 6.1 “Creating and managing Lambda function URLs”. 《AWS Lambda Developer Guide》 (영어). 2026년 11월 9일에 확인함. 
  7. ↑ 7.0 7.1 7.2 “AWS Lambda Pricing”. 《Amazon Web Services》 (영어). 2026년 11월 9일에 확인함. 
  8. ↑ 8.0 8.1 8.2 “Introducing AWS Lambda”. 《Amazon Web Services》 (영어). 2014년 11월 13일. 2026년 11월 9일에 확인함. 
  9. ↑ 9.0 9.1 9.2 “AWS Lambda Now Supports Custom Runtimes and Enables Sharing Common Code Between Functions”. 《Amazon Web Services》 (영어). 2018년 11월 29일. 2026년 11월 9일에 확인함. 
  10. ↑ “AWS Lambda now supports container images as a packaging format”. 《Amazon Web Services》 (영어). 2020년 12월 1일. 2026년 11월 9일에 확인함.