Amazon Web Services 한국 블로그

AWS Lambda, 대용량 요청 처리 수 12배 더 빠르게 확장하기

이제 AWS Lambda는 최대 12배 더 빠르게 스케일 업할 수 있습니다. 동기식으로 간접 호출된 각 Lambda 함수는 이제 모든 함수의 총 동시성이 계정의 동시성 한도에 도달할 때까지 10초마다 1,000회씩 동시 실행이 확장됩니다. 또한 이제 계정 내의 각 함수는 함수가 간접적으로 호출된 방식에 관계없이 서로 독립적으로 확장됩니다. 이러한 개선 사항은 추가 비용 없이 제공되며, 기존 함수를 별도로 구성할 필요가 없습니다.

기존 아키텍처에서는 확장 가능한 고성능 애플리케이션을 구축하는 것이 어려울 수 있으며, 수요가 급증하고 예측할 수 없는 트래픽을 처리하기 위한 복잡한 캐싱 솔루션이나 컴퓨팅 리소스를 오버프로비저닝해야 하는 경우가 많습니다. 많은 개발자가 Lambda를 선택하는 이유는 애플리케이션이 예측할 수 없는 트래픽에 직면할 때 온디맨드로 규모를 조정할 수 있기 때문입니다.

이 업데이트 이전에는 Lambda 함수를 처음에 계정 수준에서 처음 1분 동안 500~3,000회(리전에 따라 다름) 동시 실행한 다음, 계정의 동시성 한도에 도달할 때까지 1분마다 500회 동시 실행으로 확장할 수 있었습니다. 이 확장 한도는 동일한 계정과 리전의 모든 함수 간에 공유되었으므로 한 함수에 트래픽 유입이 발생하면 동일한 계정에 있는 다른 함수의 처리량에 영향을 미칠 수 있습니다. 따라서 계정 한도를 초과하여 버스트될 수 있는 몇 가지 함수를 모니터링하기 위한 엔지니어링 작업이 늘어났고, 이로 인해 noisy neighbor 현상이 발생하고 동일한 계정에서 다른 함수의 전반적인 동시성이 줄어들었습니다.

이제 이러한 확장 개선으로 트래픽 변동이 심한 고객도 이전보다 더 빠르게 동시성 목표에 도달할 수 있습니다. 예를 들어 뉴스 속보를 게시하는 뉴스 사이트나 깜짝 세일을 운영하는 온라인 스토어에는 방문자가 크게 유입될 수 있습니다. 이러한 개선 덕분에 이제 이전보다 12배 더 빠르게 확장할 수 있습니다.

또한 스칼라 Lambda 기반 UDF와 함께 Amazon AthenaAmazon Redshift와 같은 서비스를 사용하여 데이터 강화 또는 데이터 변환을 수행하는 고객은 이러한 개선의 이점을 누릴 수 있습니다. 이러한 서비스는 데이터를 일괄 처리하고 이를 청크 단위로 Lambda에 전달하여 여러 병렬 함수를 동시에 간접적으로 호출하는 데 사용됩니다. 향상된 동시성을 통해 Lambda는 신속하게 확장할 수 있고 서비스 수준에 관한 계약(SLA) 요구 사항을 충족할 수 있습니다.

이것은 실제로 어떻게 작동할까요?
다음 그래프는 10초마다 요청을 수신하고 처리하는 함수를 보여줍니다. 계정 동시성 한도는 7,000개의 동시 요청으로 설정되며 동일한 계정의 모든 함수 간에 공유됩니다. 각 함수의 확장 속도는 10초마다 1,000회의 동시 실행으로 고정됩니다. 이 속도는 동일한 계정의 다른 함수와 독립적이므로 이 함수가 어떻게 확장되고 필요한 경우 요청을 조절할지 쉽게 예측할 수 있습니다.

  • 09:00:00 – 함수가 한동안 실행되었으며 이미 1,000개의 동시 실행이 처리 중입니다.
  • 09:00:10 – 10초 후, 1,000개의 새로운 요청이 쇄도했습니다. 이 함수는 10초마다 최대 1,000개의 동시 실행까지 스케일 업할 수 있으므로 문제 없이 처리할 수 있습니다.
  • 09:00:20 – 여기서도 마찬가지입니다. 1,000 개의 새로운 요청이 있습니다.
  • 09:00:30 – 이 함수는 이제 1,500개의 새로운 요청을 받습니다. 함수의 최대 스케일 업 용량은 10초당 1,000개의 요청이므로 이러한 요청 중 500개는 병목 현상이 발생합니다.
  • 09:01:00 – 현재 이 함수는 이미 4,500개의 동시 요청을 처리하고 있습니다. 하지만 3,000건의 새로운 요청이 쇄도하고 있습니다. 이 함수는 10초마다 최대 1,000개의 요청까지 스케일 업할 수 있기 때문에 Lambda는 1,000개의 새로운 요청을 처리하고 2,000개의 속도를 조절합니다.
  • 09:01:10 10초 후에 2,000개의 요청이 또 다시 급증하며, 이제 함수는 1,000개의 요청을 더 처리할 수 있습니다. 하지만 함수가 10초마다 1,000개의 요청으로 확장될 수 있기 때문에 나머지 1,000개의 요청은 병목 현상이 발생합니다.
  • 09:01:20 – 이제 이 함수는 6,500개의 동시 요청을 처리하고 있으며 들어오는 1,000개의 요청이 있습니다. 이러한 요청 중 처음 500개는 처리되지만 나머지 500개는 함수가 계정 동시성 한도인 7,000개에 도달했기 때문에 병목 현상이 발생합니다. AWS Management Console에서 지원 티켓을 생성하여 계정 동시성 한도를 높일 수 있다는 점을 기억해야 합니다.

함수 규모 조정의 예

계정에 함수가 두 개 이상인 경우 전체 계정 동시성 한도에 도달할 때까지 함수가 독립적으로 조정됩니다. 그 이후에는 모든 새로운 간접 호출이 제한됩니다.

가용성
이러한 규모 조정 개선 사항은 기본적으로 모든 함수에서 활성화됩니다. AWS는 11월 26일부터 12월 중순까지 중국 및 GovCloud 리전을 제외한 모든 AWS 리전에 이러한 규모 조정 개선 사항을 점진적으로 적용하고 있습니다.

Lambda의 새로운 규모 조정 동작에 대해 자세히 알아보려면 Lambda scaling behavior 설명서 페이지를 참조하세요.

— Marcia