[AWS] Lambda

Vorhandenheit ·2022년 5월 17일
0

AWS

목록 보기
9/10

LAMBDA

프로젝트 더 설정할께 없는지 알아보다가 aws Lambda라는 것에 대해 알게되었습니다.
그래서 이번에는 Lambda에 대해서 알아보겠습니다.

Lambda?

AWS 람다는 서버리스 컴퓨팅 FaaS 상품입니다.

1. Serverless

Serverless는 서버를 직접관리 할 필요가 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델을 말합니다.

aws는 서버에 하드웨어를 일일히 설치하는게 귀찮으니, 클라우드 형태로 이를 제공하는 서비스입니다.
serverless는 이제 소프트웨어적 부분을 제공하는 서비스입니다

장점

  • 서버 관리가 필요 없습니다.
  • 유연한 확장 : 애플리케이션을 활용하여 자유자자로 확장을 구현할 수 있습니다.
  • 높은 가용성 : 가용성을 위한 별도의 설계가 필요없습니다.
  • 유휴 용량에 대한 비용 : 사용하지 않는 것에 대해서 비용을 지불할 필요가 없습니다.
  • 개발자의 생산성을 높이고 운영 비용을 줄일 수 있습니다.

단점

  • 콜드 스타트(Cold-Start) : 빠른 응답이 필요한 제품의 경우 서버리스로의 전환은 부적합할 수 있습니다. 함수를 호출하기위해 컨테이너가 실행되는 대기시간이 존재하기 떄문입니다.

  • 무상태적 기능 구현 불가 : 함수들은 요청마다 새로 기동하도록 호출하기 떄문에 기동 전후의 상태를 공유할 수 없습니다. 또한 변수와 데이터의 공유가 불가능합니다.

  • 벤터 종속의 문제 : 함수가 사용할 수 있는 최대 메모리, 최대 처리 가능 시간 제약등의 제약을 서버리스 서비스 벤더가 설정하며 서버리스 사용자 및 서버리스 기반의 서비스는 이에 종속됩니다.

  • Serverless모델

(1) BaaS (Bckend as a Service)

BaaS 시스템은 앱 개발에 있어서 필요한 기능들을 API로 제공해서 개발자들이 필요한 기능을 쉽고 빠르게 구현할 수 있게 도와줍니다.
서버의 이용자가 급격하게 늘어났다면 이전에는 개발자를 불러서 추가확충해야됬다면, 알아서 확충이 됩니다. 클라우드 공급자가 백엔드 개발 환경까지 제공해주는 것입니다
그럼으로서 서버 구축기간과 비용, 관리 및 유지보수 비용을 줄일 수 있는 것입니다.

(2) FaaS (Function as a Service)

FaaS는 프로젝트를 여러개의 함수로 쪼개서, 컴퓨팅 자원에 함수를 등록하고 이 함수들이 실행되는 횟수만큼 비용을 내는 방식을 말합니다.
대표적 서비스로 AWS Lambda, MS Azure Function을 말합니다.

(3) IaaS(Infrastructure as a Service)

IaaS는 시스템에 필요한 모든 인프라 자원까지(네트워크, 스토리지, 서버) 가상화한 방식입니다.
대표적으로 AWS ec2, S3, VPC등이 있습니다.

2. AWS Lambda

(1) 모델

  • 동기식 (Synchronous) : 람다 함수 앞에다 API Gateway Endpoint를 결합시키면 url 호출시에 람다함수를 실행할 수 있습니다.
  • 비동기식 (ASynchronous) : SNS, CloudWathch, S3를 트리거로 사용한다면 란다함수를 실행할 수 있습니다.
  • 스트림 베이스 (Stream-base) : Kinesis(실시간으로 데이터 스트림을 수집, 처리, 분석해주는 서비스)나 dynamodb와도 함꼐 사용 가능합니다.

(3) 사용

aws lambda 입장

  • 함수 생성


- 새로 작성 : 처음부터 함수를 구현
- 블루 프린트 : AWS에서 제공하는 기능을 템플릿처럼 사용할 수 있습니다.
- 컨테이너 이미지 : docker 컨테이너용
- 서버리스 앱 리포지토리 찾아보기 : 공유되는 서비스 아키텍쳐를 내 환경에 가져다 사용할 수 있습니다.

	- 런타임 : 람다를 어느 프로그래밍언어로 작성할지에 대한 옵션입니다.
    노드, 파이썬등 런타임 언어를 재공합니다,
    
    
  • 권한

    람다에 어떤 권한을 부여할지 대한 옵션입니다. S3에 접근해서 파일을 가져오고 싶다면, s3에 접근할 수 있는 권한을 가지고 있어야합니다. 이는 IAM에서 역할을 부여해서 사용할 수 있습니다.

  • 함수 생성

    exports.handler 디폴트 함수를 볼 수 있습니다. 람다를 실행했을 떄 exports.handler가 실행됩니다.

Lambda함수

  • myHandler :Lambda 함수 이름
  • event : 이 Lambda를 트리거 한 이벤트에 대한 모든 정보를 포함합니다.
  • context : Lambda 함수가 실행되는 런타임에 대한 정보를 포함합니다.
  • Lambda : 함수 내부에서 모든 작업을 수행한 후에는 그에 대한 결과와 함께 callback 함수를 호출하고 이를 AWS가 HTTP 요청에 대한 응답으로 처리합니다

출처

https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-%EC%84%9C%EB%B2%84%EB%A6%AC%EC%8A%A4ServerLess-%EA%B0%9C%EB%85%90-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC-BaaS-FaaS
https://tkdev.tistory.com/57
https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-%EB%9E%8C%EB%8B%A4Lambda-%EC%8B%A4%EC%A0%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0
https://ukayzm.github.io/aws-lambda/

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글