AWS - Lambda

Neo-Renaissance·2024년 10월 22일
post-thumbnail

AWS 람다(Lambda)는 서버리스 컴퓨팅 Faas 상품이다. 서버리스란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델이다.

서버리스란?

서버가 없는 백엔드라는 의미가 아니라 우리 개발자가 직접 서버를 관리할 필요가 없도록 하는 것을 의미한다.

서버리스의 모델로는 Baas/Faas가 있다.

먼저 Baas 시스템은 Backend as a Service의 약자로 앱 개발에 있어서 필요한 다양한 기능들을 API로 제공해 줌으로서, 개발자들이 서버 개발을 하지 않고서도 필요한 기능을 쉽고 빠르게 구현 할 수 있게 해주고, 비용은 api 사용 한 만큼 나가는 원리이다.

다음으로 FaaS시스템은 Function as a Server의 약자로 말 그대로 "함수를 서비스로 제공한다"라는 의미다. FaaS는 프로젝트를 여러개의 함수로 쪼개서 (혹은 한개의 함수로 만들어서), 매우 거대하고 분산된 컴퓨팅 자원에 여러분이 준비해둔 함수를 등록하고, 이 함수들이 실행되는 횟수 (그리고 실행된 시간) 만큼 비용을 내는 방식을 말한다. 이와 같은 시스템을 사용하는 aws lambda이다.

AWS Lambda의 주요 개념 및 기능

1. 서버리스 아키텍처

서버 관리 불필요: 개발자는 서버 프로비저닝, 패치, 확장 등의 작업을 걱정할 필요 없이 코드만 작성하면 됩니다.

자동 확장성: Lambda는 요청 수에 따라 자동으로 확장되며, 사용한 만큼만 비용이 청구되는 사용량 기반 요금제를 사용합니다.

2. 동작 방식

이벤트 기반 실행: Lambda 함수는 특정 이벤트에 의해 실행됩니다. AWS의 여러 서비스(Amazon S3, DynamoDB, API Gateway, SNS 등)와 통합되어, 파일 업로드나 데이터베이스 업데이트 같은 이벤트가 발생할 때 트리거됩니다.

런타임 환경: 다양한 언어 지원(Python, Node.js, Java, Go, C#, Ruby 등)을 제공하며, 사용자는 원하는 언어로 함수를 작성할 수 있습니다. 함수는 지정된 핸들러 함수로 실행되며, 설정된 타임아웃 내에서 실행이 완료되어야 합니다.

3. 주요 구성 요소

Lambda 함수: 실행되는 코드의 논리적 단위입니다. 함수는 특정 이벤트가 발생했을 때 실행되며, 해당 이벤트 데이터는 함수로 전달됩니다.

트리거: Lambda 함수가 실행될 때를 결정하는 이벤트 소스입니다. AWS의 서비스에서 생성된 이벤트가 트리거로 동작하며, 사용자 요청(API Gateway, S3 등)을 통해 함수가 호출됩니다.

IAM 역할: Lambda는 AWS 리소스에 접근하기 위해 특정 권한이 필요합니다. 이를 위해 IAM 역할을 정의하고 Lambda 함수에 연결하여, 다른 AWS 서비스와 상호작용할 수 있게 합니다.

4. Lambda Layers

Lambda Layers는 라이브러리, 사용자 정의 코드 및 환경 설정을 여러 Lambda 함수에서 재사용할 수 있게 해주는 기능입니다. 이를 통해 중복된 코드를 피하고 공통 의존성을 쉽게 관리할 수 있습니다.

5. 제한 사항

타임아웃: Lambda 함수는 최대 15분까지 실행될 수 있으며, 이를 초과하면 실행이 중단됩니다.

메모리 및 CPU: 함수의 메모리는 128MB에서 10GB까지 설정할 수 있으며, 메모리 할당량에 비례해 CPU 성능도 증가합니다.

디스크 스토리지: 임시 디스크 저장소(/tmp)로 최대 512MB를 제공합니다.

콜드스타트: 람다는 오랫동안 사용하지 않을 경우 잠시 컴퓨팅 파워를 끄고 있는데 이로 인해서 다시 람다 컨테이너를 실행하기 위해서는 딜레이가 발생한다.

6. 장점

비용 효율성: 사용한 만큼만 비용을 지불하기 때문에 트래픽이 적은 경우 특히 유리합니다.

확장성: 서버가 자동으로 확장되어 대규모 트래픽에도 유연하게 대처할 수 있습니다.

빠른 개발: 서버 인프라 설정이 필요 없기 때문에 빠르게 코드를 작성하고 배포할 수 있습니다.

7. 사용 사례

실시간 파일 처리: S3에 업로드된 파일을 Lambda가 처리하여 이미지 리사이징, 데이터 분석 등을 수행할 수 있습니다.

API 백엔드: API Gateway와 결합하여 서버리스 백엔드를 구축할 수 있습니다.

데이터 처리: DynamoDB나 Kinesis에서 발생하는 이벤트를 기반으로 실시간 데이터 처리를 할 수 있습니다.

자동화: 주기적인 작업(Cron Jobs)을 설정하여, 이벤트가 발생하거나 특정 시간에 Lambda가 실행되도록 할 수 있습니다.

8. 모니터링 및 로깅

Lambda는 Amazon CloudWatch와 통합되어, 함수의 성능을 모니터링하고 로그를 확인할 수 있습니다. CloudWatch 로그를 통해 실행 시간, 오류, 메트릭 등을 분석할 수 있으며, 문제 해결 및 최적화에 도움을 줍니다.

출처
이미지1
이미지2
이미지3

profile
if (실패) { 다시 도전; } else { 성공; }

0개의 댓글