Reserved mode
, Provisioned mode
의 특징과 차이점을 이해한다."입장 버튼이 웹사이트 내에 있고 평소에는 접속자 수 50명 내외로 트레픽이 잔잔한데, 매일 자정마다 선착순 쿠폰 발급 이벤트 때문에 매일 자정에만 람다 갯수가 동시에 수백개로 폭발한다."
특정 콘서트 티켓팅, 수강신청, 이벤트 등에 의해 갑자기 트레픽이 폭발할 경우 람다 모드를 조절함으로써 대처할 수 있다.
이런 상황에서 자정에 람다를 마구마구 한꺼번에 실행되면 다음과 같은 응답메시지를 얻는다.
429 'Too Many Request Exception'
500 'Internal Server Error'
AWS Service Quotas 정책에 의해 지역별로 모든 서비스는 리소스가 가질 수 있는 용량이나 실행 수의 제한이 있다. Lambda는 ap-northeast-2 (서울) 기준 기본 1,000개의 동시성 제한을 갖는다.
동시성 제한이 걸리면 어떤 현상이 일어나는지는 여기 를 참조해보자.
좋은 질문이다. 기본적으로 Auto-Scaling 메커니즘을 갖고있다. (AWS 짱짱) 그럼에도 불구하고 충분하지 않다.
최초 버스트 이후 함수의 동시성은 매분 500개의 추가 인스턴스까지 확장될 수 있습니다. 이러한 확장은 모든 요청을 처리할 만큼 인스턴스가 충분해질 때까지 또는 동시성 한도에 이를 때까지 계속됩니다. 함수가 확장하는 속도보다 더 빠르게 요청이 수신되거나 함수가 최대 동시성에 도달한 경우 추가 요청은 조절 오류(429 상태 코드)로 인해 실패합니다.
-AWS Document
'매분' 이다. "점진적으로 트레픽이 분당 50개 -> 150개 -> 250개 ..-> ... 증가한다면 버티겠지만 이렇게 특정 시간대에 몰리는 경우는 감당해낼 수 가 없다"
Lambda 가 동시성을 확보하기 전에 (Scale-out 전에) Fail🚫 이 나버릴 것이다.
구분 | Reserved | Provisioned |
---|---|---|
Description | a pool of requests that can only be used by its function and also prevents its function from using unreserved concurrency | always prepared to respond to this function |
When to use | limit or ensure to reach a cretian level of concurrency | scale without fluctuations in latency. (always warm start) |
reserved limit >= Provisioned limit
⚠️ can't allocate provisioned concurrency on an alias that points to the unpublished version $LATEST
AWS CLI, Management Console SDK or CloudFormation 으로 on/off 가 가능하다.
AWS Auto-Scaling : 동시성 최소-최대 범위를 설정할 수 있다.
📌 Provisioned mode
일 경우 요청 폭발시 동시성을 최대범위 내에서 지연시간 변동없이 확장이 가능하다. 또, 항상 예약된 동시성에만 적용 가능하고 항상 Warm Start 한다.
Provisioned Concurrency is not supported with
Lambda@Edge
-AWS Document
=> 🙅🏽♂️ Provisioned Mode 로 동시성 예약을 전부 할당하면 해당 람다는 Internal Server Error
를 발생시킨다.
사용자에게 더 가까운 위치에서 코드를 실행하여 latency 를 줄이는 람다 서비스이다.
베이스가 되는 리전은 존재한다. (당연히 베이스 리전에서 실행 및 응답 속도가 가장 빠르다.)
index | Provisioned Mode with Regional | Reserved Mode with Edge |
---|---|---|
🌐 Region | Specific one region | Global |
🔥 Start Latency | Low (Always warm start) | Cold start or Warm Start |
📈 Latency fluctuation when to scale up | X (Not Exists) | O (Exists) |
💵 Cost | expensive | cheap |