AWS Lambda를 따뜻하게 유지하는 스마트 서비스

많은 경우 콜드 스타트는 통증을 유발합니다. 예를 들어 라이브 고객 요청을 처리할 때 이탈률, 장바구니 포기, 전환율 개선 등을 위해 1밀리초가 계산됩니다. 백그라운드 처리에서도 새 컨테이너가 가동되어야 할 때마다 동일한 정보를 메모리에 로드하는 것은 낭비입니다. 시간과 돈.

개발자가 Lambdas 풀을 따뜻하게 유지하고 각 기능의 동시성 요구 사항에 맞게 현명하게 조정하는 데 도움이 되는 무료 서비스는 매우 유용할 것입니다. 이 기사에서는 이러한 서비스를 구현하는 방법에 대해 설명합니다. Dashbird 서버리스 모니터링에 대한 개발자 지지자로서 저는 콜드 스타트에 대한 불만을 자주 보게 되며 우리의 목표는 이를 해결할 수 있는 쉽고 자유로운 방법을 제공하는 것입니다.


사진 제공: Luke Porter on Unsplash

정의


보온기능



우리는 AWS가 유휴 Lambda 컨테이너를 종료하기까지 어느 정도 시간이 걸린다는 것을 알고 있습니다. 일반적으로 걸리는 시간은 다양하지만 대부분의 컨테이너가 5분 전에 종료되지 않는다고 가정하는 것이 안전하므로 그대로 진행하겠습니다.

주파수와 비용 사이에는 절충 관계가 있습니다. 주파수가 높을수록 콜드 스타트 ​​가능성이 최소화되지만 비용이 더 많이 들고 그 반대도 마찬가지입니다.

동시성



동시 요청이 들어올 수 있는 만큼 워밍된 컨테이너가 필요합니다. 그러기 위해서는 여러 개의 "웜 요청"을 동시에 보내야 합니다. 얼마나? time-series modeling을 사용하여 답하겠습니다.

해결책



다음은 이러한 문제를 해결하기 위한 대략적인 계획입니다. 다음을 사용합니다.
  • CloudWatch: 정기적으로 예열 프로세스를 트리거합니다(예: 5분마다)
  • Warmer: Lambda를 호출하고 따뜻하게 유지하는 논리
  • 예측: 특정 시점에 얼마나 많은 컨테이너가 필요한지 예상합니다
  • .

    설명 다이어그램:


    따뜻한 람다 풀



    "웜 요청"을 처리하려면 코드를 약간 수정해야 합니다. 컨테이너를 워밍업할 때 실행 시간을 최소화하기 위해 가능한 한 빨리 처리를 종료하도록 단락합니다. 다음과 같이 해야 합니다.

    if event['get_warm'] == True:
        return {'warmed': True}
    

    트리거(CloudWatch)



    CloudWatch는 예를 들어 5분마다 정기적으로 따뜻한 Lambda를 트리거합니다. 시간 빈도는 다양한 프로젝트 요구 사항을 수용하기 위해 기능별로 조정할 수 있어야 합니다.

    워머(람다)



    우리가 선택한 람다 풀을 호출하고 워밍업합니다. 위에서 설명한 동시성 문제를 처리해야 합니다. 이 Lambda를 작동시키기 위해 Jeremy Daly의 멋진 오픈 소스 프로젝트Lambda-Warmer를 사용할 수 있습니다.


    사진 제공: Sandis Helvigs on Unsplash

    예측(람다)



    Warmer Lambda는 각 주기에서 몇 개의 컨테이너를 데워야 하는지 알아야 합니다. 이 Lambda는 바로 그것을 제공할 것입니다. 작동 방식은 다음과 같습니다.

    첫째, 예측자는 CloudWatch 메트릭에서 지정된 Lambda에 대한 최신 호출 기록을 가져옵니다. AWS CLI 인터페이스에는 필요한 것을 제공하는 엔드포인트get-metrics-data가 있습니다. 하지만 전체 프로세스를 자율적으로 실행하기 위해 명령줄( such as boto3 - get_metric_data ) 대신 AWS SDK에서 이 데이터를 사용합니다. CloudWatch는 지난 몇 시간 또는 며칠 동안 함수가 초당 호출된 횟수를 제공할 수 있습니다. 우리는 이것을 동시 요청 측정을 위한 프록시로 사용합니다. 완벽하지는 않지만 실제 수치에 최대한 근접할 수 있습니다.

    그런 다음 호출 기록은 시계열 예측 모델에서 사용하여 Lambda가 향후 5분 동안 받을 것으로 예상되는 최대 동시 요청 수를 예상하고 이를 Warmer Lambda에 제공합니다.

    시계열 모델링의 경우 이 작업에 가장 적합한 알고리즘을 구현하는 흥미로운 통계 오픈 소스 프로젝트인 StatsModels 을 사용할 계획입니다.

    결론



    Lambda를 지속적으로 따뜻하게 유지하기 위한 간단하면서도 효과적인 시스템에 대한 대략적인 아이디어입니다. 이 서비스를 자유롭게 사용할 수 있을 때 알림을 받으려면 [email protected]로 메시지를 보내주십시오.

    좋은 웹페이지 즐겨찾기