함수에 대해 예약된 동시성 구성 - AWS Lambda

함수에 대해 예약된 동시성 구성

Lambda에서 동시성은 함수가 동시에 처리하는 전송 중인 요청의 수입니다. 두 가지 유형의 동시성 제어를 사용할 수 있습니다.

  • 예약된 동시성 - 함수에 할당된 최대 동시 인스턴스 수를 나타냅니다. 한 함수가 동시성을 예약하면 다른 함수는 해당 동시성을 사용할 수 없습니다. 예약된 동시성은 가장 중요한 함수가 수신 요청을 처리하기에 충분한 동시성을 항상 확보하도록 하는 데 유용합니다. 함수에 예약된 동시성을 구성하는 경우 추가 요금이 부과되지 않습니다.

  • 프로비저닝된 동시성 - 함수에 할당된 사전 초기화된 실행 환경의 수입니다. 이러한 실행 환경은 수신 함수 요청에 즉시 응답할 수 있도록 준비되어 있습니다. 프로비저닝된 동시성은 함수에 대해 콜드 스타트 지연 시간을 줄이는 데 유용합니다. 프로비저닝된 동시성을 구성하는 경우 AWS 계정에 추가 요금이 부과됩니다.

이 주제에서는 예약된 동시성을 관리하고 구성하는 방법에 대해 자세히 설명합니다. 이 두 가지 유형의 동시성 제어에 대한 개념적 개요는 예약된 동시성 및 프로비저닝된 동시성을 참조하세요. 프로비저닝된 동시성 구성에 대한 자세한 내용은 함수에 대해 프로비저닝된 동시성 구성 섹션을 참조하세요.

참고

Amazon MQ 이벤트 소스 매핑에 연결된 Lambda 함수는 기본 최대 동시성을 지원합니다. Apache Active MQ의 경우 최대 동시 인스턴스의 수는 5입니다. Rabbit MQ의 경우 최대 동시 인스턴스의 수는 1입니다. 함수에 예약 또는 프로비저닝된 동시성을 설정해도 이 한도는 변경되지 않습니다. Amazon MQ를 사용할 때 기본 최대 동시성 증가를 요청하려면 AWS Support에 문의하십시오.

예약된 동시성 구성

Lambda 콘솔 또는 Lambda API를 사용하여 함수에 대해 예약된 동시성 설정을 구성할 수 있습니다.

함수에 대해 동시성 예약(콘솔)
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 동시성을 예약하려는 함수를 선택합니다.

  3. 구성(Configuration)을 선택한 다음 동시성(Concurrency)을 선택합니다.

  4. 동시성에서 편집을 선택합니다.

  5. 동시성 예약을 선택합니다. 함수에 예약할 동시성의 크기를 입력합니다.

  6. Save(저장)를 선택합니다.

예약되지 않은 계정 동시성 값에서 100을 뺀 값까지 예약할 수 있습니다. 나머지 100단위의 동시성은 예약된 동시성을 사용하지 않는 함수용입니다. 예를 들어, 계정의 동시성 한도가 1,000인 경우 1,000단위의 동시성을 모두 단일 함수에 예약할 수 없습니다.

동시성을 너무 많이 예약하려고 하면 오류가 발생합니다.

함수에 대해 동시성을 예약하면 다른 함수가 사용할 수 있는 동시성 풀에 영향이 있습니다. 예를 들어 function-a에 대해 100단위의 동시성을 예약하는 경우 function-a가 예약된 동시성 100단위를 모두 사용하지 않더라도 계정의 다른 함수는 나머지 900단위의 동시성을 공유해야 합니다.

함수를 의도적으로 제한하려면 예약된 동시성을 0으로 설정합니다. 이렇게 하면 제한을 제거할 때까지 함수가 이벤트를 처리하지 않습니다.

Lambda API를 사용하여 예약된 동시성을 구성하려면 다음 API 작업을 사용합니다.

예를 들어, AWS Command Line Interface(CLI)를 사용하여 예약된 동시성을 구성하려면 put-function-concurrency 명령을 사용합니다. 다음 명령은 my-function이라는 함수에 대해 동시성 100단위를 예약합니다.

aws lambda put-function-concurrency --function-name my-function \ --reserved-concurrent-executions 100

그러면 다음과 같은 결과가 표시됩니다.

{ "ReservedConcurrentExecutions": 100 }

함수에 필요한 예약된 동시성 정확히 예측

함수가 현재 트래픽을 처리하고 있는 경우 CloudWatch 지표를 사용하여 해당 함수의 동시성 지표를 손쉽게 확인할 수 있습니다. 구체적으로, ConcurrentExecutions 지표는 계정의 각 함수에 대한 동시 호출 수를 보여줍니다.

시간 경과에 따른 함수의 동시성을 보여주는 그래프.

이전 그래프는 이 함수가 주어진 시간에 평균 5~10개의 동시 요청을 처리하고 보통 하루에 최대 20개의 요청을 처리함을 보여줍니다. 계정에 다른 함수가 많이 있다고 가정해 보겠습니다. 이 함수가 애플리케이션에 중요하고 요청을 삭제하지 않으려면 예약된 동시성 설정으로 20 이상의 숫자를 사용합니다.

또는 다음 수식을 사용하여 동시성을 계산할 수도 있습니다.

Concurrency = (average requests per second) * (average request duration in seconds)

초당 평균 요청과 초 단위의 평균 요청 시간을 곱하면 예약해야 하는 동시성 양을 대략적으로 예측할 수 있습니다. Invocation 지표를 사용하여 초당 평균 요청 수를 추정하고 Duration 지표를 사용하여 평균 요청 지속 시간을 초 단위로 추정할 수 있습니다. 자세한 내용은 Lambda 함수에 대한 지표 보기 섹션을 참조하세요.

업스트림 및 다운스트림 처리량 제한 사항도 잘 알고 있어야 합니다. Lambda 함수는 로드에 따라 원활하게 규모를 조정할 수 있지만 업스트림 및 다운스트림 종속성의 처리량 용량이 동일하지 않을 수 있습니다. 함수의 규모 조정 가능 범위를 제한해야 하는 경우, 함수에서 예약된 동시성을 구성합니다.