[AWS] Lambda

상트리버·2023년 1월 25일
0

AWS

목록 보기
3/4

1. AWS Lambda란?

AWS 람다(Lambda)는 서버리스 컴퓨팅 FaaS 상품이다.

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

즉, 클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지 관리 등을 대신 처리해주기 때문에, 개발자는 조금 더 비즈니스 로직 작성에만 집중할 수 있게 된다.

다시 본론으로 돌아와, AWS 람다는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하게 해주는 서버리스 컴퓨팅 서비스로서 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행 가능하다.
사용자는 람다에다가 원하는 함수를 작성하고, 필요할 때 그 함수를 사용할 수 있다.
또한 다른 AWS 서비스들과 연동이 용이하다는 특징이 있다.

예를들어 이미지를 S3에서 읽어올 때, 람다 함수를 통해 필요한 크기로 Resize 하는 기능에도 사용 할 수 있다.
이처럼 다른 AWS 서비스에서 코드를 자동으로 트리거 하도록 설정하거나 웹 또는 모바일 앱에서 직접 코드를 호출할 수도 있다.
코드를 업로드만 하면 Lambda에서 높은 가용성으로 코드를 실행 및 확장하는 데 필요한 부분을 알아서 처리해주기도 한다


1-1 Lambda 장단점

Lambda 장점

1. 비용절감

필요할때만 함수가 호출되어 처리한다는 점에서 항상 서버를 켜두고 있지 않아도 되므로 비용을 절약 할 수 있다.
람다함수의 요청 수와 람다코드의 실행시간에 따라서 요금이 부과된다.

2. 인프라 운영관리 부담절감

성능이나 보안 등 서버 자체의 관리는 AWS가 알아서 해주기 떄문에 서버를 관리할 필요가 없으니 운영관리에 대한 부담이 줄어든다.
예를들어 트래픽이 증가하면 알아서 자동으로 오토스케일링이 된다.

3. 빠른 개발 배포

람다를 이용하게 되면 상당히 개발 및 배포에 대한 소요시간이 매우 짧아지게 된다.
AWS 자체에서 많은 기능을 제공해주고 있어서 API연동이 쉬우며, Serverless의 강점인 배포방법도 정말 쉬운 편이다.
그저 함수를 수정해주기만 하면 되기 때문이다.

4. 언제 Lambda를 쓰면 좋을까?

코드를 계속 실행시키기 보다는 특정한 시기에만 실행시키는 경우에 Lambda를 사용하면 유용하다.

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

Lambda 단점

1. 리소스 제한

람다는 메모리(최대 10GB), 처리시간 (최대900초, 즉 15분)으로 제한되어 있다.
즉, 하나의 함수가 한번 호출될때 AWS에서는 최대 10GB의 메모리까지 사용이 가능하며, 처리시간은 최대 15분 이라는 말이다.
아무래도 직접 서버에서 돌리는 것보다 부족한 스펙이다.

2. Stateless (상태비 저장)

람다는 함수가 호출되면 새로운 컨테이너를 띄우는 방식이기 때문에 별도의 상태를 저장하지 않는다.
이는 Lambda 함수가 이벤트에 의해 트리거 될 때마다 완전히 새로운 환경에서 호출된다는 것을 의미한다.
그래서 이전 이벤트의 실행 컨텍스트에 대한 액세스 권한이 없다보니, db connection을 유지하는 것 같은 기능은 수행하지 못한다

3. ColdStart

람다는 리소스를 효율적으로 사용하기 위해서 오랫동안 사용하지 않고 있을 경우 잠시 컴퓨팅파워를 꺼두고 있는다.
그래서 다시 사용하려고 하면 람다 컨테이너를 띄우기 위해 서버가 켜지고 실행환경을 구성하기 위해 약간의 시간이 걸린다.
즉, 요청이 와서 람다함수를 실행하게 되면 어느정도 딜레이가 발생하게 된다.

4. 동시성 제한

동시성이란 특정 시각에 함수가 제공하는 요청의 수이다.
함수가 호출되면 Lambda는 함수의 인스턴스를 할당하여 이벤트를 처리하고, 실행이 마치면, 다른요청을 처리할 수 있다.
람다는 각 리전별로 동시에 실행할 수 있는 람다함수의 개수를 최대 1000개로 제한하고 있다.

0개의 댓글