AWS - Lambda란?

오송아·2021년 5월 16일
0
post-thumbnail

📌 AWS Lambda란?

  • Serverless의 주축을 담당
    기존에는 서버를 만들고 다양한 모니터링을 하고 문제점을 발생할때 해결 했어야 하지만, 서버리스의 경우 클라우드가 직접 서버를 돌려주고 생성하며 리소스들을 서버의 사용량에 따라 직접 할당해주기 때문에 문제점이 덜 발생한다. 즉, 사람의 간섭이 거의 없는 경우이다.

  • Events를 통하여 Lambda를 실행시킴
    주어 + 동사 -> 동사부분이 이벤트라고 이해하자
    즉, s3에 파일을 '업로드 한다', '삭제한다' 가 이벤트
    이런 이벤트가 발생될때 lambda가 실행된다

  • NodeJS, Python, Java, GO등 다양한 언어 지원
    이벤트가 감지됐을때 짠 코드가 실행되고, 마무리 될 때 또 다른 서비스를 불러올 수 있다. 즉, lambda는 aws 아키텍처를 구현할때 중간중간에 배치 되는 경우가 흔하다.

  • Lambda Function
    람다에서 짠 코드가 람다 함수

  • CloudWatch와 매우 밀접한 관련

비용

  • Lambda Function이 실행될때만 비용 지불
    아무일도 하지 않을 경우 비용이 들지 않는다.
  • 매달 1.000.000 함수 호출 시 무료
    그 후로는 유료

특징

  • 최대 300초(5분) 런타임 시간 허용
    초반 개발 시에는 점차 시간이 지나 대용량 데이터 처리 시 타임아웃을 접할 수도 있는데, 이 경우 람다 함수가 5분이상 돌아가게 된 경우이며, aws 요청을 해도 5분 이상 늘리는 것은 불가능함
  • 512MB의 일시적인 디스크 공간 제공 (/tmp/)
    람다함수로 인풋을 일시적인 공간에 저장할 때 코딩을 통하여 임시 저장소에 담아두었다가 꺼내올 수 있으며, 주로 데이터 프리프로세싱시 사용된다. 참고로 유스케이스에 따라 사용될 수도 있고 없을 수도 있다.
  • 최대 50MB Deployment Package 허용
    aws 콘솔에서도 코딩할 수도 있지만, 로컬에서 다수의 파일을 하나의 압축파일로 저장한 다음 aws에 업로드 해서 deployment를 통하여 사용할 수도 있다. 파일의 크기가 50mb 초과될 시 S3버켓에 업로드 한 후 람다에서 파일 경로를 지정해줘야한다.

사용 용례 - 중간 다리 역할

  1. S3 버켓에 파일을 올리는 경우 PutObject라는 이벤트 발생-> 람다함수 실행시킴 -> 람다는 데이터 변환, 불필요한 데이터 삭제 -> 람다는 데이터 베이스에 깨끗한 데이터를 업로드

  2. IoT를 통해 실시간 데이터가 들어오는 경우 topic을 통해 다양한 이벤트들을 관리, 데이터를 보내 람다 함수 호출 -> SNS 실시간 경고 줄 수 있음

실습

동시성(concurrency)
얼마나 많은 함수들을 같은 요청이 들어왔을 때 돌릴 수 있는지에 대한 설정
만약 우리가 설정해놓은 동시성보다 더 많은 함수 요청이 들어온다면 모든 함수가 정상적으로 호출 되지 않으므로 어플리케이션에 맞게 설정해줘야 한다.

람다 함수 생성

  • 새로 작성
  • 블루프린트 사용(Aws 종종 사용되는 기능들을 템플릿화 시킴)
  • 서버리스 앱은 리포지토리(공유되고 있는 간단한 서비스 아키텍처를 내 환경에다가 가져다 쓸 수 있다, 안에 람다 함수 구현되어 있음)

기본 Lambda 권한을 가진 새 역할 생성 : Lambda 함수를 사용하면서 생성되는 로그파일들이 CloudWatch로 쓰여지는 권한이 생긴다
아래에 Lambda 함수 코드 작성된다

람다 함수 테스트
람다함수에 보내고 싶은 값 보낼 수 있으며, 함수가 올바른 값 출력 할 수 있는지 테스트함

람다 함수와 CloudWatch 관계
함수가 돌아가는데 걸린 시간, 차지한 메모리를 확인할 수 있고, CloudWatch로 들어가 확인할 수도 있음. 즉, 람다 함수를 돌릴때 cloudwatch 기능을 사용하여 람다함수가 잘 돌아가는지 디버깅할 수 있다

람다 함수와 IAM 관계
람다함수 만들때 AWS에서 만들어준 역할을 사용했음
어떻게 생겼는지 확인 IAM - 역할 -> 보관해준 역할 이름과 같음

람다 함수와 S3 관계
S3 이벤트 안에 알람 추가로 전송 대상이 람다함수를 넣을 수도 있음

profile
백엔드 개발자

0개의 댓글