AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다! 보통 이벤트 기반 서버리스 컴퓨팅 서비스를 언급할 때 람다를 언급하게 되는 것 같아요
AWS Lambda를 사용하면 애플리케이션 코드를 실행하기 위해 인프라를 프로비저닝하거나 관리할 필요가 없기 때문에 코드를 더욱 빠르게 배포하고, 확장성 있는 애플리케이션을 빌드하고, 더욱 높은 가용성을 제공하는 데 집중할 수 있어요
그리고 람다는 사용한 만큼만 비용을 지불하고 함수 요청 수와 코드를 실행하는 데 걸리는 기간에 따라 요금이 청구돼서 만약 서버를 계속 띄워놓는 상황보다 필요할 때마다 처리하는 인프라가 필요하다면 람다가 비용적으로도 선택이 합리적이어서 어플리케이션을 람다로 구성하는 경우도 있더라구요! 하지만 그만큼 아키텍쳐는 복잡해진다는 단점도 있는 것 같아요ㅠㅠ
(요금 관련해서 추가적으로 궁금하시다면 아래 링크를 통해서 확인할 수 있습니다!)
https://aws.amazon.com/ko/lambda/pricing/
AWS Lambda는 여러 분야에서 사용되고 주로 데이터 처리, 웹 애플리케이션, 모바일 백엔드, 머신 러닝, 인공 지능 등에서 사용돼요! 그리고 Lambda 함수는 다양한 이벤트를 트리거로 사용할 수 있다고 해요! 예를 들어, Amazon S3의 객체가 업로드되거나 Amazon SNS 주제가 게시될 때 Lambda 함수를 트리거할 수 있어요
참고로 AWS Lambda 리소스 모델에서 함수에 사용할 메모리 양을 선택하면 이에 비례하여 CPU 용량과 기타 리소스가 할당된다고 해요. 메모리 크기가 증가하면 함수에 사용할 수 있는 CPU도 그만큼 증가하게 돼요
아래는 AWS Lambda를 사용하는 데에 도움이 되는 가이드라인이라고 하더라구요! 아래의 원칙에 맞게 람다 함수를 구성하시면 더 효율적으로 서비스를 이용하실 수 있을 것 같아요 :)
- 함수의 역할을 명확히 정의. AWS Lambda는 코드를 실행하는 데 필요한 모든 것을 관리하기 때문에 함수가 어떤 작업을 수행하는지 정확히 파악하여, 함수 이름, 인자 값, 반환 값 등을 명확히 정의!!
- 함수를 작게 유지 - AWS Lambda는 작은 함수를 더 빠르게 실행할 수 있어요. 함수가 복잡해지면 실행 시간이 늘어나며, 더 많은 메모리와 CPU 리소스가 필요!!
- 함수를 재사용 가능하도록 작성 - AWS Lambda 함수는 다른 AWS 서비스와 연결하여 사용할 수 있는데 이러한 이점 때문에 함수를 재사용 가능하도록 작성하면, 다른 애플리케이션에서도 쉽게 사용 가능!!
- 함수의 로깅을 구현 - AWS Lambda 함수는 CloudWatch Logs에 로그를 남길 수도 있어서 로그를 구현하여 함수의 동작 상태를 확인!
- 함수의 보안을 고려 - AWS Lambda 함수는 IAM 역할을 사용하여 다른 AWS 서비스와의 연결을 제어!
- 함수의 테스트를 꼼꼼히 수행 - AWS Lambda 함수는 로컬에서 테스트 가능 !
- 함수의 배포를 자동화 - AWS Lambda 함수는 AWS CodePipeline을 사용하여 자동으로 배포 가능!
다음 인터페이스 중 하나를 사용하여 Lambda 함수를 생성, 호출 및 관리할 수 있다고 해요!
- AWS 관리 콘솔
- AWS Command Line Interface(AWS CLI)
- AWS SDK
- AWS CloudFormation
- AWS Serverless Application Model(AWS SAM)
마지막으로 Lambda 함수는 다음과 같은 구성 요소로 이루어져 있어요 :)
- 함수 코드 - 실행할 코드이며, 코드는 트리거와 함께 Lambda 서비스에 업로드
- 트리거 - Lambda 함수를 시작하는 이벤트
- 이벤트 - 처리할 lambda 함수에 대한 데이터가 포함된 json 형식 문서로 런타임이 이벤트를 객체로 변환한 후 함수 코드에 전달해요. 즉 aws 서비스가 함수를 호출할 때 서비스가 이벤트의 형태로 넘어가게 돼요!
- Instruction set architecture - lambda가 함수를 실행하는데 사용하는 컴퓨터 프로세서의 유형 (종류는 arm64와 x86_64 가 존재) 해당 레이어에서 사용할 코드와 라이브러리를 포함하는 zip 파일을 준비해야하고 이 파일은 콘솔이나 cli, sdk를 사용하여 레이어로 업로드 할 수 있어요!
- runtime - 실행 환경에서 실행되는 언어별 환경을 제공
- layer - 공통적으로 사용되는 코드와 라이브러리를 미리 패키징하여 쉽게 재사용할 수 있도록 해주는 방법. 함수당 최대 5개의 계층을 포함할 수 있어요!
- 동시성 - 특정 시각에 함수가 제공하는 요청의 수로 함수가 지연 시간 없이 확장될 수 있어요. 함수가 호출되면 이벤트를 처리하도록 lambda가 인스턴스를 프로비저닝하는데 요청이 처리되는 동안 함수가 다시 호출되면 다른 인스턴스가 프로비저닝되어 함수의 동시성이 증가하게 돼요
- execution runtime- 함수를 실행하는데 필요한 프로세스와 리소스를 관리
추가적으로 정리되면 더 업로드 할게요 ㅎㅎ:)
'Cloud > AWS' 카테고리의 다른 글
AWS Code Series를 이용한 자동화 구성하기 (0) | 2024.04.15 |
---|---|
AWS Cloudtrail & EventBridge를 이용해서 s3 작업에 대한 컨테이너 작업 (0) | 2023.04.05 |
AWS CodeDeploy에 대해 알아보기 (0) | 2023.04.02 |
AWS Kinesis Data Firehose를 consumer로 이용해서 AWS S3로 데이터 스트리밍 (0) | 2023.03.25 |
AWS ALB에서 경로에 대한 람다 함수 호출 (0) | 2023.03.19 |