AWS Lambda는 서버리스 컴퓨팅 서비스로, 개발자가 서버 인프라에 대해 걱정하지 않고 코드를 실행할 수 있게 해준다.
lambda의 장점
서버 관리 필요 없음: AWS Lambda를 사용하면 서버를 설정하거나 관리할 필요가 없다.
이를 통해 인프라 운영에 대한 부담을 줄이고 애플리케이션 개발에 집중할 수 있다.
자동 확장: Lambda는 트래픽 패턴에 따라 자동으로 규모를 조정한다.
코드가 동시에 수천 번 실행되어야 하는 경우에도 Lambda가 자동으로 처리한다.
고성능: Lambda는 코드를 동시에 실행하므로 응답 시간을 줄일 수 있다.
비용 효율성: AWS Lambda는 사용한 컴퓨팅 시간에 대해서만 비용을 청구한다.
코드가 실행되지 않는 경우 비용이 청구되지 않으므로, 비용 효율적이다.
이벤트 기반 실행: Lambda는 HTTP 요청에 응답하거나 AWS 서비스로부터의 이벤트를 처리하는 등 다양한 유형의 응답을 위해 트리거 될 수 있다.
통합: Lambda는 다른 AWS 서비스와 강력하게 통합되어 있어, S3 버킷에서 파일이 변경될 때마다 실행되거나, DynamoDB 테이블에 새로운 레코드가 추가될 때 실행되는 등 다양한 시나리오에서 사용될 수 있다.
보안: AWS Lambda는 기본적으로 VPC 내에서 실행되며, IAM 역할과 정책을 이용해 권한을 제어할 수 있다.
AWS Key Management Service(KMS)를 이용해 환경 변수를 암호화할 수도 있다.
개발 생산성 향상: 코드를 작성하고 즉시 업로드한 후 실행할 수 있기 때문에 개발 과정이 단순화되고, 개발 및 배포 시간이 단축된다.
이러한 이유로 인해 AWS Lambda는 웹 애플리케이션, 데이터 변환, 실시간 파일 처리 등 다양한 유형의 애플리케이션에 사용된다.
lambda의 단점
AWS Lambda는 많은 이점을 제공하지만, 그 특성상 일부 단점도 존재한다:
Cold Start: Lambda 함수가 처음 실행될 때나 일정 시간 동안 실행되지 않았을 때, "Cold Start"라는 현상이 발생한다.
이는 Lambda가 실행 환경을 초기화하는데 필요한 시간으로, 이 시간 동안에는 함수의 응답 시간이 증가한다.
실행 시간 제한: AWS Lambda 함수는 최대 15분 동안만 실행될 수 있다.
이 시간 제한으로 인해 긴 작업을 수행하기 어렵다.
리소스 제한: 각 Lambda 함수는 메모리, CPU, 디스크 공간 등 리소스에 대한 제한을 가지고 있다.
특히 메모리는 128MB에서 최대 10240MB까지 설정할 수 있다.
디버깅과 모니터링의 어려움: 서버리스 아키텍처의 특성상 전통적인 디버깅과 모니터링 방법을 적용하기 어렵다.
AWS는 이를 위한 도구를 제공하지만, 학습 곡선이 있을 수 있다.
높은 트래픽에 대한 처리: 갑작스럽게 높은 트래픽이 발생하는 경우, Lambda는 요청률 제한을 초과할 수 있다.
이 경우 일부 요청이 실패할 수 있다.
상태 유지(statefulness)의 부재: Lambda 함수는 상태를 유지하지 않는(stateless) 설계로, 함수 실행 간에 데이터를 공유하거나 유지할 수 없다.
이는 일부 애플리케이션 유형에는 적합하지 않을 수 있다.
종속성 관리: Lambda 함수에서 사용하는 외부 패키지나 라이브러리를 관리하고 배포하는 것이 복잡할 수 있다.
따라서 AWS Lambda를 사용할 때는 이러한 제한 사항과 단점을 고려하여 개발 및 배포 전략을 결정해야 한다.
그러면 lambda는 어떤 서비스에 이용되면 좋을까?
AWS Lambda는 서버리스 컴퓨팅 모델을 제공하여, 개발자가 서버 인프라를 관리하는 데 걸리는 시간과 비용을 줄일 수 있다.
이러한 특성으로 인해 Lambda는 다양한 유형의 애플리케이션과 작업에 이용될 수 있다:
실시간 파일 처리: AWS Lambda는 S3 버킷에 파일이 업로드되면 자동으로 트리거될 수 있다.
이를 이용해 업로드된 파일을 실시간으로 처리하는 작업(예: 이미지 리사이징, 로그 파일 처리 등)에 Lambda를 사용할 수 있다.
백엔드 API: AWS API Gateway와 함께 Lambda를 사용하면, 확장성 있는 백엔드 API를 쉽게 구축할 수 있다.
API Gateway가 HTTP 요청을 받아 Lambda 함수를 호출하고, Lambda는 비즈니스 로직을 처리하여 결과를 반환한다.
데이터 변환: AWS Lambda는 스트리밍 데이터를 변환하거나, 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 처리하는 등의 데이터 처리 작업에 사용될 수 있다.
실시간 스트림 처리: AWS Kinesis나 DynamoDB Streams와 같은 실시간 스트림 서비스와 Lambda를 결합하면, 실시간 데이터 스트림을 효과적으로 처리할 수 있다.
배치 작업: 주기적인 배치 작업이나 크론 작업을 수행하기 위해 AWS Lambda를 사용할 수 있다.
AWS CloudWatch를 이용해 특정 시간에 Lambda 함수를 호출하도록 설정할 수 있다.
알림: Lambda는 AWS SNS(Simple Notification Service)나 SES(Simple Email Service)와 함께 사용되어, 사용자에게 이메일 알림을 보내는 등의 작업을 수행할 수 있다.
IoT 백엔드: AWS IoT Core와 Lambda를 결합하면, IoT 디바이스에서 보내는 데이터를 처리하거나, 디바이스에 명령을 보내는 등의 작업을 수행할 수 있다.
'AWS > 용어 및 설명' 카테고리의 다른 글
PostgreSQL Amazon Aurora와 Amazon RDS 차이는 무엇인가요? (0) | 2023.08.25 |
---|---|
Amazon VPC 구성 요소들 (0) | 2023.08.03 |
RFC 1918란? (0) | 2023.08.03 |
AWS VPC IP대역에 대해 (0) | 2023.08.03 |
AWS VPC란? (0) | 2023.08.03 |