AWS Lambda and Serverless Cloud
-
Upload
amazon-web-services -
Category
Business
-
view
3.186 -
download
2
Transcript of AWS Lambda and Serverless Cloud
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Adrian Hornsby
Solutions Architect with AWS
AWS Stockholm Summit, May 4, 2016
Getting Started with AWS Lambda
and the Serverless Cloud
Nils Undén,
CTO, eBuilder
What is serverless computing?
• VMs
• Machine as the unit of scale
• Abstracts the hardware
• Containers
• Application as the unit of scale
• Abstracts the OS
• Serverless
• Functions as the unit of scale
• Abstracts the language runtime
How do I choose?
• VMs
• “I want to configure machines,
storage, networking, and my OS”
• Containers
• “I want to run servers, configure
applications, and control scaling”
• Serverless
• “Run my code when it’s needed”
Microservices and AWS Lambda
AWS Lambda + Amazon API Gateway is the
easiest way to create microservices
• Event handlers one function per event type
• Serverless back ends one function per API / path
• Data processing one function per data type
Agenda
Overview
Use cases
Recent launches
Best practices
AWS Lambda: Serverless computing
Run code without servers. Pay only for the compute time you consume. Be happy.
Triggered by events or called from APIs:
• PUT to an Amazon S3 bucket
• Updates to Amazon DynamoDB table
• Call to an Amazon API Gateway endpoint
• Mobile app back-end call
• And many more…
Makes it easy to:
• Perform real-time data processing
• Build scalable back-end services
• Glue and choreograph systems
Continuous
scaling
No servers to
manage
Never pay for idle
– no cold servers
(only happy
accountants)
Benefits of AWS Lambda
Pay-per request
• Buy compute time in
100 ms increments
• Low request charge
• No hourly, daily, or
monthly minimums
• No per-device fees
Never pay for idle!
Free Tier
1 million requests and 400,000 GBs of compute
every month, every customer
Using AWS Lambda
Bring your own code
• Node.js, Java, Python
• Bring your own libraries
(even native ones)
Simple resource model
• Select power rating from
128 MB to 1.5 GB
• CPU and network allocated
proportionately
• Reports actual usage
Flexible authorization
• Securely grant access to
resources, including VPCs
• Fine-grained control over
who can call your functions
Flexible use
• Call or send events
• Integrated with other AWS
services
• Build whole serverless
ecosystems
Using AWS Lambda
Programming model
• AWS SDK built in (Python and Node.js)
• Lambda is the front end
• Use processes, threads, /tmp, sockets normally
Stateless
• Persist data using Amazon
DynamoDB, S3, or
ElastiCache
• No affinity to infrastructure
(can’t “log in to the box”)
Authoring functions
• Author directly using the
console WYSIWYG editor
• Package code as a .zip and
upload to Lambda or S3
• Plugins for Eclipse and
Visual Studio
• Command line tools
Monitoring and logging
• Built-in metrics for requests,
errors, latency, and throttles
• Built-in logs in Amazon
CloudWatch Logs
But what *is* AWS Lambda?
Linux containers as an implementation, not a programming
or deployment abstraction
• Process and network isolation, cgroups, seccomp, …
Predictive capacity management
• Purpose-built, massively scaled language runtime delivery
service
Swagger interpreter (API Gateway)
Amazon API Gateway: Serverless APIs
Internet
Mobile apps
Websites
Services
AWS Lambda
functions
AWS
API Gateway
cache
Endpoints on
Amazon EC2
Any other publicly
accessible endpointAmazon
CloudWatch
Amazon
CloudFrontAmazon
API Gateway
Benefits of Amazon API Gateway
Create a unified API
front end for
multiple
microservices
DDoS protection, monitoring and
throttling for back-end systems
Authenticate and
authorize requests
AWS Lambda, API Gateway regions
Available regions
Use cases
Lambda: Use cases
Serverless app
ecosystems
Data processing Back ends
Use case: Data processing
Example: Amazon S3 bucket triggers
Amazon S3 bucket events
Original objectCompressed object
1
2
3
AWS Lambda
Why functions are the right answer
Amazon
DynamoDB
Call Events
Feedback loop
Use case: Automatically scalable back ends
1. AWS Mobile SDK + Amazon Cognito for mobile app
Or AWS IoT for devices
2. Amazon API Gateway (if you want your own endpoint)
3. AWS Lambda runs the code
4. Amazon DynamoDB holds the data
AWS LambdaAmazon
DynamoDB
Use case: Serverless web app architecture
1. Amazon S3 for serving static content
2. AWS Lambda for dynamic content
3. Amazon API Gateway for https access
4. Amazon DynamoDB for NoSQL data storage
Dynamic content
in AWS Lambda
Data stored in
Amazon
DynamoDB
API GatewayStatic content in
Amazon S3
Use case: New app ecosystems:
Alexa apps + Slack = serverless bots!
Alexa, tell Slack to
send, “I’m giving the
demo now.”
Message retrieval through scheduled
polling
Kevin says,
“Break a leg!”
Message upload
(via Slack API)
Team
(channel users)
Slack
22Commercial in confidence
https://vimeo.com/137347367
23Commercial in confidence
eBuilder’s Effortless Device Care solution creates effortless device self-service for mobile operator customers!
Manage
warranty
repair
Manage
non-warranty
repair
Book and
pay for
Express
Services
Upgrade or
trade-in my
device
Sell my
device
Recycle my
device
Manage
insurance
repair
USE AND
RESOLVE
REPAIR
AND RENEW
Proactive
diagnostics
Trouble-
shooting
Warm
handover to
Assisted
Care
Manage
protection
Remote
assist
Startup and
usage Tips
Backup
Restore
Backup
Restore
eBuilder Efficient Device Care and an end-user with a smartphone issue
Our AWS PaaS Usage Journey (14m)
WHY?
Scalable B2C + Global deployment + Startup = All-in on AWS PaaS
#1 Microservice Architecture: EC2, DynamoDB, S3, Route53, CloudFront, ELB
#2 Cognito-security, API Gateway, SNS, SQS
#3 Mobile Analytics, AWS Lambdas, Redshift
Event-driven architecture: Lambdas + Kinesis Streams
HOW?
NEXT?
What is appealing to us in Lambdas?
#1 Delegate more to AWS - Simplify deployment and management
#2 Cost efficiency - pay for actual usage not for statically allocated resources
#3 Functional approach - Helps promote well-structured system design
What are our use cases for Lambdas?
mobile client
mobile
analytics
api gw lambdasdynamodb
sns topic
sqs queue
s3
MicroService
implementation
Event de-duplifier
and broadcaster
Event processor
dynamodb
What are our experiences so far?
#4 Using JavaScript both on Device (React) and on Backend (Lambda) helps
create full-stack developers
#2 Some activation latency to consider (we have seen 2s at worst) -
operationally very effective:
(latency of 394ms @ 95% for API-gw + 3 Lambdas + Dynamo)
#3 Lots of activity around automation - we started with Apex, now using
Serverless framework
#5 Nice fit with Domain Driven Design (DDD): Lambdas + Kinesis streams
#1 Insufficient data as of now to compare operational costs with static EC2:s
Recent launches and
best practices
re:Invent 2015
• Python
• Scheduled functions
• Longer running times (5 min.)
• Versioning
Recent launches
2016
• Higher code storage limits
(from 5 GB to 75 GB)
• VPC
• New region: Frankfurt
• Node.js 4.3.2
• Swagger API import
• 1-minute schedules
• AWS CloudFormation support
for API Gateway.
Function schedules: The how-to guide
How can I keep a function warm (no cold starts)?
Schedule it!
How can I poll a queue (like SQS)?
Schedule a function to read the queue.
How can I get more timers?
Have one scheduled function async invoke other functions.
How can I get granularity finer than 1 minute?
Run a background timer in your scheduled function.
Function versioning: The how-to guide
How can I get mutable configuration info?
Read it (e.g. from DynamoDB) during function initialization.
Wrap your config in a function and call it from your published code.
How do I “roll back” in AWS Lambda?
Using aliases, just switch what the alias points to.
(As a collection, add API Gateway stages or CloudFormation.)
How do I do blue/green deployments?
AWS Lambda handles fleet deployments, but if you want to shape
traffic, put a second “traffic cop” function in front.
How can I lock a client/device onto an old version?
Point them directly to that version’s ARN.
AWS Lambda VPC basics
• All Lambda functions run in a VPC, all the time
• You never need to “turn on” security – it’s always on
• You can also grant Lambda functions access to resources in your own VPC
• How: Add VPC subnet IDs and security group IDs to the function config
• Typical uses: RDB, ElastiCache, private EC2 endpoints
• Allows access to peered VPCs, VPN endpoints, and private S3 endpoints
• Functions configured for VPC access lose internet access…
• unless you have managed NAT or a NAT instance in the VPC
• …Even if you have “Auto-assign Public IP” enabled
• …Even if you have an internet gateway set up in your VPC
• …Even if your security group allows all outbound traffic
AWS Lambda VPC feature: Best practices
VPC is optional – don’t turn in on unless you need it.
The ENIs used by Lambda’s VPC feature count against
your quota.
Ensure you have enough to match your peak concurrency levels
(we’ll consolidate where we can).
DO NOT delete or rename these ENIs!
Ensure your subnets have enough IPs for those ENIs.
Specify at least one subnet in each Availability Zone
Otherwise, Lambda will obey, but can’t be as fault-tolerant.
The serverless compute manifesto
Functions are the unit of deployment and scaling.
No machines, VMs, or containers visible in the programming model.
Permanent storage lives elsewhere.
Scales per request. Users cannot over- or under-provision capacity.
Never pay for idle (no cold servers/containers or their costs).
Implicitly fault-tolerant because functions can run anywhere.
BYOC – Bring your own code.
Metrics and logging are a universal right.
Join the serverless revolution!
Product manager or business
analyst? Check out
aws.amazon.com/lambda for
scenarios and customer stories.
Developer? Go to the AWS
Lambda console, create a
function, and run it.(The first million invokes are on us!)
Add an event source or an HTTP
endpoint.
Build a mobile, voice, or IoT
back end with a few lines of
code.