AWS 람다(Lambda) 비용 정책 살펴보기
#1. AWS Lambda와 서버리스 컴퓨팅
AWS Lambda는 Amazon Web Services(AWS)에서 제공하는 서버리스 컴퓨팅 서비스입니다. "서버리스"라는 용어는 사용자가 서버를 직접 관리할 필요가 없다는 것을 의미합니다. 코드를 업로드하기만 하면, AWS Lambda가 자동으로 실행, 스케일링, 모니터링 등을 처리해 줍니다. 이로 인해 개발자는 인프라 관리보다는 비즈니스 로직에 더 집중할 수 있습니다.
서버리스와 전통적인 서버 기반 모델의 차이
전통적인 서버 기반의 애플리케이션에서는 서버 프로비저닝, 로드 밸런싱, 코드 배포, 패치 관리 등 많은 작업이 필요합니다. 반면, Lambda와 같은 서버리스 모델에서는 이러한 작업들이 대부분 자동화되어 있습니다.
AWS Lambda와 EC2의 비교
AWS에서는 EC2(Elastic Compute Cloud)와 같은 가상 서버도 제공합니다. EC2는 더 많은 커스터마이징과 제어가 가능하지만, 이로 인해 관리해야 할 부분도 늘어납니다. Lambda는 이러한 관리 부담을 줄이고, 빠르게 서비스를 배포하고 실행할 수 있습니다.
다른 클라우드 서비스와의 비교
Features | AWS | Microsoft | IBM | |
Serverless Compute Offerings | Lambda | Azure Functions | Google Cloud Functions | IBM Cloud Functions |
Maximum Functions | Unlimited | Unlimited | 1,000 per project | Unlimited |
Scalability & Availability | Transparent - Automatic Scaling | Automatic Scaling | Automatic | Automatic |
Languages Supported | Python, Node.js, Java, C#, Go, Ruby, PowerShell | C#, JavaScript, F#, Python, TypeScript | Node.js, Python, Go | Node.js, Go, Swift, PHP, Java, .NET, Python, Ruby |
Concurrent Executions (동시 실행) | 1,000 concurrent executions per account per region | 10 concurrent executions per function | 400 per function | 1,000 per project |
Deployments | .ZIP to S3 or Lambda | GitHub, Visual Studio, Local git, Dropbox, Bitbucket | Google Cloud Source, .ZIP to cloud storage | GitHub, Bluemix DevOps |
Max Code Size | 50MB compressed 250MB uncompressed |
None, user pays the storage cost | 100MB compressed 500MB uncompressed |
48MB |
AWS Lambda에 대해서 좀 더 구체적으로 설명드리면 아래와 같습니다.
- Maximum Functions : AWS Lambda에서 한 계정이 생성할 수 있는 Lambda함수의 최대 개수를 의미합니다. 함수 개수에 대해 명시적인 제한은 없지만, 한 AWS 계정당 75GB의 코드 스토리지를 제공하기때문에 간접적으로 함수 개수에 영향을 미칠 수 있습니다.
- Scalability & Availability : 사용자가 별도로 설정하거나 관리할 필요 없이 자동으로 확장 및 축소되는 기능을 의미합니다. 이는 "서버리스" 아키텍처의 주요 장점 중 하나로, 개발자는 비즈니스 로직에만 집중하면 되고, 인프라의 확장은 AWS가 알아서 처리합니다.
- Languages Supported : 공식적으로 지원하는 언어는 Python, Node.js, Java, C#, Go, Ruby, PowerShell 이고 Custom Runtime을 통해 다른 언어도 지원할 수 있습니다. 예를들어 Rust, PHP 등의 언어도 사용할 수 있습니다.
- Concurrent Executions : AWS Lambda는 기본적으로 각 AWS 계정에 대해 리전별로 1,000개의 동시 실행을 제공합니다. 이는 모든 함수에 걸쳐 공유되는 리소스입니다.
- Deployments : AWS Lambda에서 코드를 배포하는 것은 여러 방법으로 가능하며, ZIP형식으로 압축하여 업로드하거나 Container 이미지를 사용하여 배포할 수도 있습니다.
- Max Code Size : AWS Lambda에서는 각 함수의 코드 및 모든 관련 의존성을 포함하여 최대 3MB를 AWS Management Console을 통해 직접 업로드할 수 있습니다. AWS CLI나 AWS SDKs, S3를 통한 배포의 경우, 이 제한은 50MB로 확장됩니다. 또한, 컨테이너 이미지를 사용하는 경우에는 최대 10GB까지 가능합니다. 코드 스토리지는 기본적으로 75GB를 제공하며 모든 함수와 버전에 걸쳐 공유됩니다.
#2. 요금 체계
AWS Lambda의 비용은 크게 세 가지 요소(요청 수, 실행 시간, 메모리 크기)에 의해 결정됩니다. AWS Lambda는 월 1백만 회의 무료 요청과 400,000 GB-초의 무료 컴퓨팅 시간을 제공합니다. 이를 통해 작은 프로젝트나 테스트 단계에서는 별도의 비용 없이 Lambda를 사용할 수 있습니다.
- 요청 수 : Lambda 함수가 호출될 때마다 요금이 발생합니다. 이는 이벤트 알림, API Gateway, AWS SDK 등을 통해 함수가 실행될 때마다 적용됩니다.
- 실행 시간 : 함수가 실행되기 시작해서 반환되거나 종료될 때까지의 시간을 기준으로 합니다. 이 시간은 최소 1ms까지 반올림됩니다.
- 메모리 크기 : 함수에 할당된 메모리 크기에 따라 요금이 달라집니다. 메모리 크기가 클수록 비용도 증가합니다.
유료 계산 예
만일 아래와 같이 사용한 경우 계산해보겠습니다.
- 한 달에 3,000,000회 실행
- 매 1초간 실행
- 512MB 메모리 (0.5GB)
무료 티어 400,000 GB-초를 제외하면
AWS Lambda의 GB-초 비용은 $0.0000166667 per GB-초입니다.
요청 비용은 한달에 3,000,000회 실행이기 때문에 $0.20 per 1M입니다.
따라서, 무료 티어를 고려한 총비용은 약 $18.93입니다.
이 계산은 기본 비용만을 고려한 것이므로, 추가적인 비용이 발생할 수 있습니다. 가격은 변동될 수 있으니, 최신 정보는 AWS 공식 웹사이트에서 확인하시는 것이 좋습니다.
#3. 추가 옵션: Provisioned Concurrency
Provisioned Concurrency는 AWS Lambda에서 제공하는 추가 옵션으로, 미리 정의된 수의 함수 인스턴스를 "온 디맨드"로 유지할 수 있습니다. 이 옵션은 람다 함수의 "콜드 스타트"를 줄이는 데 도움이 됩니다.
작동 원리
- 미리 준비: 설정한 수의 인스턴스를 미리 "온 디맨드" 상태로 만듭니다.
- 빠른 응답: 이렇게 미리 준비된 인스턴스는 콜드 스타트 없이 즉시 실행될 수 있습니다.
- 동적 확장: 프로비전 된 동시성을 초과하는 추가 요청은 일반적인 "온 디맨드" 방식으로 처리됩니다.
비용
- 프로비전된 동시성은 별도의 비용이 발생합니다.
- 이 비용은 프로비전된 인스턴스의 수와 실행 시간에 따라 달라집니다.
사용 사례
- 높은 트래픽 웹사이트: 사용자의 요청이 많은 시간대에 프로비전된 동시성을 높여 빠른 응답을 제공할 수 있습니다.
- 실시간 애플리케이션: 실시간으로 빠른 응답이 필요한 경우에 유용합니다.
- 기업용 애플리케이션: SLA(Service Level Agreement)를 충족시키기 위해 사용될 수 있습니다.
주의사항
- 프로비전된 동시성은 비용이 추가로 발생하므로, 실제 사용량과 비교하여 적절한 설정이 필요합니다.
- 설정 변경은 즉시 반영되지 않을 수 있으므로, 변경 전에 충분한 테스트가 필요합니다.
AWS Lambda의 비용은 다양한 요소에 따라 달라질 수 있습니다. 따라서, 어떤 아키텍처를 선택할 것인지, 어떤 메모리 크기를 할당할 것인지, Provisioned Concurrency를 사용할 것인지 등을 신중히 고려해야 합니다.
AWS Lambda는 서버리스 아키텍처의 대표적인 서비스로, 개발자가 서버 관리에 대한 부담 없이 비즈니스 로직에만 집중할 수 있게 해 줍니다. 이러한 특성은 빠르고 유연한 개발을 가능하게 하며, 다양한 언어 지원, 자동 확장, 높은 가용성 등 많은 장점을 제공하고 특히, AWS Lambda는 사용한 만큼만 비용을 지불하는 구조로, 매우 저렴하다고 할 수 있습니다. 예를 들어, 무료 사용량이 포함되어 있어 소규모 프로젝트에서는 별도의 비용이 발생하지 않을 수 있습니다. 추가로, Provisioned Concurrency와 같은 고급 기능을 활용하면 성능을 더욱 최적화할 수 있으며, 이 역시 비용 대비 높은 효율을 보입니다.
AWS Lambda는 비용 대비 높은 효율과 성능, 그리고 다양한 기능을 제공하여 다양한 애플리케이션과 서비스에 적용하기 매우 적합한 설루션이라 생각이 됩니다.
'Tech & Development > AWS' 카테고리의 다른 글
AWS SageMaker 노트북 시작하기 (7) | 2024.08.17 |
---|---|
AWS CLI 구성: 자격 증명 파일과 환경 변수 설정 가이드 (1) | 2024.08.17 |
AWS CLI로 클라우드 관리 자동화하기: 설치 가이드 (0) | 2024.08.17 |
댓글
이 글 공유하기
다른 글
-
AWS SageMaker 노트북 시작하기
AWS SageMaker 노트북 시작하기
2024.08.17 -
AWS CLI 구성: 자격 증명 파일과 환경 변수 설정 가이드
AWS CLI 구성: 자격 증명 파일과 환경 변수 설정 가이드
2024.08.17 -
AWS CLI로 클라우드 관리 자동화하기: 설치 가이드
AWS CLI로 클라우드 관리 자동화하기: 설치 가이드
2024.08.17