

# SQS 이벤트 소스 매핑에 대한 규모 조정 동작 구성
<a name="services-sqs-scaling"></a>

최대 동시성 설정을 통해 또는 프로비저닝 모드를 활성화하여 Amazon SQS 이벤트 소스 매핑의 규모 조정 동작을 제어할 수 있습니다. 둘을 함께 사용할 수는 없습니다.

기본적으로 Lambda는 메시지 볼륨을 기반으로 이벤트 폴러의 규모를 자동으로 조정합니다. 프로비저닝 모드를 활성화하면 예상 트래픽 패턴을 처리할 준비 상태가 유지되는 최소 및 최대 전용 폴링 리소스 수를 할당합니다. 이렇게 하면 다음 2가지 방법으로 이벤트 소스 매핑의 성능을 최적화할 수 있습니다.
+ 표준 모드(기본값): Lambda는 소수의 폴러로 시작하여 워크로드에 따라 스케일 업하거나 스케일 다운하여 스케일을 자동으로 관리합니다.
+ 프로비저닝 모드: 최소 및 최대 제한을 사용하여 전용 폴링 리소스를 구성하면서 규모 조정 속도를 3배 높이고 처리 용량을 최대 16배 높일 수 있습니다.

표준 대개열의 경우 Lambda는 [긴 폴링](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html#sqs-long-polling)을 사용하여 대기열이 활성화될 때까지 대기열을 폴링합니다. 메시지를 사용할 수 있는 경우 Lambda는 함수를 동시에 5번 호출하여 한 번에 5개의 배치를 처리하기 시작합니다. 메시지를 계속 사용할 수 있는 경우 Lambda는 배치를 읽는 프로세스의 수를 분당 최대 300개의 추가 동시 간접 호출까지 증가시킵니다. 이벤트 소스 매핑으로 동시에 처리할 수 있는 최대 간접 호출 수는 1,250개입니다. 트래픽이 적으면 Lambda는 처리 규모를 5개의 동시 간접 호출로 다시 조정하고 동시 간접 호출을 2개까지 최적화하여 Amazon SQS 직접 호출과 해당 비용을 줄일 수 있습니다. 그러나 최대 동시성 설정을 활성화한 경우에는 이 최적화를 사용할 수 없습니다.

FIFO 대기열의 경우, Lambda는 메시지를 수신하는 순서대로 함수에 메시지를 보냅니다. FIFO 대기열에 메시지를 전송할 때 [메시지 그룹 ID](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagegroupid-property.html)를 지정합니다. Amazon SQS는 동일한 그룹의 메시지가 순서대로 Lambda에 전송되도록 합니다. Lambda가 메시지를 배치로 읽을 때 각 배치에는 둘 이상의 메시지 그룹의 메시지가 포함될 수 있지만 메시지 순서는 그대로 유지됩니다. 함수가 오류를 반환하면 함수는 Lambda가 동일한 그룹에서 추가 메시지를 수신하기 전에 영향을 받는 메시지에 대해 모든 재시도를 시도합니다.

프로비저닝 모드를 사용할 때 각 이벤트 폴러는 최대 1MB/초의 처리량, 최대 10개의 동시 간접 호출 또는 초당 최대 10개의 Amazon SQS 폴링 API 직접 호출을 처리할 수 있습니다. Lambda는 구성된 최소 및 최대 이벤트 폴러 수를 조정하여 분당 최대 1,000개의 동시성을 빠르게 추가하면서 Amazon SQS 이벤트를 일관적이면서 지연 시간이 짧은 방식으로 처리합니다. 프로비저닝된 모드를 사용하면 추가 비용이 발생합니다. 요금에 대한 자세한 내용은 [AWS Lambda 요금](https://aws.amazon.com/lambda/pricing/)을 참조하세요. 각 이벤트 폴러는 SQS 대기열에 초당 최대 10개의 폴링을 사용하는 [긴 폴링](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)을 사용하므로 SQS API 요청 비용이 발생합니다. 자세한 내용은 [Amazon SQS 요금](https://aws.amazon.com/sqs/pricing/ )을 참조하세요. 이러한 옵션은 함께 사용할 수 없으므로 최대 동시성 설정을 사용하는 대신 최소 및 최대 이벤트 폴러 설정을 통해 조정 및 동시성을 제어합니다.

**참고**  
최대 동시성 설정과 프로비저닝 모드를 동시에 사용할 수는 없습니다. 프로비저닝 모드가 활성화되면 최소 및 최대 이벤트 폴러 수를 통해 Amazon SQS 이벤트 소스 매핑의 조정 및 동시성을 제어할 수 있습니다.

## Amazon SQS 이벤트 소스의 최대 동시성 구성
<a name="events-sqs-max-concurrency"></a>

최대 동시성 설정을 사용하여 SQS 이벤트 소스의 규모 조정 동작을 제어할 수 있습니다. 최대 동시성은 프로비저닝 모드가 활성화된 상태에서 사용할 수 없습니다. 최대 동시성 설정은 Amazon SQS 이벤트 소스가 간접 호출할 수 있는 함수의 동시 인스턴스 수를 제한합니다. 최대 동시성은 이벤트 소스 수준 설정입니다. 여러 Amazon SQS 이벤트 소스가 하나의 함수에 매핑되어 있는 경우, 각 이벤트 소스마다 별도의 최대 동시성 설정이 있을 수 있습니다. 최대 동시성을 사용하여 단일 대기열이 함수의 [예약된 동시성](configuration-concurrency.md) 전체를 사용하거나 [계정의 나머지 동시성 할당량](gettingstarted-limits.md)을 사용하지 못하도록 할 수 있습니다. Amazon SQS 이벤트 소스에 대해 최대 동시성을 구성하는 데는 요금이 부과되지 않습니다.

중요한 것은 최대 동시성과 예약된 동시성은 독립된 두 설정이라는 것입니다. 함수의 예약된 동시성보다 큰 최대 동시성을 설정하지 마세요. 최대 동시성을 구성한 경우, 함수의 예약된 동시성이 함수의 모든 Amazon SQS 이벤트 소스에 대한 총 최대 동시성보다 크거나 같은지 확인합니다. 그렇지 않으면 Lambda가 메시지를 제한할 수도 있습니다.

계정의 동시 실행 할당량이 기본값인 1,000으로 설정된 경우, 최대 동시성을 지정하지 않는 한 Amazon SQS 이벤트 소스 매핑은 함수 인스턴스를 이 값까지 간접 호출하도록 확장할 수 있습니다.

계정의 기본 동시성 할당량이 증가하면 Lambda가 새 할당량까지 동시 함수 인스턴스를 간접 호출하지 못할 수 있습니다. 기본적으로 Lambda는 Amazon SQS 이벤트 소스 매핑을 위해 최대 1,250개의 동시 함수 인스턴스를 간접 호출하도록 확장할 수 있습니다. 사용 사례에 충분하지 않은 경우 AWS Support에 문의하여 계정의 Amazon SQS 이벤트 소스 매핑 동시성 증가에 대해 논의하세요.

**참고**  
FIFO 대기열의 경우 동시 호출은 [메시지 그룹 ID](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagegroupid-property.html)(`messageGroupId`) 또는 최대 동시성 설정 중 더 낮은 값으로 제한됩니다. 예를 들어, 메시지 그룹 ID가 6개이고 최대 동시성이 10으로 설정된 경우 함수는 최대 6개의 동시 호출을 가질 수 있습니다.

신규 및 기존 Amazon SQS 이벤트 소스 매핑에 대해 최대 동시성을 구성할 수 있습니다.

**Lambda 콘솔을 사용하여 최대 동시성 구성**

1. Lambda 콘솔의 [함수 페이지](https://console.aws.amazon.com/lambda/home#/functions)를 엽니다.

1. 함수의 이름을 선택합니다.

1. **Function overview**(함수 개요)에서 **SQS**를 선택합니다. 그러면 **Configuration**(구성) 탭이 열립니다.

1. Amazon SQS 트리거를 선택하고 **Edit**(편집)를 선택합니다.

1. **Maximum concurrency**(최대 동시성)에 2에서 1,000 사이의 숫자를 입력합니다. 최대 동시성을 해제하려면 상자를 비워 둡니다.

1. **저장**을 선택합니다.

**AWS Command Line Interface(AWS CLI)를 사용하여 최대 동시성 구성**  
`--scaling-config` 옵션과 함께 [update-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-event-source-mapping.html) 명령을 사용합니다. 예제:

```
aws lambda update-event-source-mapping \
    --uuid {{"a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"}} \
    --scaling-config {{'{"MaximumConcurrency":5}'}}
```

최대 동시성을 해제하려면 `--scaling-config`에 빈 값을 입력합니다.

```
aws lambda update-event-source-mapping \
    --uuid {{"a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"}} \
    --scaling-config {{"{}"}}
```

**Lambda API를 사용하여 최대 동시성 구성**  
[ScalingConfig](https://docs.aws.amazon.com/lambda/latest/api/API_ScalingConfig.html) 객체와 함께 [CreateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_CreateEventSourceMapping.html) 또는 [UpdateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateEventSourceMapping.html) 작업을 사용합니다.