Skip to content

Lambda란?


Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스이다. Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 로깅 등 모든 컴퓨팅 리소스 관리를 수행한다. Lambda를 사용하면 거의 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행할 수 있다. Lambda가 지원하는 언어 중 하나로 코드를 공급하기만 하면 된다.

Lambda 함수에 코드를 구성한다. Lambda는 필요 시에만 함수를 실행하며, 일일 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장이 가능하다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되지 않는다.

Lambda API를 사용하여 Lambda 함수를 호출하거나, Lambda가 다른 AWS 서비스의 이벤트에 응답하여 함수를 실행할 수 있다. 예를 들어, Lambda를 사용하여 다음을 수행할 수 있다.

  • Amazon Simple Storage Service(Amazon S3) 및 Amazon DynamoDB와 같은 AWS 서비스를 위한 데이터 처리 트리거를 빌드할 수 있다.

  • Amazon Kinesis에 저장된 스트리밍 데이터를 처리할 수 있다.

  • AWS 규모, 성능 및 보안으로 작동하는 고유한 백엔드를 만든다.


1. Lambda는 언제 사용해야 하나요?

Lambda는 Lambda 표준 런타임 환경을 사용하고 Lambda에서 제공한 리소스 내에서 애플리케이션 코드를 실행할 수 있는 경우에 많은 애플리케이션 시나리오를 위한 이상적인 컴퓨팅 서비스이다.

Lambda를 사용하면 사용자는 자신의 코드에 대해서만 책임을 가진다. Lambda는 메모리, CPU, 네트워크 및 기타 리소스의 균형을 제공하는 컴퓨팅 플릿을 관리하여 코드를 실행한다. Lambda가 이러한 리소스를 관리하므로 컴퓨팅 인스턴스에 로그인하거나 제공된 런타임에 운영 체제를 사용자 지정할 수 없다. Lambda는 사용자를 대신하여 용량 관리, 모니터링 및 Lambda 함수 로깅을 비롯한 운영 및 관리 활동을 수행한다.

자체 컴퓨팅 리소스를 관리해야 하는 경우 AWS는 사용자의 요구를 충족하는 다른 컴퓨팅 서비스도 제공한다. 예:

  • Amazon Elastic Compute Cloud(Amazon EC2)는 선택할 수 있는 다양한 EC2 인스턴스 유형을 제공한다. 운영 체제, 네트워크 및 보안 설정, 전체 소프트웨어 스택을 사용자 지정할 수 있다. 용량을 프로비저닝하고, 플릿 상태 및 성능을 모니터링하고, 내결함성을 위해 가용 영역을 사용할 책임은 사용자에게 있다.

  • AWS Elastic Beanstalk를 사용하면 Amazon EC2에 애플리케이션을 배포하고 확장할 수 있다. 사용자는 기반 EC2 인스턴스에 대한 소유권과 완전한 제어 권한을 보유한다.


2. Lambda 기능

다음 주요 기능은 확장 가능하고 안전하며 쉽게 확장할 수 있는 Lambda 애플리케이션 프로그램을 개발하는 데 도움이 된다.

동시성 및 크기 조정 컨트롤

동시성 제한 및 프로비저닝된 동시성과 같은 동시성 및 크기 조정 제어를 사용하면 프로덕션 애플리케이션의 크기 조정 및 응답성을 세밀하게 제어할 수 있다.

컨테이너 이미지로 정의된 함수

선호하는 컨테이너 이미지 도구, 워크플로 및 종속성을 사용하여 Lambda 함수를 빌드, 테스트 및 배포할 수 있다.

코드 서명

Lambda에 대한 코드 서명은 승인된 개발자가 게시한 변경되지 않은 코드만 Lambda 함수에 배포되었는지 확인할 수 있는 신뢰 및 무결성 제어 기능을 제공한다.

Lambda 익스텐션

Lambda 익스텐션을 사용하여 Lambda 함수를 보강할 수 있다. 예를 들어 익스텐션 기능을 사용하면 Lambda를 모니터링, 가관측성, 보안 및 거버넌스를 위해 자주 사용하는 도구에 보다 쉽게 통합할 수 있다.

함수 블루프린트

함수 블루프린트는 다른 AWS 서비스 또는 서드 파티 애플리케이션을 Lambda와 함께 사용하는 방법을 보여주는 샘플 코드를 제공한다. 블루프린트에는 Node.js 및 Python 런타임에 대한 샘플 코드 및 함수 구성 사전 설정이 포함되어 있다.

데이터베이스 액세스

데이터베이스 프록시는 데이터베이스 연결 풀을 관리하고 함수에서 쿼리를 릴레이한다. 이렇게 하면 데이터베이스 연결을 소모하지 않고 높은 동시성 레벨에 도달할 수 있다.

