Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS Lambda function performance tuning - AWS re...

AWS Lambda function performance tuning - AWS re:Invent 2019

All AWS Lambda functions are not created equal. Learn the best practices for tuning memory, runtime, initialization, concurrency, and more, in a data-driven way, to squeeze every drop of performance out of Lambda functions. By the end of this session, you'll understand the key Lambda performance knobs you can turn to make the most of your functions for your workload.

Alex Casalboni

December 03, 2019
Tweet

More Decks by Alex Casalboni

Other Decks in Programming

Transcript

  1. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Lambda function performance tuning Alex Casalboni S V S 2 2 4 - R Technical Evangelist Amazon Web Services
  2. Agenda Fundamentals & news Optimization best practices AWS Lambda Power

    Tuning Real-world examples Whiteboard discussion
  3. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. “So what does the future look like? All the code you ever write is business logic.” Dr. Werner Vogels CTO of Amazon.com
  4. AWS operational responsibility models On-premises Cloud Less More Compute Virtual

    machine Amazon EC2 AWS Elastic Beanstalk AWS Lambda AWS Fargate Databases MySQL MySQL on EC2 Amazon RDS MySQL Amazon Aurora Aurora Serverless Amazon QLDB/DynamoDB Storage Storage Amazon S3 Messaging ESBs Amazon MQ Amazon Kinesis Amazon EventBridge/SNS/SQS Analytics Hadoop Hadoop on EC2 Amazon EMR Amazon Elasticsearch Service Amazon Athena
  5. Provisioned Concurrency for AWS Lambda Simple config to avoid cold

    starts No more manual pre-warming Predictable performance during spikes Good fit for latency-sensitive apps No code changes required Bound to version or alias AWS CloudFormation support Scheduling with AWS Application Auto Scaling From 1 to account concurrency limit Two new metrics Ramp-up time (500 per minute) Initialization code is executed automatically
  6. Cost & performance optimization best practices Avoid «monolithic» functions Optimize

    dependencies (and imports) Minify/uglify production code Lazy initialization of shared libs/objs Externalize orchestration Fine-tune resources allocation Lambda Destinations Discard uninteresting events asap Keep in mind retry policies Understand currency controls
  7. Cost & performance optimization best practices Avoid «monolithic» functions Optimize

    dependencies (and imports) Minify/uglify production code Lazy initialization of shared libs/objs Externalize orchestration Fine-tune resources allocation Lambda Destinations Discard uninteresting events asap Keep in mind retry policies Understand currency controls
  8. CPU-bound example “Compute 1,000 times all prime numbers <= 1M”

    128 MB 11.722 sec $0.024628 256 MB 6.678 sec $0.028035 512 MB 3.194 sec $0.026830 1024 MB 1.465 sec $0.024638
  9. CPU-bound example “Compute 1,000 times all prime numbers <= 1M”

    128 MB 11.722 sec $0.024628 256 MB 6.678 sec $0.028035 512 MB 3.194 sec $0.026830 1024 MB 1.465 sec $0.024638
  10. Cost-aware performance optimization 310ms 400ms 294ms 300ms 5% performance optimization

    25% cost optimization 480ms 500ms 408ms 500ms 15% performance optimization 0% cost optimization A B
  11. “AWS Lambda Power Tuning” Data-driven cost & performance optimization for

    AWS Lambda Available as a SAR app Easy to integrate with CI/CD Don’t guesstimate! v1 github.com/alexcasalboni/aws-lambda-power-tuning
  12. Takeaways Memory Power Avoid cold starts with Provisioned Concurrency Optimal

    resources allocation can be automated (CI/CD) Think in terms of workload categories and cost/performance patterns Visualize optimal trade-offs with /alexcasalboni/aws-lambda-power-tuning
  13. Thank you! © 2019, Amazon Web Services, Inc. or its

    affiliates. All rights reserved. Alex Casalboni [email protected] @alex_casalboni