AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. 즉, AWS에서 제공하는 서버리스 컴퓨팅 서비스입니다.
* 프로비저닝이란 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말합니다. 서버 자원 프로비저닝, OS 프로비저닝, 소프트웨어 프로비저닝, 스토리지 프로비저닝, 계정 프로비저닝 등이 있고 수동으로 처리하는 "수동 프로비저닝"과 자동화 툴을 이용해 처리하는 "자동 프로비저닝"이 있습니다.
* 서버리스 컴퓨팅은 애플리케이션을 실행하기 위해 별도의 서버 셋업 없이 곧바로 코드를 실행해주는 서비스를 의미합니다.
AWS Lambda 특징
- AWS Lambda는 필요 시에만 코드를 실행하며, 하루에 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장이 가능합니다.
- 사용한 컴퓨팅 시간에 대해서만 요금을 지불하면 되고 코드가 실행되지 않을 때는 요금이 부과되지 않습니다.
- AWS Lambda에서는 사실상 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행할 수 있습니다.
- 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버 및 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 코드 모니터링 및 로깅 등 모든 컴퓨팅 리소스 관리를 수행합니다.
- AWS Lambda가 지원하는 언어중 하나로 코드를 공급하기만 하면 됩니다. 이때 런타임 사용을 통해 지원하는 여러 언어의 종류에는 Node js 런타임, Python 런타임, Ruby 런타임, Java 런타임, Go 런타임, .NET 런타임, 사용자 지정 런타임 등이 있습니다.
- AWS Lambda를 사용하여 Amazon S3 버킷 또는 Amazon DynamoDB 테이블의 데이터 변경과 같은 이벤트에 대한 응답으로 코드를 실행할 수 있습니다.
- Amazon API Gateway를 사용하여 HTTP 요청에 대한 응답으로 코드를 실행할 수도 있으며, 또는 AWS SDK를 사용하여 만든 API 호출을 통해 코드를 호출할 수 있습니다.
AWS Lambda 언제 사용해야 될까?
AWS Lambda는 AWS Lambda에서 지원되는 언어로 애플리케이션 코드를 작성하고, AWS Lambda 표준 런타임 환경 및 Lambda에서 제공된 리소스 내에서 실행할 수 있는 경우에 많은 애플리케이션 시나리오를 위한 이상적인 컴퓨팅 서비스입니다.
AWS Lambda를 사용하면 사용자는 자신의 코드에 대해서만 책임을 갖습니다. AWS Lambda는 메모리, CPU, 네트워크 및 기타 리소스의 균형을 제공하는 컴퓨팅 플릿을 관리합니다. 이는 유연성을 대신하는 것으로, 제공된 런타임에서 로그인하여 인스턴스를 컴퓨팅하거나 운영 체제를 사용자 지정할 수 없습니다. 이러한 제약 조건을 통해 AWS Lambda는 용량 프로비저닝, 플릿 상태 모니터링, 보안 패치 적용, 코드 배포, Lambda 함수 모니터링 및 로깅과 같은 운영 및 관리 작업을 수행할 수 있습니다.
자체 컴퓨팅 리소스를 관리해야 하는 경우 Amazon Web Services는 사용자의 요구를 충족하는 다른 컴퓨팅 서비스도 제공합니다.
AWS Lambda의 주요장점
- 인프라에 대한 걱정 없이 코드 실행 가능 -> NoOps 실현합니다.
- 트리거를 이용해 애플리케이션을 자동으로 확장/축소 가능합니다.
- 코드가 병렬로 실행되고 각 트리거는 개별적으로 처리되어 정확히 워크로드 규모에 맞게 조정됩니다.
- 100ms 단위로 코드가 실행되는 시간 및 코드가 트리거되는 회수를 측정하여 요금을 부과하고, 코드가 실행되지 않을 때는 요금이 부과되지 않습니다.
* 트리거를 자동을 실행되는 작업으로 생각하면 이해하시기 편합니다.
AWS Lambda 사용 사례
람다를 AWS의 다른 서비스들과 조합하여 사용하면 더 큰 시너지를 낼 수 있다는 것이 Lambda(람다)의 또 다른 장점인 것 같은데요, 이런 방법으로 람다를 이용하면 어떤 것들을 구축할 수 있는지 사용 사례를 보겠습니다.
- 실시간 파일 처리
Amazon S3를 사용하여 업로드하는 즉시 데이터를 처리하도록 AWS Lambda를 트리거할 수 있습니다. Lambda를 사용하여 실시간으로 이미지를 썸네일하고, 동영상을 트랜스코딩하고, 파일을 인덱싱하고, 로그를 처리하고, 콘텐츠를 검증하고, 데이터를 수집 및 필터링할 수 있습니다. - 실시간 스트림 처리
AWS Lambda 및 Amazon Kinesis를 사용하여 애플리케이션 활동 추적, 트랜잭션 주문 처리, 클릭 스트림 분석, 데이터 정리, 지표 생성, 로그 필터링, 인덱싱, 소셜 미디어 분석, IoT 디바이스 데이터 텔레메트리 및 측정을 위한 실시간 스트리밍 데이터를 처리할 수 있습니다. - 추출, 변환 ,로드
AWS Lambda를 사용하여 DynamoDB 테이블의 모든 데이터 변경에 대한 데이터 검증, 필터링, 정렬 또는 기타 변환 작업을 수행하고 변환된 데이터를 다른 데이터 스토어로 로드할 수 있습니다. - IoT 백엔드
AWS Lambda 및 Amazon Kinesis를 사용하여 사물 인터넷(Internet of Things, IoT) 디바이스 데이터 텔레메트리 및 분석을 위한 백엔드를 구축할 수 있습니다. - 모바일 백엔드
AWS Lambda 및 Amazon API Gateway를 사용하여 API 요청을 인증 및 처리하도록 백엔드를 구축할 수 있습니다. - Web Application
AWS Lambda를 다른 AWS 서비스와 결합하면 확장성, 백업 또는 여러 데이터 센터 중복에 필요한 별도의 관리 작업 없이 개발자가 자동으로 확장 및 축소되고 여러 데이터 센터에 걸쳐 가용성이 높은 구성에서 실행되는 강력한 웹 애플리케이션을 구축할 수 있습니다.
정리
이러한 특성과 기능을 제공하므로 Lambda를 사용하여 Amazon S3 alc Amazon DynamoDB와 같은 AWS 서비스에 대한 데이터 처리 트리거를 손쉽게 빌드하거나, Kinesis에 저장된 스트리밍 데이터를 처리하거나 AWS 규모, 성능, 보안에 따라 작동하는 자체 백엔드를 생성할 수 있습니다. 또한 이벤트에 의해 트리거 되고 CodePipeline 및 CodeBuild를 사용하여 자동으로 배포하는 함수로 구성된 서버리스 애플리케이션을 빌드할 수 있습니다.
댓글