안녕하세요 BTC95입니다.
오늘은 AWS Lambda에 대해서 알아보겠습니다.
AWS Lambda
AWS Lambda란?
AWS Lambda는 아마존 웹 서비스(Amazon Web Services, AWS)에서 제공하는 이벤트 기반 서버리스 컴퓨팅 서비스입니다. Lambda를 사용하면 코드를 실행할 필요 없이 서버 관리 없이 애플리케이션 또는 백엔드 서비스를 개발할 수 있습니다.
AWS Lambda는 특정 이벤트(예: 파일 업로드, 데이터베이스 변경, HTTP 요청 등)가 발생할 때 실행되는 함수를 작성하고 실행할 수 있습니다. 개발자는 이벤트에 대한 응답으로 실행될 코드를 작성하고, Lambda는 이벤트가 발생할 때 코드를 자동으로 실행하고 해당 이벤트에 대한 응답을 반환합니다.
Lambda 함수는 일반적으로 작고 독립적인 단위로 작성됩니다. 각 함수는 특정 이벤트 유형에 대한 응답으로 실행되며, 필요한 경우에만 확장되어 여러 번 동시에 실행될 수 있습니다. 이는 애플리케이션을 효율적으로 처리하면서도 불필요한 서버 리소스를 낭비하지 않도록 도와줍니다.
AWS Lambda는 다양한 프로그래밍 언어(예: Python, Node.js, Java, C#, Go 등)를 지원하며, 코드를 개발하고 배포하기 위한 간단한 인터페이스와 도구를 제공합니다. 또한 Lambda 함수는 다른 AWS 서비스와 통합하기 쉽습니다. 예를 들어, Amazon S3, Amazon DynamoDB, Amazon API Gateway, Amazon SNS 등과 같은 서비스와 함께 사용하여 서버리스 애플리케이션을 구축할 수 있습니다.
AWS Lambda를 사용하면 서버 프로비저닝, 관리, 확장 등에 대한 부담을 줄이고 개발자는 코드 작성과 비즈니스 로직에 집중할 수 있습니다. 또한 사용한 컴퓨팅 시간에 따라 비용을 지불하므로 필요한 만큼의 리소스만 사용하여 비용 효율적인 애플리케이션을 구축할 수 있습니다.
[주요 기능]
1) 이벤트 기반 실행: Lambda 함수는 특정 이벤트가 발생할 때 실행됩니다. 예를 들어, Amazon S3에 파일이 업로드되면 Lambda 함수를 실행할 수 있습니다. 이벤트는 AWS 서비스(예: S3, DynamoDB, API Gateway)나 사용자 정의 이벤트를 통해 트리거될 수 있습니다.
2) 서버리스 아키텍처: Lambda는 서버 관리 없이 코드를 실행하는 서버리스 컴퓨팅 모델을 따릅니다. 개발자는 서버 관리, 확장, 운영에 대해 걱정할 필요가 없습니다. Lambda는 필요한 컴퓨팅 리소스를 자동으로 관리하며, 함수 실행이 끝나면 자원을 해제합니다.
3) 다양한 프로그래밍 언어 지원: Lambda 함수는 여러 프로그래밍 언어(예: Python, Node.js, Java, C#, Go)를 지원합니다. 개발자는 선호하는 언어로 함수를 작성할 수 있습니다.
4) 자동 확장: Lambda 함수는 필요에 따라 자동으로 확장됩니다. 함수의 요청 수가 증가하면 Lambda는 병렬로 함수를 실행하여 처리할 수 있도록 확장합니다. 이는 애플리케이션의 부하에 따라 자원을 효율적으로 사용하며, 고가용성을 제공합니다.
5) 간단한 배포 및 관리: Lambda 함수를 개발하고 배포하는 과정이 간단합니다. AWS Management Console, AWS CLI(Command Line Interface), AWS SDK 등 다양한 도구를 사용하여 함수를 만들고 업로드할 수 있습니다. 또한 함수의 버전 관리, 환경 변수 설정, 로깅 및 모니터링 등의 관리 기능도 제공됩니다.
6) 서비스 간 통합: Lambda 함수는 다른 AWS 서비스와 쉽게 통합할 수 있습니다. 예를 들어, Amazon S3, Amazon DynamoDB, Amazon API Gateway, Amazon SNS 등과 함께 사용하여 데이터 처리, 웹 애플리케이션 개발, 알림 서비스 등을 구축할 수 있습니다.
7) 비용 효율성: Lambda는 사용한 컴퓨팅 시간에 대해서만 과금됩니다. 함수가 실행되는 동안만 컴퓨팅 리소스를 사용하므로 비용을 효율적으로 관리할 수 있습니다. 또한 함수의 스케일링이 자동으로 처리되므로 필요한 만큼의 리소스만 사용하게 됩니다.
[사용 사례]
1) 이벤트 기반 데이터 처리: Lambda 함수를 사용하여 이벤트 기반 데이터 처리를 수행할 수 있습니다. 예를 들어, Amazon S3에 파일이 업로드되면 Lambda 함수를 트리거하여 해당 파일을 읽고 처리하는 작업을 수행할 수 있습니다. 데이터의 변환, 유효성 검사, 데이터베이스 업데이트 등을 수행할 수 있습니다.
2) 웹 애플리케이션 백엔드: Lambda 함수는 서버리스 아키텍처에서 웹 애플리케이션의 백엔드로 사용될 수 있습니다. API Gateway와 함께 사용하여 HTTP 요청을 처리하고 데이터베이스에 액세스하거나 비즈니스 로직을 실행할 수 있습니다. 이를 통해 확장 가능하고 비용 효율적인 웹 애플리케이션을 구축할 수 있습니다.
3) 데이터 파이프라인과 ETL: Lambda 함수는 데이터 파이프라인과 ETL(Extract, Transform, Load) 작업에 사용될 수 있습니다. 다양한 소스에서 데이터를 추출하고, 변환하여 원하는 형식으로 가공한 다음, 다른 시스템이나 저장소로 로드하는 작업을 자동화할 수 있습니다.
4) 실시간 데이터 스트리밍 처리: Lambda 함수는 스트리밍 데이터 처리에 유용합니다. Amazon Kinesis나 Apache Kafka와 같은 스트리밍 플랫폼과 통합하여 실시간으로 데이터를 처리하고 분석할 수 있습니다. 이를 통해 실시간 대시보드, 사건 감지, 로그 분석 등의 기능을 구현할 수 있습니다.
5) 백그라운드 작업 및 스케줄링: Lambda 함수를 사용하여 주기적인 백그라운드 작업이나 스케줄링된 작업을 수행할 수 있습니다. 예를 들어, 정기적으로 데이터베이스 백업, 이메일 발송, 자동화된 작업 수행 등을 Lambda 함수로 처리할 수 있습니다.
[함수 유형]
1) 요청-응답(Request-Response) 함수: 이 유형의 함수는 요청을 받아들이고 응답을 반환하는 전형적인 형태의 함수입니다. 요청을 처리하고 결과를 반환하는데 사용됩니다. 예를 들어, 웹 애플리케이션의 API 엔드포인트로 사용될 수 있습니다.
2) 이벤트-드리븐(Event-Driven) 함수: 이 유형의 함수는 특정 이벤트에 의해 트리거되는 함수입니다. 예를 들어, Amazon S3에 파일이 업로드되거나, 데이터베이스의 특정 항목이 변경될 때 실행될 수 있습니다. 이벤트가 발생하면 함수가 실행되고 이벤트를 처리하며, 필요한 경우에는 응답을 반환할 수도 있습니다.
3) 스트림(Stream) 함수: 이 유형의 함수는 스트리밍 데이터를 처리하는 함수입니다. 주로 Amazon Kinesis나 Apache Kafka와 같은 스트리밍 플랫폼과 통합하여 실시간 데이터 처리 작업을 수행합니다. 스트림에서 들어오는 이벤트를 처리하고 결과를 반환할 수 있습니다.
4) 배치(Batch) 함수: 이 유형의 함수는 대량의 데이터를 한 번에 처리하는 배치 작업에 사용됩니다. 예를 들어, 데이터 웨어하우스 로드, 대용량 데이터 변환 등에 활용될 수 있습니다. 배치 함수는 입력 데이터를 한 번에 가져와서 처리하고 결과를 반환합니다.
이러한 유형의 함수는 AWS Lambda의 다양한 사용 사례에 맞게 선택하여 사용할 수 있습니다.
각 함수 유형은 특정 시나리오에 적합한 동작 방식과 특성을 가지고 있습니다.
감사합니다.
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] Athena (0) | 2023.05.28 |
---|---|
cloudwatch logs를 s3로 전송하는 방법 (0) | 2023.05.26 |
[AWS] MSK (Kafka) (0) | 2023.05.26 |
[AWS] AWS Secrets Manager와 KMS의 차이 (0) | 2023.05.25 |
[AWS] S3 스토리지 클래스 & 생명주기 (0) | 2023.05.24 |
댓글