Untitled
1 AWS Lambda의 Amazon SQS 이벤트 소스 최대 동시성 제어 기능 소개
- AWS Lambda가 Amazon SQS를 이벤트 소스로 사용할 때 최대 동시성을 제어할 수 있는 새로운 기능을 도입했습니다.
- 이 기능을 통해 개별 SQS 대기열에서 메시지를 처리하는 Lambda 함수의 동시성을 제어할 수 있습니다.
- 이 글에서는 SQS를 Lambda의 이벤트 소스로 사용할 때 SQS 트리거의 최대 동시성을 설정하는 방법을 설명합니다.
- 또한 이 아키텍처 패턴을 사용할 때 Lambda의 확장 동작에 대한 개요와 이 기능이 해결하는 문제, 그리고 최대 동시성 기능의 데모를 제공합니다.
2 개요
- Lambda는 스트림이나 대기열에서 항목을 처리하기 위해 이벤트 소스 매핑을 사용합니다.
- 이벤트 소스 매핑은 SQS 대기열과 같은 이벤트 소스에서 읽고, 선택적으로 메시지를 필터링하고, 배치 처리한 후 매핑된 Lambda 함수를 호출합니다.
- SQS FIFO 대기열과 Lambda 통합의 확장 동작은 간단합니다.
- 단일 Lambda 함수가 메시지 그룹 내의 메시지 배치를 순서대로 처리합니다.
3 SQS 표준 대기열의 확장 동작
![[Pasted image 20240829193437.png]]
- SQS 표준 대기열의 경우, 이벤트 소스 매핑이 대기열을 폴링하여 들어오는 메시지를 소비합니다.
- 처음에는 5개의 동시 배치로 시작하여 한 번에 5개의 함수를 실행합니다.
- SQS 대기열에 메시지가 추가되면 Lambda는 계속해서 확장하여 수요를 충족시킵니다.
- 분당 최대 60개의 함수를 추가하며, 최대 1,000개의 함수까지 확장하여 메시지를 처리합니다.
4 기존의 문제점
![[Pasted image 20240829193423.png]]
- SQS 대기열에 많은 수의 메시지가 있을 때, Lambda는 확장하여 추가 함수를 생성해 메시지를 처리합니다.
- 이러한 확장은 계정의 동시성 할당량을 모두 소비할 수 있습니다.
- 이를 방지하기 위해 개별 Lambda 함수에 대해 예약된 동시성을 설정할 수 있습니다.
- 예약된 동시성은 지정된 Lambda 함수가 항상 그만큼의 동시성으로 확장될 수 있도록 보장하지만, 이 수를 초과할 수 없습니다.
- Lambda 함수 동시성이 예약된 동시성 제한에 도달하면, 대기열 구성에 따라 후속 동작이 결정됩니다.
- 메시지는 재구동 정책에 따라 대기열로 반환되어 재시도되거나, 보존 정책에 따라 만료되거나, 다른 SQS 데드-레터 대기열(DLQ)로 전송됩니다.
5 SQS 이벤트 소스의 최대 Lambda 동시성
![[Pasted image 20240829193414.png]]
- 이번에 출시된 SQS 이벤트 소스의 최대 동시성 기능을 통해 소스별로 Lambda 함수 동시성을 제어할 수 있습니다.
- 최대 동시성은 Lambda 함수가 아닌 이벤트 소스 매핑에 설정합니다.
- 이 이벤트 소스 매핑 설정은 Lambda와 SQS의 확장 또는 배치 처리 동작을 변경하지 않습니다.
- 사용자 지정 배치 크기와 윈도우로 메시지를 계속 배치 처리할 수 있습니다.
- 대신 SQS 이벤트 소스당 최대 동시 함수 호출 수에 제한을 둡니다.
- Lambda가 확장되어 이벤트 소스에 구성된 최대 동시성에 도달하면, Lambda는 대기열에서 더 이상 메시지를 읽지 않습니다.
- 이 기능은 Lambda 함수에 여러 이벤트 소스가 있을 때 개별 이벤트 소스에 대한 최대 동시성을 정의할 수 있는 유연성을 제공합니다.