AWS Lambda: Event-driven Code in the Cloud Dean Bryen, Solutions Architect AWS Andrew Wheat, Senior Software Engineer - BBC April 15, 2015 London, UK 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
Our customers had some relatively simple problems Maybe only 10 lines of code Think thumbnailing of an image or Validating the format of an address
That were solved with pretty complicated solutions Scaling Queuing Deployment Monitoring Logging Patching Instance upgrades
What if every AWS service could generate events? What if you could react to those events in a really simple way?
Event-Driven Compute in the Cloud Lambda functions: Stateless, request-driven code execution Triggered by events in other services: PUT to an Amazon S3 bucket Write to an Amazon DynamoDB table Record in an Amazon Kinesis stream Amazon SNS Message received Changes in Amazon Cognito data Makes it easy to Transform data as it reaches the cloud Perform data-driven auditing, analysis, and notification Kick off workflows
AWS Lambda General Availability Larger default limits 100 concurrent executions 1,000 invokes per second Increases available via AWS customer service Preview label removed Updated API based on feedback during preview Multiple Lambda functions per Kinesis stream
Data Triggers: Amazon S3 Original image Thumbnailed image 1 3 2 Amazon S3 Bucket Events AWS Lambda
Data Triggers Amazon Simple Notification Service CloudWatch Metric SNS Lambda Function
Data Triggers Amazon Cognito Cognito Lambda Function
Data Triggers: Amazon DynamoDB Update another table Amazon DynamoDB Table and Stream AWS Lambda Send SNS Push notifications
Data Triggers Amazon Kinesis IoT Device Kinesis Lambda DynamoDB
Dynamic content generation based on incoming news text and images Real time log processing for prediction analytics Thumbnailing installation site photos for mobile use Real time processing and recording of inbound traffic from a range of social media platforms Large scale distributed search across blog content Operational analytics and real time troubleshooting
Mobile Compute
Mobile Compute: Building Backends with Lambda Request/Response AWS Mobile SDK Easy Personalization for devices for end users Mobile App AWS Lambda
Event-Driven Compute in the Cloud and for Devices Request / response Create instantly scalable backends for mobile apps Run stateless computations for web apps without servers Build cloud-based IoT ecosystems using C/C++ libraries Complements the existing asynchronous functionality
AWS Mobile SDK Build high quality mobile apps quickly and easily. AWS Lambda now available in: AWS mobile SDK for Android AWS ios mobile SDK
Easy Personalization Which end user is this?? Which device is she using??
Key Benefits
No Infrastructure to Manage Automatically Scaling Bring Your Own Code Fine Grained Pricing
Demo: Synchronous functions with AWS Lambda
What We *Didn t* Have to Do: Provision software or hardware infrastructure Plan capacity Understand fault tolerance boundaries Write code to scale up and out Implement monitoring Update operating systems or language runtimes
Using AWS Lambda
Calling Lambda Functions Call from mobile or web apps Wait for a response or send an event and continue AWS SDK, AWS Mobile SDK, REST API, CLI Send events from Amazon S3 or SNS: One event per Lambda invocation, 3 attempts Process DynamoDB changes or Amazon Kinesis records as events: Ordered model with multiple records per event Unlimited retries (until data expires)
Writing Lambda Functions The Basics Stock node.js AWS SDK comes built in and ready to use Lambda handles inbound traffic Stateless Use S3, DynamoDB, or other Internet storage for persistent data Don t expect affinity to the infrastructure (you can t log in to the box ) Familiar Use processes, threads, /tmp, sockets, Bring your own libraries, even native ones
AWS Lambda or EC2 / ECS? AWS Lambda Request-driven Prioritizes ease of use one OS, default hardware choice AWS owns and manages the infrastructure Implicit scaling; just make requests Amazon EC2 and ECS Infrastructure rental Flexible choose instance type, OS, language, You own and configure the infrastructure Scale by provisioning instances or containers
Java You can already call Java programs from Lambda functions today Java and other languages are automatically included in your filesystem view don t wait to start using them! Freezing ensures you don t pay repeatedly for JVM boot We ll make this even easier with built-in support for AWS Lambda functions written in Java.
AWS Lambda 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
36bn minutes of video watched in 2012 Increased a lot in the last two years
Media Services Part of BBC Digital Existed before 2011, Perl system 24 Olympics 2012 live video streams September 2013 14h for delivery to 30 minutes August 2014 30 minutes for delivery to 3 minutes
Simulcast 24/7 adaptive bitrate streaming, without interruption 25 continuous video streams 70 continuous radio streams 30 temporary radio streams 24 temporary video streams How does my app know where to find the content?
Radio and Video Manifests Over 20,000 files Highly cacheable as they change about once a month Edit by hand? No way! Set of scripts that grew over time Error Prone Not reproducible
AWS Lambda Configuration is uploaded from SVN to S3 S3 Notifies Lambda Lambda reads the file from S3 and produces each of the 20,000 files Lambda puts the resulting files in a different bucket which the CDN references
Micro Services & Continuous Delivery 100+ small components Build, test, deploy, test, deploy Heavier Java components take 30 minutes for deployment Lighter JavaScript Lambda components take 3 minutes
Summary Java based require EC2 Lambda is another micro service deployment tool Quick You have probably made use of it
Three Next Steps 1. Go to the AWS console to create and test your first Lambda function. The first 1M requests each month are on us! 2. Use the AWS Mobile SDK and Lambda to quickly create an instantly scalable mobile app. 3. Use AWS Lambda to add custom logic to S3, DynamoDB, SNS, Kinesis, or Cognito events no servers required!
LONDON