Kafka 이벤트 소스의 저지연 처리
Kafka 이벤트 소스의 저지연 처리 (Low latency processing for Kafka event sources)
AWS Lambda는 100밀리초 미만의 일관된 엔드투엔드 지연이 필요한 애플리케이션을 위해 저지연 이벤트 처리를 기본 지원해요. 이 페이지는 저지연 워크플로를 활성화하기 위한 구성 세부 정보와 권장사항을 제공해요.
본문
저지연 처리 활성화
Kafka 이벤트 소스 매핑에서 저지연 처리를 활성화하려면 다음 기본 구성이 필요해요.
- Provisioned mode를 활성화합니다.
- 이벤트 소스 매핑의
MaximumBatchingWindowInSeconds파라미터를 0으로 설정합니다.
저지연 Kafka ESM 미세 조정
Kafka 이벤트 소스 매핑을 저지연으로 최적화하려면 다음 권장사항을 고려하세요.
Provisioned mode 구성
Kafka 이벤트 소스 매핑의 provisioned mode에서는 event poller(이벤트 폴러)라고 하는 리소스의 최소·최대 개수를 구성해 이벤트 소스 매핑의 처리량을 미세 조정할 수 있어요. 이벤트 폴러(또는 폴러)는 provisioned mode에서 이벤트 소스 매핑을 뒷받침하는 컴퓨팅 리소스로, 최대 5MB/s 처리량을 할당해요. 각 이벤트 폴러는 최대 5개의 동시 Lambda 호출을 지원해요.
애플리케이션의 최적 폴러 구성을 결정하려면 최대 유입(ingestion) 속도와 처리 요구 사항을 고려하세요. 단순화된 예시를 살펴볼게요.
배치 크기 20개 레코드, 평균 목표 함수 duration 50ms일 때 각 폴러는 5MB/s 제한에 따라 초당 2,000개 레코드를 처리할 수 있어요. 이는 (20 레코드 × 1000ms/50ms) × 5개 동시 Lambda 호출로 계산돼요. 따라서 원하는 최대 유입 속도가 초당 20,000개 레코드라면 최소 10개의 이벤트 폴러가 필요해요.
참고
지속적으로 최대 용량으로 운영되는 것을 피하기 위해 추가 이벤트 폴러를 버퍼로 프로비저닝할 것을 권장해요.
Provisioned mode는 구성된 최소·최대 이벤트 폴러 내에서 트래픽 패턴에 따라 이벤트 폴러를 자동으로 확장해요. 이는 리밸런스(rebalance)를 트리거해 추가 지연을 만들 수 있어요. 최소·최대 이벤트 폴러를 같은 값으로 구성하면 자동 확장을 비활성화할 수 있어요.
추가 고려 사항
다음과 같은 추가 고려 사항이 있어요.
- Lambda 대상 함수 호출의 콜드 스타트가 엔드투엔드 지연을 늘릴 수 있어요. 이 위험을 줄이려면 이벤트 소스 매핑 대상 함수에 프로비저닝된 동시성(provisioned concurrency)이나 SnapStart를 활성화하는 것을 고려하세요. 또한 함수의 메모리 할당을 최적화해 일관되고 최적인 실행을 보장하세요.
MaximumBatchingWindowInSeconds를 0으로 설정하면 Lambda가 전체 배치 크기를 채우기 위해 기다리지 않고 사용 가능한 레코드를 즉시 처리해요. 예를 들어 배치 크기가 1,000개 레코드인데 100개만 사용 가능하면, 전체 1,000개가 누적될 때까지 기다리지 않고 그 100개를 즉시 처리해요.
중요
저지연 처리를 위한 최적 구성은 특정 워크로드에 따라 크게 달라져요. 실제 워크로드로 다양한 구성을 테스트해 사용 사례에 가장 좋은 설정을 결정할 것을 강력히 권장해요.