본문으로 건너뛰기

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 함수의 동작을 더욱 세밀하게 조정할 수 있습니다.
  • 이 새로운 기능을 활용하여 서버리스 아키텍처를 더욱 강력하고 효율적으로 구축할 수 있을 것입니다.

참고