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 함수에 여러 이벤트 소스가 있을 때 개별 이벤트 소스에 대한 최대 동시성을 정의할 수 있는 유연성을 제공합니다.
6 최대 동시성 기능의 이점
- 이 기능은 Lambda 함수가 계정의 모든 가용 Lambda 동시성을 소비하는 것을 방지할 수 있습니다.
- Lambda 함수가 제한되어 메시지가 불필요하게 대기열로 반환되는 것을 피할 수 있 습니다.
- 원하는 속도로 메시지를 제어하고 소비할 수 있는 더 쉬운 방법을 제공합니다.
- 최대 동시 Lambda 함수 수로 제어됩니다.
7 예약된 동시성과의 관계
- 최대 동시성 설정은 기존의 예약된 동시성 기능을 대체하지 않습니다.
- 두 기능은 distinct한 목적을 가지며 함께 사용할 수 있습니다.
- 최대 동시성은 다운스트림 시스템의 과부하와 불필요한 제한된 호출을 방지하는 데 도움을 줄 수 있습니다.
- 예약된 동시성은 함수의 최대 동시 인스턴스 수를 보장합니다.
- 함께 사용할 경우, Lambda 함수는 자체 할당된 용량(예약된 동시성)을 가질 수 있으면서 각 이벤트 소스의 처리량을 제어(최대 동시성)할 수 있습니다.
- 두 기능을 함께 사용할 때는 제한을 방지하기 위해 함수의 예약된 동시성을 SQS 이벤트 소스 매핑의 최대 동시성보다 높게 설정해야 합니다.
8 SQS 이벤트 소스의 최대 동시성 설정 방법
- SQS 이벤트 소스의 최대 동시성은 AWS Management Console, AWS Command Line Interface (CLI), 또는 AWS Serverless Application Model (AWS SAM)과 같은 인프라스트럭처 as 코드 도구를 통해 구성할 수 있습니다.
- 지원되는 최소값은 2이고 최대값은 1000입니다.
- 최신 제한에 대해서는 Lambda 할당량 문서를 참조하세요.
9 결론
- AWS Lambda의 새로운 최대 동시성 제어 기능은 SQS를 이벤트 소스로 사용할 때 더 나은 제어와 효율성을 제공합니다.
- 이 기능을 통해 개발자는 메시지 처리 속도를 더 정밀하게 제어하고, 시스템 리소스를 더 효과적으로 관리할 수 있습니다.
- 예약된 동시성과 함께 사용하면 Lambda 함수의 동작을 더욱 세밀하게 조정할 수 있습니다.
- 이 새로운 기능을 활용하여 서버리스 아키텍처를 더욱 강력하고 효율적으로 구축할 수 있을 것입니다.
참고