AWS Lambda는 서버리스 컴퓨팅 서비스 FaaS(Function as a Service)의 개념을 기반으로 하고 있으며,
대표적인 AWS 서버리스 서비스는 아래와 같다.
- Aws Lambda
- Dynamo DB
- AWS Cognito
- AWS API Gateway
- S3
- AWS SNS & SQS
- AWS Kinesis Data Firehose
- Aurora
- Fargate
서버리스를 처음 접하는 사람이라면 Lambda를 써보고 찬양하게 되는 것 같다.
큰 장점으로는 코드를 실행하기 위해 서버를 프로비저닝하거나 관리할 필요가 없다는 것 이다.
이를 통해 간단하게 애플리케이션 이나 원하는 서비스(?)를 구축할 수 있다.
서버리스 환경에서는 인프라의 부담을 줄이고, 애플리케이션 개발과 배포에 집중할 수 있다는 장점이 있다. 그런 의미에서 보면 ‘Lambda를 적재적소에 활용하면 컴퓨팅 비용을 크게 줄일 수도 있겠다’ 라는 생각이다.
심지어 AWS Lambda는 매월 최초 요청 100만 건 또는 40만 GB-초에 대한 리소스를 무료로 제공하며, 서울리전 기준 처음 6십억GB-초/월GB-초당 0.0000166667 USD요청 1백만 건당 0.20 USD 의 비용으로 매우(?) 저렴한 것 같다.
자세한 요금표 : https://aws.amazon.com/ko/lambda/pricing/
체감으로 느껴지는 장점
- 다양한 언어를 지원한다. 특별한 설정없이도 Python, Node.js, Java, C#, Go, PowerShell, Ruby, 그리고 Custom Runtime 등을 지원한다. (모든 버전은 아니다.)
- AWS 서비스 내부적으로 활용도가 높다
Lambda를 활용하기 위해서는 먼저 함수를 생성해야 한다.
함수를 생성하고, 관련된 AWS CLI를 활용해 테스트 및 배포를 할 수 있다.
- CLI Note 정리
aws lambda list-functions # 함수 리스트 보여주기
aws lambda list-functions --region ap-northeast-2 #지역선정
#함수호출방법
aws lambda invoke --function-name {함수명} --cli-binary-format raw-in-base64-out --payload '{json 포맷 데이터}' --region ap-northeast-2 response.json
#확인
cat response.json
Lambda를 이용해 서버를 구축할 때, 관련된 AWS 공식 문서를 참고하면 도움이 된다.
AWS Lambda ALB 예시와 같이, AWS 공식 문서에서는 다양한 예시와 가이드를 제공하고 있다.
AWS Lambda ALB Example
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/services-alb.html
- 예제Note 정리
- Lambda 함수 작성 후 deploy 를 눌러야 반영(저장)된다.
- ALB는 멀티헤더를 지원하기 때문에, lambda에서 json 으로 “queryStringParameters”:{”name”:[”foo”,”bar”]} 를 ALB로 보내면 http://example.com/path?name=foo&name=bar 로 보낸다.
- Lambda를 이용해 http ↔ lambda 통신하기 위해서 ec2-ALB를 생성한다
- (ALB는 테스트 용도이므로 인/아웃 전부 열어둔다.)
- security_group 및 타겟그룹을 생성해야 한다.
- 이때, 타겟그룹은 인스턴스타입이 아닌 Lambda Function으로 생성해야 한다.
- ALB DNS로 바로 확인 가능