-
[AWS] Lambda란?AWS 2023. 7. 3. 00:01728x90
AWS Lambda란 무엇일까?
AWS Lambda란 서버를 배포하거나 관리하지 않고 코드를 실행할 수 있도록 하는 컴퓨팅 시스템입니다.
AWS에서 내부적으로 고가용성을 지원해 주기 때문에 Lambda가 지원하는 언어로 코드를 제공하기만 하면 됩니다.
코드를 실행하지 않으면 요금은 부과되지 않습니다.
기본적으로 Event Driven 방식으로 동작하며 API Gateway와 Elastic Load Balancer와 HTTP 요청을 처리할 수 있습니다.
또한 S3, DynamoDB, Kinesis 등에서 발생하는 이벤트를 트리거로 실행하는 것도 가능합니다.
이러한 이유로 대게 서버리스 솔루션중하나로 많이 사용됩니다.
AWS Lambda의 요금
사용한 만큼만 부과됩니다.
함수 호출 요성 수와 코드를 실행하는데 걸리는 기간에 따라 요금이 청구됩니다.1백만 요청당 0.2 USD 요금이 발생합니다.
AWS Lambda는 왜 사용할까?
첫번째로 가장 큰 이점은 서버리스입니다.
개발자가 서버의 존재를 신경 쓸 필요가 없어지고 코드에만 집중할 수 있습니다.
두 번째로 비용입니다.
사용한 만큼만 내기 때문에 비용적으로 효율적일 수 있습니다.
AWS Lambda 언제 사용할까?
코드를 계속 실행시키기보다 특정한 시기에만 실행시키는 경우에 사용하면 유용합니다.
다양한 AWS 서비스들과 연동하여 특정 이벤트가 발생했을 때 실행할 수 있습니다.
사내에서는 인증을 위해 Gateway에서 인증이 필요한 도메인에서 람다를 호출하고 Access Token을 검증하고 userId를 꺼내오는 역할을 수행합니다.
AWS Lambda의 단점은 무엇일까?
- 코드 용량이 최대 250 MB이다.
- 함수 실행 시간은 최대 15분이다.
- Cold Start 문제가 발생할 수 있다.
- 동시성 접속자가 제한되는 문제가 발생할 수 있다.
Clod Start를 간단하게 설명한다면 람다는 리소스를 효율적으로 사용하기 위해 오랫동안 사용하지 않으면 잠시동안 컨테이너를 꺼두게 되고, 다시 사용하려면 컨테이너를 다시 띄우는데 딜레이가 발생합니다.
리전당 기본 동시 접속자 수 제한이 1,000명으로 시작됩니다.
이 사실을 알자마자 뭐아 1000명밖에 동시접근이 안되나?라는 생각이 들었습니다.
실제로 해당 제한을 풀기위해선 증설을 원하는 Region을 정하고 사유를 말해야 합니다.
약 100ms 이내에 끝나는 로직이 1000개가 동시에 실행되고 끝난다면 이 함수의 TPS는 1만 이상이 됩니다.
동접 1만 명이 안 되는 서비스라면 크게 문제가 없을 것 같습니다.
AWs Labmbda는 어떻게 사용할까?
https://ap-northeast-2.console.aws.amazon.com/lambda/home?region=ap-northeast-2#/begin
Python으로 함수를 생성해 보겠습니다.
간단하게 실행을 눌러 미리 테스트해 볼 수 있습니다.
함수 생성 정보 입력 : 블루 프린트 사용
블루 프린트 이름: Hello world function
함수 이름 : myTestLambda
런타임 : Python 3.7
import json print('Loading function') def lambda_handler(event, context): #print("Received event: " + json.dumps(event, indent=2)) print("value1 = " + event['key1']) print("value2 = " + event['key2']) print("value3 = " + event['key3']) return event['key1'] # Echo back the first key value #raise Exception('Something went wrong')
위와 같은 코드가 생성됩니다.
간단하게 테스트를 호출해 볼 수도 있습니다.
참고자료
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/welcome.html
https://aws.amazon.com/ko/lambda/pricing/
https://boomkim.github.io/2019/11/04/lambda-with-sqs/
'AWS' 카테고리의 다른 글
[AWS] Lambda Cold Start 해결방법 (0) 2023.07.05 [AWS] Lambda + API Gateway (0) 2023.07.04 [AWS] Amazon API Gateway란? (0) 2023.06.17 [AWS] SQS DLQ 설정하기 (0) 2023.06.13 Spring Cloud AWS 3.0 사용하기 - SNS, SQS (0) 2023.06.08