Running Microservices with Lambda and API Gateway
-
Upload
amazon-web-services -
Category
Technology
-
view
818 -
download
0
Transcript of Running Microservices with Lambda and API Gateway
AWS Cloud Kata for Start-Ups and Developers
Hong Kong
Building Serverless BackendsUsing AWS Lambda and Amazon API Gateway
Alex Smith
Head of Media & Entertainment Architecture, Asia Pacific
Amazon Web Services
AWS Cloud Kata for Start-Ups and Developers
The Familiar 3 Tier Architecture
https://d0.awsstatic.com/whitepapers/AWS_Serverless_Multi-Tier_Architectures.pdf
AWS Cloud Kata for Start-Ups and Developers
Here is what that translates to in real life
http://media.amazonwebservices.com/architecturecenter/AWS_ac_ra_web_01.pdf
AWS Cloud Kata for Start-Ups and Developers
No server is easier to manage…
…than no server.
AWS Lambda
AWS Cloud Kata for Start-Ups and Developers
AWS Lambda: Run code in response to events
Lambda functions: Stateless, trigger-based code execution
Triggered by events:
• Direct Sync and async API calls
• AWS Service integrations
• 3rd party triggers
Makes it easy to:
• Perform data-driven auditing, analysis, and notification
• Build back-end services that perform at scale
AWS Cloud Kata for Start-Ups and Developers
Cost-effective and
efficient
No Infrastructure
to manage
Pay only for what you use
Bring Your
Own Code
Productivity focused compute platform to build powerful, dynamic, modular
applications in the cloud
Run code in standard
languages
Focus on business logic
Benefits of AWS Lambda
1 2 3
AWS Cloud Kata for Start-Ups and Developers
AWS Compute offerings
VM App Function
Service EC2 ECS Lambda
H/W OS Runtime
Unit of scale
Level of
abstraction
AWS Cloud Kata for Start-Ups and Developers
Multiple Application Types using AWS
LambdaAnalytics
• Operational management
• Live Dashboards
Data workflows
• Content management
• ETL workflows
Interactive Backends
• Bots
• Webhooks
Autonomous IT
• Policy engines
• Infrastructure management
AWS Cloud Kata for Start-Ups and Developers
Applications Components for Serverless
appsEVENT SOURCE FUNCTION SERVICES (ANYTHING)
Changes in
data state
Requests to
endpoints
Changes in
resource state
Node
Python
Java
… more coming
AWS Cloud Kata for Start-Ups and Developers
Amazon
S3
Amazon
DynamoDB
Amazon
Kinesis
AWS
CloudFormationAWS
CloudTrail
Amazon
CloudWatch
Amazon
SNS
Amazon
SES
Amazon
API Gateway
Amazon
Cognito
AWS
IoT
Amazon
Alexa
Cron events
DATA STORES ENDPOINTS
REPOSITORIES EVENT/MESSAGE SERVICES
Event Sources that integrate with AWS
Lambda
… and the list continues to grow.
AWS Cloud Kata for Start-Ups and Developers
That’s Great!
I wish I had that, but for my…
APIs
WebApps
AWS Cloud Kata for Start-Ups and Developers
That’s Great!
I wish I had that, but for my…
APIs
WebApps
…
AWS Cloud Kata for Start-Ups and Developers
APIs are Hard
Managing multiple versions and stages of an API is difficult
Monitoring 3rd party developers’ access is time consuming
Access authorization is a challenge
Traffic spikes create operational burden
What if I don’t want servers at all?
AWS Cloud Kata for Start-Ups and Developers
API Gateway to manage your REST endpoints
Build, Deploy, and Manage APIs
Throttling rules per HTTP method
Cache with customizable keys
Multiple API versions and stages
Generate client SDKs
Dashboard for visual monitoring
Flexible authorization model
API Keys for 3rd party developers
AWS Cloud Kata for Start-Ups and Developers
Benefits of API Gateway for web/mobile
appsLow cost and efficient
Performance at any
scale
DDoS protection and
throttling
Streamline API
development
Authenticate and
authorize requests
Create RESTful
Endpoints
AWS Cloud Kata for Start-Ups and Developers
API Gateway + Lambda = Frontend + Backend
Internet
Mobile Apps
Websites
Services
API
Gateway
AWS
Endpoints on
Amazon EC2
Any other publicly
accessible endpoint
Amazon
CloudWatch
Monitoring
Amazon
CloudFront
AWS Lambda
functions
API Gateway
Cache
AWS Cloud Kata for Start-Ups and Developers
Real World Architecture
http://media.amazonwebservices.com/architecturecenter/AWS_ac_ra_web_01.pdf
AWS Cloud Kata for Start-Ups and Developers
Real World “Serverless” Architecture
https://s3.amazonaws.com/awslambda-reference-architectures/web-app/lambda-refarch-webapp.pdf
AWS Cloud Kata for Start-Ups and Developers
Live Demo: Building a Serverless
web application
https://vote.alexjs.im
http://vote.alex.中文网
AWS Cloud Kata for Start-Ups and Developers
Demo site: A simple Serverless CRUD backend
http://squirrelbin.com/
AWS Cloud Kata for Start-Ups and Developers
Best practices for Lambda functions• Memory:
• CPU proportional memory
• Increasing memory makes your code
execute faster (if CPU bound)
• Timeout
• Increasing timeout allows for longer
functions, but more wait in case of errors
• Retries:
• For API Gateway, Lambda doesn’t retry
the function execution if failed
• Gateway generated SDKs retry throttled
requests
• Permission model:
• API Gateway synchronously triggers
Lambda, so assign API Gateway a
resource policy to invoke Lambda.
AWS Cloud Kata for Start-Ups and Developers
Monitoring and Debugging Lambda functions
• Console Dashboard
• Lists all Lambda functions
• Easy editing of resources,
event sources and other
settings
• At-a-glance metrics
• Metrics in CloudWatch
• Requests
• Errors
• Latency
• Throttles
• Logging in CloudWatch Logs
AWS Cloud Kata for Start-Ups and Developers
Using API Gateway Input/Output
TransformsFilter output results
• Remove private/unnecessary data
• Filter dataset size to improve API performance
Translate between client-backend
• Convert GET query string parameters to body for POST
• Talk XML to API user-interface but JSON to Lambda
AWS Cloud Kata for Start-Ups and Developers
Managing different versions of your API
stack• Operate multiple API versions and
multiple stages for each version
simultaneously
• Clone an existing API to start working
on the next major version
• Set up custom domain names to point
directly to a stage
• Version Lambda functions, and
associate API stage with Lambda
function version alias
AWS Cloud Kata for Start-Ups and Developers
Three Next Steps
1. Check out http://squirrelbin.com/
2. Try out the “Serverless Web-App Reference Architecture” at
https://github.com/awslabs/lambda-refarch-webapp/
3. Build your own custom web-app using the AWS Lambda
blueprints at https://console.aws.amazon.com/lambda
AWS Cloud Kata for Start-Ups and Developers
Questions?
T: @alexjs