Optimizing Lambda performance for your serverless applications James Beswick Senior Developer Advocate, AWS Serverless @jbesw © 2020, Amazon Web Services, Inc. or its Affiliates. About me • James Beswick • Email:
[email protected] • Twitter: @jbesw • Senior Developer Advocate – AWS Serverless • Self-confessed serverless geek • Software Developer • Product Manager • Previously: • Multiple start-up tech guy • Rackspace, USAA, Morgan Stanley, J P Morgan © 2020, Amazon Web Services, Inc. or its Affiliates. Agenda Memory and profiling © 2020, Amazon Web Services, Inc. or its Affiliates. How does Lambda work? © 2020, Amazon Web Services, Inc. or its Affiliates. Anatomy of an AWS Lambda function Your function Language runtime Execution environment Lambda service Compute substrate © 2020, Amazon Web Services, Inc. or its Affiliates. Where you can impact performance… Your function Language runtime Execution environment Lambda service Compute substrate © 2020, Amazon Web Services, Inc. or its Affiliates. Anatomy of an AWS Lambda function Handler () function Event object Context object Function to be executed Data sent during Lambda Methods available to upon invocation function Invocation interact with runtime information (request ID, log group, more) // Python // Node.js import json const MyLib = require(‘my-package’) import mylib const myLib = new MyLib() def lambda_handler(event, context): exports.handler = async (event, context) => { # TODO implement # TODO implement return { return { 'statusCode': 200, statusCode: 200, 'body': json.dumps('Hello World!') body: JSON.stringify('Hello from Lambda!') } } } © 2020, Amazon Web Services, Inc. or its Affiliates. Function lifecycle – worker host Start new Download Execution Execute Execute your code environment INIT code handler code Full Partial Warm cold start cold start start AWS optimization Your optimization © 2020, Amazon Web Services, Inc.