본문 바로가기

AWS

AWS Lambda란?

AWS Lambda란?
- AWS에서 제공하는 서버리스 컴퓨팅 플랫폼
-서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스
-용량 프로비저닝, 플릿 상태 모니터링, 보안 패치 적용, 코드 배포, Lambda 함수 모니터링 및 로깅과 같은 운영 및 관리 작업을 수행

서버리스 컴퓨팅 : 애플리케이션을 실행하기 위해 별도의 서버 셋업 없이 곧바로 코드를 실행해주는 서비스 (개발자가 서버의 존재를 신경쓸 필요가 없음)

* 프로비저닝 : 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것. 서버 자원 프로비저닝, OS 프로비저닝, 소프트웨어 프로비저닝, 스토리지 프로비저닝, 계정 프로비저닝 등이 있고 수동으로 처리하는 '수동 프로비저닝'과 자동화 툴을 이용해 처리하는 '자동 프로비저닝' 존재

 


Amazon API Gateway란?
-어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스
-API는 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직 또는 기능에 액세스할 수 있는 '정문' 역할을 수행
-실시간 양방향 통신 애플리케이션이 가능하도록 하는 RESTful API 및 WebSocket API 작성 가능
-컨테이너식 서버리스 워크로드 및 웹 애플리케이션을 지원

*구성
클라이언트 -> |API Gateway| -> |AWS Lambda| <-> DB
-클라이언트가 서버에 접속하면 API Gateway를 거친 후 AWS lambda가 실제 클라이언트의 요청을 처리하고 그 결과를 반환
-따라서, Lambda를 만든 이후 외부에서 해당 Lambda에 접근할 수 있도록 API gateway를 달아줘야 함
-AWS Lambda 자체는 '함수'로서의 역할을 수행하기 때문에, 이를 실제로 서버처럼 동작하도록 하기 위해서는 API gateway를 이용해 공인 주소를 설정

 


AWS Lambda 장점
-인프라, 서버에 대한 걱정 없이 코드 실행 가능 (NoOps 실현)
-트리거를 이용해 애플리케이션을 자동으로 확장/축소 가능
-필요 시에만 코드를 실행하며, 하루에 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장
-코드가 병렬로 실행되고 각 트리거는 개별적으로 처리되어 정확히 워크로드 규모에 맞게 조정
-100ms 단위로 코드가 실행되는 시간 및 코드가 트리거되는 회수를 측정하여 요금을 부과하고, 코드가 실행되지 않을 때는 요금이 부과되지 않음

 


AWS Lambda 단점
-코드 용량이 최대 250MB
-함수 실행 시간은 최대 15분
-처음 함수 호출시 Cold Start를 하게되고 초기 지연시간이 발생

 


핸들러
-람다함수 시작 부분
-filename.handler-method 형식으로 작성

 


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 서비스와 결합하면 확장성, 백업 또는 여러 데이터 센터 중복에 필요한 별도의 관리 작업 없이 개발자가 자동으로 확장 및 축소되고 여러 데이터 센터에 걸쳐 가용성이 높은 구성에서 실행되는 강력한 웹 애플리케이션을 구축할 수 있음.

 


AWS Lambda 및 Amazon API Gateway 사용 흐름
-AWS Lambda 콘솔을 사용하여 Lambda 함수를 생성
-API Gateway 콘솔을 사용하여 HTTP API를 생성
-API를 호출

HTTP API를 호출하면 API Gateway는 요청을 Lambda 함수로 라우팅.
Lambda는 Lambda 함수를 실행하고 API Gateway에 응답을 반환.
API Gateway 응답 반환.