AWS의 ServerLess 컴퓨팅 FaaS 상품
Lambda 함수가 호출되면 Lambda는 함수의 인스턴스를 할당하여 이벤트를 처리하고, 실행이 마치면, 다른요청을 처리할 수 있다.
“서버가 없다”는 의미로, 개발자가 서버를 관리할 필용 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델
클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지 관리 등을 대신 처리해줌으로써, 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행할 수 있다. 개발자들은 비즈니스 로직 작성에만 더욱 집중할 수 있게 한다.
파일 처리
웹 애플리케이션
또한, 다른 AWS 서비스들과 연동이 용이하여 다른 AWS 서비스로부터 코드를 자동으로 트리거하도록 설정할 수도 있다.
ex. 이미지를 S3에서 읽어와 람다 함수를 통해 크기를 resize 하는 작업
코드를 업로드만 하면 다른 AWS 서비스로부터의 트리거나 웹 또는 모바일(SaaS)에서의 직접 호출 등의 방식을 통해 Lambda에서 높은 가용성으로 이를 실행시켜준다.
람다는 EC2 인스턴스와 마찬가지로 가용성이 높은 하나의 컴퓨터 환경을 제공해주는 것이므로, 하드웨어 측면에서 스펙에 제한이 있다.
특정한 시기에만 코드를 실행하는 경우
- 서버를 띄우지 않고 간단한 코드를 실행시키고 싶은 경우
- 특정 기간 또는 특정 주기로 코드를 실행시켜야 하는 경우
- 트리거가 실행될 때만 코드를 실행시키고 싶은 경우
비용 절감
항상 서버를 켜두고 있지 않고도 필요할 때만 함수를 호출하는 것이 가능하므로 비용을 절약할 수 있다
인프라 운영관리 부담절감
서버 관리를 자체적으로 지원해준다 → ex. 트래픽 증가 시 자동으로 오토스케일링 수행
빠른 개발 배포
람다를 이용하면 AWS 자체에서 지원하는 기능이 많아, 쉽게 배포가 가능하고 API 연동도 매우 쉽게 할 수 있다
리소스 제한
직접 서버에서 돌리는 것보다는 메모리, 처리시간 등의 스펙이 턱없이 부족하다
⇒ 즉, 하나의 함수가 한 번 호출될 때, 최대 10GB의 메모리까지 사용이 가능하며, 처리시간은 최대 15분이라는 의미이다.
Stateless (무상태성)
함수가 호출될 때마다 새로운 컨테이너를 띄우는 방식이므로, 별도의 상태를 저장하지 않는다
⇒ 즉, Lambda가 이벤트에 의해 트리거 될 때마다 완전히 새로운 환경에서 실행된다는 것을 의미한다.
ColdStart
람다는 리소스를 효율적으로 사용하기 위해 오래 사용하지 않는 동안에는 잠시 컴퓨팅 파워를 꺼두고 있다가, 호출 시에 다시 컨테이너를 띄우는데, 이때 실행환경을 구성하기 위한 시간 딜레이가 발생할 수 있다
*EC2의 경우, WarmStart로, 항상 가동된 상태에서 요청을 받을 준비가 되어 있어 딜레이가 없다.
동시성 제한
람다는 각 리전별로 동시에 실행할 수 있는 람다함수의 개수를 최대 1000개로 제한하고 있다. 따라서 이 요청 수를 넘어가면 람다가 수행되지 않는 문제가 발생할 수 있다.