AWS

[AWS] Lambda 함수란?

효진인데요 2024. 1. 19. 21:22

 

 

1. Lambda란?

 

AWS에서 제공하는 서버리스 컴퓨팅 플랫폼

 

서버리스? (Serverless Computing)

서버가 없다는 뜻? >> ❌
개발자 입장에서 서버에 대해 신경 쓸 필요가 없다 >> ⭕

즉, 개발을 할 떄 서버가 잘 돌아가고 있는지, 
사양이 적당한지 등을 신경 쓸 필요 없이
코드와 비즈니스 로직 개발에만 집중할 수 있도록 해줌.

이렇게 AWS에서 서버리스 컴퓨팅을 지원해 주는 대신, 사용한 컴퓨팅 시간, 용량에 대해 비용을 지불하게 된다.

 

 

 

2. Lambda 장단점

 

1) 장점

  • 비용 절감 
    • Lambda로 함수를 만들면 함수 호출시에만 실행되어, 서버가 항상 켜져 있을 필요 X
    • 람다 함수의 요청 수, 코드 실행 시간에 따라 요금이 부과
  • 인프라 운영 관리에 대한 부감 절감
    • 앞서 말했던 것과 같이, 서버 자체의 성능, 보안 등의 관리를 AWS에서 관리
    • 서버 관리의 필요성이 사라져 운영 관리에 대한 부감 절감 가능

  • 빠른 개발과 배포
    • AWS 자체적으로 제공하는 기능 중 API Gateway 등의 기능을 통해 API 연동이 간편
    • 함수 수정 후에도 배포하는 방법이 간편

 

2) 단점

  • 리소스 제한
    • 하나의 함수가 한 번 호출될 때 기준으로 사용 가능한 메모리 (최대 10GB), 처리시간 (최대 15분) 제한이 존재
    • 서버를 직접 가동하여 돌리는 것보다는 스펙이 떨어지게 됨

  • 상태 비저장
    • 함수가 호출되면 새로운 컨테이너를 띄우는 방식 >> 별도의 상태 저장 X
    • 예를 들어 DB에 연결이 필요한 함수의 경우, connection을 유지하는 것이 아닌, 호출될 때마다 새로 connection이 실행된다는 의미

  • ColdStart
    • 리소스의 효율적인 사용을 위해 일정 시간 사용하지 않을 시 컴퓨팅 파워를 종료
    • 즉, 함수를 실행하게 되면 컨테이너를 띄우기 위해 서버가 실행되고, 실행 환경을 구성하기 위한 시간 동안 딜레이가 발생

 

 

3. Lambda를 사용하면 좋은 환경

 

  • 서버를 띄우지 않고 간단한 코드를 실행시키고 싶은 경우
  • 특정 기간 또는 특정 주기로 코드를 실행시키는 경우
  • 트리거가 실행될 때에만 코드를 실행시키려고 하는 경우

 

 

4. Lambda 생성 및 사용

 

✏️ 함수 생성

 

Lambda 콘솔에 접속한 뒤, 우측 상단 함수 생성 버튼을 누른다.

 

 

함수를 생성하는 화면이다.

함수 생성 옵션은 세가지가 존재한다.

  • 새로 작성 : 말 그래도 새로 함수를 구현하는 것
  • 블루프린트 : AWS에서 제공하는 기능을 템플릿처럼 사용하여 커스터마이징하여 사용
  • 컨테이너 이미지 : Docker 컨테이너용 이미지
  • 서버리스 앱 리포지토리 찾아보기 : 공유되어있는 간단한 서비스 아키텍처를 가져와서 사용

 

우선 새로 작성으로 선택한 뒤, 함수 이름과 런타임, 권한을 설정해 준다.

런타임은 어떤 언어로 작성할 지에 대한 옵션인데, Java, Python, Node 등 지원하는 언어와 버전이 다양하다.

권한에 대해서는 새로 IAM 권한을 생성하거나, 기존에 설정되어 있는 권한을 부여해 줄 수 있다.

 

 

 

출처:https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/getting-started.html

 

생성이 완료되면 기본적으로 선택한 런타임에 대한 코드가 작성된다.

 

 

✏️ 함수 코드 이해

 

Lambda 핸들러

  • 생성된 함수를 확인해보면 handler라는 Node.js 함수가 포함
  • handler 함수는 항상 코드의 진입점
  • 즉, 함수가 호출되면 Lambda에서는 handler를 찾아 해당 메서드를 실행
  • handler 함수는 event, context 두가지 인수 사용

Lambda 이벤트 객체 

  • handler 함수의 첫번째 객체
  • 이벤트 객체는 함수가 처리할 데이터가 포함된 JSON 형식의 문서

Lambda 컨텍스트 객체 

  • handler 함수의 두번째 객체
  • Lambda는 컨텍스트 객체를 함수에 자동으로 전달
  • 함수 간접 호출과 실행 환경에 관한 정보 포함

 

 

 

이를 이제 입맛에 맞게 함수를 작성해 주면 된다.

 

 

 


https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/getting-started.html

 

Lambda 시작하기 - AWS Lambda

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

728x90

'AWS' 카테고리의 다른 글

[AWS] SAM Deployment Guide  (0) 2024.02.02
[AWS] Lambda 모듈 사용법 (cannot find module error)  (0) 2024.01.29
[AWS] API Gateway란?  (0) 2024.01.24