함수 규모 조정
함수를 최초로 호출하면 AWS Lambda는 함수의 인스턴스를 생성하고 핸들러 메서드를 실행하여 이벤트를 처리한다. 함수가 응답을 반환하면 활성 상태를 유지하고 추가 이벤트를 처리하기 위해 대기한다. 첫 번째 이벤트가 처리되는 동안 함수를 다시 호출하면 Lambda는 다른 인스턴스를 초기화하고 함수는 두 이벤트를 동시에 처리한다. 이벤트가 추가로 수신되면 Lambda는 이 이벤트를 사용 가능한 인스턴스로 라우팅하고 필요 시 새 인스턴스를 생성한다. 요청의 수가 감소하면 Lambda는 미사용 인스턴스를 중단하여 다른 함수를 위한 용량 조정에 필요한 여유를 확보한다.
기본 리전별 동시성 할당량은 1,000개 인스턴스에서 시작된다. 자세한 내용이나 이 할당량을 늘리기 위한 요청 방법은 Lambda 할당량을 참조한다. 함수별로 용량을 할당하기 위해 예약된 동시성으로 함수를 구성할 수 있다.
함수의 동시성은 특정 시각에 요청을 처리하는 인스턴스의 수이다. 초기 트래픽 버스트의 경우, 리전에서 함수의 누적 동시성은 500 ~ 3000의 최초 레벨에 도달할 수 있으며, 이는 리전에 따라 달라집니다. 버스트 동시성 할당량은 함수별로 할당되지 않으며 리전의 모든 함수에 적용된다.
버스트 동시성 할당량
-
3,000 - 미국 서부(오리건), 미국 동부(버지니아 북부), 유럽(아일랜드)
-
1,000 - 아시아 태평양(도쿄), 유럽(프랑크푸르트), 미국 동부(오하이오)
-
500 - 기타 리전
최초 버스트 이후 함수의 동시성은 매분 500개의 추가 인스턴스까지 확장될 수 있다. 이러한 확장은 모든 요청을 처리할 만큼 인스턴스가 충분해질 때까지 또는 동시성 한도에 이를 때까지 계속된다. 함수가 확장하는 속도보다 더 빠르게 요청이 수신되거나 함수가 최대 동시성에 도달한 경우 추가 요청은 조절 오류(429 상태 코드)로 인해 실패한다.
다음 예제에서는 트래픽 급증을 처리하는 함수를 보여 준다. 호출이 기하 급수적으로 증가하면 함수가 확장된다. 사용 가능한 인스턴스로 라우팅할 수 없는 요청에 대해 새 인스턴스를 초기화한다. 버스트 동시성 한도에 도달하면 함수는 선형으로 확장되기 시작한다. 이것으로 모든 요청을 동시에 처리하기에 충분하지 않을 경우, 추가 요청에서 병목이 발생하므로 다시 시도해야 한다.
-
함수 인스턴스
-
미결 요청
-
프로비저닝된 동시성
-
표준 동시성
함수는 함수의 리전에 대한 계정의 동시성 한도에 도달할 때까지 계속 확장된다. 이 함수는 수요를 따라잡고 요청이 감소하면 잠시 유휴 상태가 된 이후에 함수의 미사용 인스턴스가 중지된다. 미사용 인스턴스는 요청을 기다리는 동안 정지되어 요금이 부과되지 않는다.
함수가 확장될 때 각 인스턴스에서 처리되는 첫 번째 요청은 코드를 로드하고 초기화하는 데 걸리는 시간에 의해 영향을 받다. 초기화 코드에 오랜 시간이 걸리는 경우, 평균 및 백분위수 지연 시간에 미치는 영향이 상당히 클 수 있다. 지연 시간의 변동 없이 함수를 확장할 수 있도록 하려면 프로비저닝된 동시성을 사용한다. 다음 예제에서는 프로비저닝된 동시성을 사용해 트래픽 급증을 처리하는 함수를 보여 준다.
-
함수 인스턴스
-
미결 요청
-
프로비저닝된 동시성
-
표준 동시성
프로비저닝된 동시성에 대한 수를 구성하면 Lambda가 해당 수의 실행 환경을 초기화한다. 함수가 매우 짧은 대기 시간으로 수신되는 요청 버스트를 처리할 준비가 되었다. 프로비저닝된 동시성을 구성하면 AWS 계정에 요금이 부과된다.
프로비저닝된 모든 동시성이 사용 중이면 함수는 추가 요청을 처리하기 위해 정상적으로 확장된다.
Application Auto Scaling은 프로비저닝된 동시성에 자동 크기 조정을 제공하여 한 단계 더 나아간다. Application Auto Scaling을 사용하여 Lambda가 내보내는 사용률 지표에 따라 프로비저닝된 동시성 수준을 자동으로 조정하는 대상 추적 크기 조정 정책을 생성할 수 있다. Application Auto Scaling API를 사용하여 별칭을 조정 가능한 대상으로 등록하고 크기 조정 정책을 생성한다.
다음 예제에서는 프로비저닝된 동시성의 최소 양과 최대 양 사이에서 함수 크기가 사용률에 따라 조정된다. 미결 요청 수가 증가하면 구성된 최대값에 도달할 때까지 Application Auto Scaling이 프로비저닝된 동시성을 큰 폭으로 늘린다. 사용률이 떨어지기 시작할 때까지 표준 동시성에서 함수 크기가 계속 조정된다. 사용률이 계속 낮아지면 Application Auto Scaling은 프로비저닝된 동시성을 주기적인 작은 단계로 줄인다.
-
함수 인스턴스
-
미결 요청
-
프로비저닝된 동시성
-
표준 동시성
이벤트 소스 매핑이나 다른 AWS 서비스를 사용하여 함수를 비동기식으로 호출하는 경우, 조정 동작이 달라진다. 예를 들어 스트림에서 읽기를 수행하는 이벤트 소스 매핑은 스트림 내 샤드 수에 의해 제한된다. 이벤트 소스에서 사용하지 않는 조정 용량은 다른 클라이언트 및 이벤트 소스에서 사용할 수 있다. 자세한 내용은 다음 항목을 참조한다.
다음 지표를 사용하여 계정 내 동시성 수준을 모니터링할 수 있다.
동시성 지표
-
ConcurrentExecutions
-
UnreservedConcurrentExecutions
-
ProvisionedConcurrentExecutions
-
ProvisionedConcurrencyInvocations
-
ProvisionedConcurrencySpilloverInvocations
-
ProvisionedConcurrencyUtilization