동시성이란 특정 시각에 함수가 제공하는 요청의 수이다. 함수가 호출되면 Lambda는 함수의 인스턴스를 할당하여 이벤트를 처리하고 실행을 마치면 다른 요청을 처리할 수 있다. 만약 요청을 처리하는 와중에 함수가 호출되면 다른 인스턴스가 할당되어 함수의 동시성이 증가한다.
AWS Lambda에서는 두 가지 유형의 동시성 제어를 사용할 수 있다.
- 함수에 대한 최대 동시 인스턴스를 보장
- 한 함수가 동시성을 예약하면 다른 함수는 해당 동시성을 사용 불가
- 예약된 동시성을 구성하는 데는 요금이 부과되지 않음
- 함수의 호출에 즉시 응답할 준비가 되도록 요청된 수의 실행 환경을 초기화함
- 프로비저닝된 동시성을 구성하면 AWS 계정에 요금이 부과
함수가 항상 일정 수준의 동시성에 도달할 수 있도록 보장하려면 예약된 동시성으로 함수를 구성합니다. 함수의 인스턴스 할당 시 코드 및 종속성이 크거나 초기화 중에 SDK 클라이언트를 생성하는 경우 약간 시간이 걸릴 수 있습니다. 따라서 함수가 확장되면 새 인스턴스에서 제공되는 요청이 나머지 보다 긴 지연 시간을 가질 수 있습니다.
지연 시간의 변동 없이 함수를 확장할 수 있도록 하려면 프로비저닝된 동시성을 사용합니다. 호출이 증가하기 전 프로비저닝된 동시성을 할당하면 매우 짧은 지연 시간을 초기화된 인스턴스에게 모든 요청을 처리하도록 할 수 있다.
또한 Lambda는 Application Auto Scaling과도 통합돼서 일정 혹은 사용류를 기준으로 프로비저닝된 동시성을 관리할 수 있습니다. 예약된 조정을 사용하여 최대 트래픽을 예상하여 프로비저닝된 동시성을 증가시킬 수 있습니다. 필요에 따라 프로비저닝된 동시성을 자동으로 높이려면 Application Auto Scaling API를 사용하여 대상을 등록하고 조정 정책을 만듭니다.
람다는 기본적으로 1000개의 동시성 제한(동시에 함수 최대 1000개 실행 가능)이 있다. 또한 최대 동시성을 개별 람다 함수에 설정할 수 있다.(함수마다 최대 함수 실행 개수 지정 가능)