Lambda에서의 이벤트 폴러 스케일링 모드 - AWS Lambda

Lambda에서의 이벤트 폴러 스케일링 모드

Kafka 이벤트 소스 매핑을 위한 두 가지 이벤트 폴러 스케일링 모드 중에서 선택할 수 있습니다.

온디맨드 모드(기본값)

Amazon MSK 이벤트 소스를 처음 생성하는 경우 Lambda는 기본 이벤트 폴러 수를 할당하여 Kafka 주제의 모든 파티션을 처리합니다. Lambda는 메시지 로드에 따라 이벤트 폴러 수를 자동으로 스케일 업 또는 스케일 다운합니다.

Lambda는 1분 간격으로 주제의 모든 파티션에 대한 오프셋 지연을 평가합니다. 오프셋 지연이 너무 크면 파티션은 Lambda에서 메시지를 처리할 수 있는 것보다 더 빠르게 메시지를 수신합니다. 필요한 경우 Lambda는 주제에서 이벤트 폴러를 추가하거나 제거합니다. 이벤트 폴러를 추가하거나 제거하는 이 오토 스케일링 프로세스는 평가 후 3분 이내에 수행됩니다.

대상 Lambda 함수가 스로틀링되면 Lambda는 이벤트 폴러 수를 줄입니다. 이 작업은 이벤트 폴러에서 검색하고 함수에 전송할 수 있는 메시지 수를 줄임으로써 함수의 워크로드를 줄입니다.

프로비저닝된 모드

이벤트 소스 매핑의 처리량을 미세 조정해야 하는 워크로드의 경우 프로비저닝된 모드를 사용할 수 있습니다. 프로비저닝된 모드에서는 프로비저닝된 이벤트 폴러의 양에 대한 최소 및 최대 제한을 정의합니다. 이러한 프로비저닝된 이벤트 폴러는 이벤트 소스 매핑 전용이며 응답형 오토스케일링을 통해 예상치 못한 메시지 급증을 처리할 수 있습니다. 성능 요구 사항이 엄격한 Kafka 워크로드에 대해서는 프로비저닝된 모드를 사용하는 것이 좋습니다.

Lambda에서 이벤트 폴러는 최대 5MBps의 처리량을 처리할 수 있는 컴퓨팅 장치입니다. 참조를 위해 이벤트 소스가 1MB의 평균 페이로드를 생성하고 평균 함수 지속 시간이 1초라고 가정합니다. 페이로드에서 변환(예: 필터링)이 수행되지 않는 경우 단일 폴러는 5MBps의 처리량과 5개의 동시 Lambda 간접 호출을 지원할 수 있습니다. 프로비저닝된 모드를 사용하면 추가 비용이 발생합니다. 예상 요금은 AWS Lambda 요금을 참조하세요.

참고

프로비저닝된 모드를 사용하는 경우 네트워크 구성의 일부로 AWS PrivateLink VPC 엔드포인트를 생성하거나 연결된 권한을 부여하지 않아도 됩니다.

프로비저닝된 모드에서 최소 이벤트 폴러 수(MinimumPollers)에 대해 허용되는 값의 범위는 1~200입니다. 최대 이벤트 폴러 수(MaximumPollers)에 대해 허용되는 값의 범위는 1~2,000(경계 포함)입니다. MaximumPollersMinimumPollers 이상이어야 합니다. 또한 파티션 내에서 정렬된 처리를 유지 관리하기 위해 Lambda는 주제에서 파티션 수를 MaximumPollers로 제한합니다.

최소 및 최대 이벤트 폴러에 대해 적절한 값을 선택하는 방법에 대한 자세한 내용은 프로비저닝된 모드 사용 시 모범 사례 및 고려 사항 섹션을 참조하세요.

콘솔 또는 Lambda API를 사용하여 Amazon MSK 이벤트 소스 매핑에 대한 프로비저닝된 모드를 구성할 수 있습니다.

기존 Amazon MSK 이벤트 소스 매핑에 대한 프로비저닝된 모드를 구성하는 방법(콘솔)
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 프로비저닝된 모드를 구성하려는 Amazon MSK 이벤트 소스 매핑을 사용하여 함수를 선택하세요.

  3. 구성을 선택한 다음 트리거를 선택합니다.

  4. 프로비저닝된 모드를 구성하려는 Amazon MSK 이벤트 소스 매핑을 선택하고 편집을 선택하세요.

  5. 이벤트 소스 매핑 구성에서 프로비저닝된 모드 구성을 선택하세요.

    • 최소 이벤트 폴러에 1~200의 값을 입력하세요. 값을 지정하지 않는 경우 Lambda에서는 기본값(1)을 선택합니다.

    • 최대 이벤트 폴러에 1~2,000의 값을 입력하세요 이 값은 최소 이벤트 폴러의 값 이상이어야 합니다. 값을 지정하지 않는 경우 Lambda에서는 기본값(200)을 선택합니다.

  6. 저장을 선택합니다.

EventSourceMappingConfigurationProvisionedPollerConfig 객체를 사용하여 프로그래밍 방식으로 프로비저닝된 모드를 구성할 수 있습니다. 예를 들어 다음 UpdateEventSourceMapping CLI 명령은 5의 MinimumPollers 값과 100의 MaximumPollers 값을 구성합니다.

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{"MinimumPollers": 5, "MaximumPollers": 100}'

프로비저닝된 모드를 구성한 후 ProvisionedPollers 지표를 모니터링하여 워크로드에 대한 이벤트 폴러 사용량을 관찰할 수 있습니다. 자세한 내용은 이벤트 소스 매핑 지표 섹션을 참조하세요.

프로비저닝된 모드를 비활성화하고 기본(온디맨드) 모드로 돌아가기 위해 다음 UpdateEventSourceMapping CLI 명령을 사용할 수 있습니다.

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'

프로비저닝된 모드 사용 시 모범 사례 및 고려 사항

이벤트 소스 매핑에 대한 최소 및 최대 이벤트 폴러의 최적 구성은 애플리케이션의 성능 요구 사항에 따라 달라집니다. 기본 최소 이벤트 폴러로 시작하여 성능 프로파일을 기준선으로 설정하는 것이 좋습니다. 관찰된 메시지 처리 패턴 및 원하는 성능 프로파일에 따라 구성을 조정합니다.

트래픽이 급증하고 성능 요구가 엄격한 워크로드의 경우 메시지의 갑작스러운 급증을 처리하도록 최소 이벤트 폴러를 늘립니다. 필요한 최소 이벤트 폴러를 확인하려면 초당 워크로드의 메시지 수와 평균 페이로드 크기를 고려하고 단일 이벤트 폴러의 처리량 용량(최대 5MBps)을 참조로 사용합니다.

파티션 내에서 정렬된 처리를 유지 관리하기 위해 Lambda는 최대 이벤트 폴러를 주제의 파티션 수로 제한합니다. 또한 이벤트 소스 매핑에서 조정할 수 있는 최대 이벤트 폴러는 함수의 동시성 설정에 따라 달라집니다.

프로비저닝된 모드를 활성화하는 경우 AWS PrivateLink VPC 엔드포인트 및 연결된 권한을 제거하도록 네트워크 설정을 업데이트합니다.