

# Kafka 이벤트 소스의 저지연 처리
<a name="with-kafka-low-latency"></a>

AWS Lambda는 100밀리초 미만의 일관된 종단 간 지연 시간이 요구되는 애플리케이션에 대해 저지연 이벤트 처리를 기본적으로 지원합니다. 이 페이지에서는 지연 시간이 짧은 워크플로를 활성화하기 위한 구성 세부 정보와 권장 사항을 제공합니다.

## 저지연 처리 활성화
<a name="enable-low-latency"></a>

Kafka 이벤트 소스 매핑에서 저지연 처리를 활성화하려면 다음과 같은 기본 구성이 필요합니다.
+ 프로비저닝된 모드를 활성화합니다. 자세한 내용은 [프로비저닝된 모드](kafka-scaling-modes.md#kafka-provisioned-mode) 섹션을 참조하세요.
+ 이벤트 소스 매핑의 `MaximumBatchingWindowInSeconds` 파라미터를 0으로 설정합니다. 자세한 내용은 [일괄 처리 동작](invocation-eventsourcemapping.md#invocation-eventsourcemapping-batching) 섹션을 참조하세요.

## 지연 시간이 짧은 Kafka ESM 미세 조정
<a name="recommendations-low-latency"></a>

짧은 지연 시간을 위해 Kafka 이벤트 소스 매핑을 최적화하려면 다음 권장 사항을 고려하세요.

### 프로비저닝 모드 구성
<a name="recommendations-pollers"></a>

Kafka 이벤트 소스 매핑을 위해 프로비저닝 모드에서 Lambda를 사용하면 **이벤트 폴러**라는 리소스의 최소 및 최대 개수를 구성하여 이벤트 소스 매핑의 처리량을 미세 조정할 수 있습니다. 이벤트 폴러(또는 **폴러**)는 프로비저닝 모드에서 이벤트 소스 매핑을 뒷받침하고 최대 5MB/s의 처리량을 할당하는 컴퓨팅 리소스를 의미합니다. 각 이벤트 폴러는 최대 5개의 동시 Lambda 간접 호출을 지원합니다.

애플리케이션에 대한 최적의 폴러 구성을 결정할 때 최대 수집 속도와 처리 요구 사항을 고려하세요. 간소화된 예시를 살펴보겠습니다.

배치 크기가 레코드 20개이고 대상 함수의 평균 시간이 50ms인 경우 각 폴러는 5MB/s 제한에 따라 초당 2,000개의 레코드를 처리할 수 있습니다. 이는 (레코드 20개 × 1,000ms/50ms) × 동시 Lambda 간접 호출 5개로 계산됩니다. 따라서 원하는 최대 수집 속도가 초당 20,000개의 레코드인 경우 최소 10개의 이벤트 폴러가 필요합니다.

**참고**  
지속적으로 최대 용량으로 작동하지 않도록 버퍼용 이벤트 폴러를 추가로 프로비저닝하는 것이 좋습니다.

프로비저닝된 모드는 구성된 최소 및 최대 **이벤트 폴러** 내에서 트래픽 패턴에 따라 이벤트 폴러를 자동으로 조정하므로 리밸런싱을 트리거할 수 있으며 이에 따라 추가 지연 시간이 발생할 수 있습니다. 최소 및 최대 **이벤트 폴러**에 대해 동일한 값을 구성하여 오토 스케일링을 비활성화할 수 있습니다.

### 추가 고려 사항
<a name="additional-considerations-low-latency"></a>

몇 가지 추가 고려 사항은 다음과 같습니다.
+ Lambda 대상 함수를 간접 호출하여 콜드 스타트를 수행하면 종단 간 지연 시간이 늘어날 수 있습니다. 이 위험을 줄이려면 이벤트 소스 매핑의 대상 함수에서 [프로비저닝된 동시성](provisioned-concurrency.md) 또는 [SnapStart](snapstart.md)를 활성화하는 것이 좋습니다. 또한 함수의 메모리 할당을 최적화하여 일관된 최적의 실행을 보장합니다.
+ `MaximumBatchingWindowInSeconds`가 0으로 설정되면 Lambda가 전체 배치 크기를 채울 때까지 기다리지 않고 사용 가능한 레코드를 즉시 처리합니다. 예를 들어 배치 크기가 레코드 1,000개로 설정되었지만 레코드 100개만 사용할 수 있는 경우 Lambda는 전체 1,000개의 레코드가 누적될 때까지 기다리지 않고 해당 레코드 100개를 즉시 처리합니다.

**중요**  
저지연 처리를 위한 최적의 구성은 특정 워크로드에 따라 크게 달라집니다. 실제 워크로드로 다양한 구성을 테스트하여 사용 사례에 가장 적합한 설정을 결정하는 것이 좋습니다.