AWS Lambda
- 서버를 관리하지 않아도 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스이다.
- 서버에 대한 요청을 처리하는 로직을 함수단위로 정의하여 요청이 들어올때마다 함수를 호출한다.
- 사용한 만큼만 지불한다 즉 함수를 호출한 만큼 비용을 지불하는 방식이다.
- C#, 파워셸PowerShell, 고Go, 자바Java, 자바스크립트JavaScript, 파이썬Python, 루비Ruby를 공식적으로 지원한다.
동작
- 사용자가 코드를 Lambda 함수에 업로드
- 트리거 구성
- 트리거 발동
- Lambda 함수의 코드가 요청이 들어오면 자동으로 실행
- 호출한 만큼 비용 지불
람다 호출 패턴
1. 클라우드 와치 이벤트(CloudWatch Events)
- 소스로 람다 함수를 트리거링 할 수 있다.
- 클라우드 와치 이벤트 규칙의 소스는 크게 시간과 다른 서비스의 이벤트로 나뉜다.
- 시간을 사용하는 경우 크론잡과 같이 실행 스케줄을 지정해 람다 함수를 실행하는 것이 가능하다.
- 이벤트 기반으로 소스를 받는 경우 AWS의 다른 서비스들과 느슨하게 결합해서 람다를 실행할 수 있다.
2. S3 객체 이벤트
- S3 버킷의 특정한 이벤트를 소스로 받아 람다 함수를 실행하는 것이 가능하다.
- 예를 들어 사용자가 파일을 추가하거나 변경하면 자동적으로 메타데이터를 추출하는 람다 함수를 실행하거나, 이미지가 업로드 되면 특정 크기로 리사이즈하는 람다 함수를 실행할 수 있다.
3. 외부 이벤트
- 아마존 이벤트브릿지Amazon EventBridge를 통해서 외부 서비스의 이벤트를 기반으로 람다 함수를 실행할 수 있다.
4. API 게이트웨이(API Gateway)
- API 게이트웨이를 통해 HTTP 요청을 람다 함수를 사용해 처리할 수 있다.
5. 애플리케이션 로드 밸런서의 타깃 그룹
- 람다 함수를 애플리케이션 로드 밸런서의 타깃 그룹으로 지정해서 요청을 처리할 수 있습니다.
- API 게이트웨이와 달리 애플리케이션 로드 밸런서를 사용하는 경우 고정 비용이 발생한다.
Lambda 장단점
- 인프라 설계에 대한 부담을 줄일 수 있으며 코드 개발에 집중할 수 있다.
- 트리거를 이용해 애플리케이션을 자동으로 확장 및 축소 가능하여 확장성이 뛰어나다.
- 함수 최대 실행시간이 15분이며, 15분이 넘어가는 코드는 실행되지 않는다.
- 요청이 들어올때마다 컨테이너를 통해 실행되어 EC2보다는 상대적으로 느리다.
- 함수가 호출되는 만큼 비용이 부과되기 때문에 트래픽이 많은 서비스를 Lambda로 처리하는 경우 많은 비용이 청구될 수 있다.
- 웹 백엔드 요청 처리 등 빠른 처리를 요구하는 코드인 경우 적합하다.