파일 시스템 액세스

Amazon Elastic File System(Amazon EFS) 파일 시스템을 로컬 디렉터리에 마운트하도록 함수를 구성할 수 있다. Amazon EFS를 사용하면 함수 코드가 안전하고 높은 동시성으로 공유 리소스에 액세스하여 수정할 수 있다.


3. Lambda 시작하기

Lambda를 효과적으로 작업하려면 다음 도메인에 대한 코딩 경험과 전문 지식이 필요하다.

  • Linux OS 및 명령뿐만 아니라 프로세스, 스레드 및 파일 권한과 같은 개념이 필요

  • 클라우드 개념 및 IP 네트워킹 개념(프라이빗 및 퍼블릭 네트워크용)

  • IPC로서 HTTP, 대기열, 메시징, 알림 및 동시성과 같은 분산 컴퓨팅 이해

  • 보안 서비스 및 개념에 익숙함: AWS Identity and Access Management(IAM) 및 액세스 제어 원칙, AWS Key Management Service(AWS KMS) 및 퍼블릭 키 인프라

  • Lambda와 상호 작용하는 다음의 주요 서비스에 익숙함: Amazon API Gateway, Amazon S3, Amazon Simple Queue Service(Amazon SQS), DynamoDB.

  • Linux를 사용하여 EC2 인스턴스 구성

Lambda를 처음 사용하는 경우 다음 항목부터 시작하여 기본 사항을 학습하는 것이 좋다.

  1. Lambda 제품 개요를 읽고 Lambda 시작하기 페이지를 살펴본다.

  2. Lambda 콘솔을 사용하여 Lambda 함수를 만들고 테스트하려면 콘솔 기반 시작하기 연습을 시도한다. 이 연습에서는 Lambda 프로그래밍 모델 및 기타 개념에 대해 설명한다.

  3. 컨테이너 이미지 워크플로에 익숙하다면 시작하기 연습을 통해 컨테이너 이미지로 정의된 Lambda 함수를 생성한다.

AWS에서는 서버리스 애플리케이션 및 Lambda 학습을 위해 다음과 같은 리소스를 제공한다.


4. 관련 서비스

Lambda는 다른 AWS 서비스와 통합하여 사용자가 지정한 이벤트를 기반으로 함수를 호출한다. 예:

  • API Gateway를 사용하여 HTTP 요청을 Lambda 함수로 라우팅하는 웹 API에 대한 안전하고 확장 가능한 게이트웨이를 제공한다.

  • 대기열 또는 데이터 스트림을 생성하는 서비스(예: DynamoDB 및 Kinesis)의 경우, Lambda는 서비스에서 대기열 또는 데이터 스트림을 폴링하고 함수를 호출하여 수신된 데이터를 처리한다.

  • 예를 들어 객체가 생성되거나 삭제될 때 Amazon S3 객체를 처리하는 Lambda 함수를 호출하는 Amazon S3 이벤트를 정의한다.

  • Lambda 함수를 사용하여 Amazon SQS 메시지나 Amazon Simple Notification Service(Amazon SNS) 알림을 처리한다.

  • AWS Step Functions를 사용하여 상태 시스템이라는 서버리스 워크플로에 Lambda 함수를 연결한다.


5. Lambda 액세스

다음 인터페이스 중 하나를 사용하여 Lambda 함수를 생성, 호출 및 관리할 수 있다.

  • AWS 관리 콘솔 - 함수에 액세스할 수 있는 웹 인터페이스를 제공한다.

  • AWS Command Line Interface(AWS CLI) - Lambda를 포함한 다양한 AWS 서비스에서 사용되는 명령을 제공하며 Windows, macOS 및 Linux에서 지원된다.

  • AWS SDK - 언어별 API를 제공하고 서명 계산, 요청 재시도 처리 및 오류 처리와 같은 많은 연결 세부 정보를 관리한다.

  • AWS CloudFormation - Lambda 애플리케이션을 정의하는 템플릿을 만들 수 있다. AWS CloudFormation은 AWS Cloud Development Kit (AWS CDK)도 지원한다.

  • AWS Serverless Application Model(AWS SAM) - AWS 서버리스 애플리케이션을 구성하고 관리하기 위한 템플릿과 CLI를 제공한다.


6. Lambda의 요금

Lambda 함수 생성에 대한 추가 요금은 없다. 함수 실행 및 Lambda와 다른 AWS 서비스 간의 데이터 전송에 대한 요금이 부과된다. 일부 선택적 Lambda 기능(예: 프로비전된 동시성)도 요금이 발생한다. 자세한 내용은 AWS Lambda 요금을 참조한다.


References