SlideShare a Scribd company logo
AWS Lambda for Java Architects
Given by Derek C. Ashmore
August 2, 2016
©2016 Derek C. Ashmore, All Rights Reserved 1
Who am I?
• Professional Geek
since 1987
• Java/J2EE/Java EE
since 1999
• Roles include:
• Developer
• Architect
• Project Manager
• DBA
• System Admin
©2016 Derek C. Ashmore, All Rights Reserved 2
Discussion Resources
• This slide deck
– http://www.slideshare.net/derekashmore
• Sample code on my Github
– https://github.com/Derek-Ashmore/
• Sample Java AWS Lambda Source
– https://github.com/Derek-Ashmore/AWSLambdaExamples
• Slide deck has hyper-links!
– Don’t bother writing down URLs
©2016 Derek C. Ashmore, All Rights Reserved 3
Agenda
The “What”
and “Why” of
AWS Lambda
Developing
Lambda
Supporting
Lambda
Lambda and
Microservices
Summary /
Q&A
©2016 Derek C. Ashmore, All Rights Reserved 4
What are AWS Lambdas?
• You provide custom code -> AWS runs it
– Java, Node.js, Python
• Computing power with less management
– AWS manages the hardware
– AWS autoscales that hardware
– AWS maintains that hardware
• Lambdas are event driven
– API Gateway (e.g. RESTful Web Service call)
– Many more
• Lambdas are stateless
• Not to be confused with “Lambda Expressions” in Java 8
©2016 Derek C. Ashmore, All Rights Reserved 5
Lambda Event Sources
• API Gateway
• SNS Messaging
Subscriptions
• Schedule
• Storage writes
– S3, DynamoDB, Kenesis
©2016 Derek C. Ashmore, All Rights Reserved 6
• SES Email receipt
• Cloudwatch
– Schedule, Events, log entries
• Cognito (Security)
• CloudFormation
– Creation script
What’s the Business Benefit
• Less Maintenance Hassle
• Unlimited Parallelism
• Current cost advantage
– Don’t pay for idle
– CPU cost currently lower
• Free tier
– 1 M executions and 400K compute seconds per month
– Memory allocated determines allowed free-tier runtime
• 20 cents per 1 M executions + memory/runtime cost
– Administration cost
• No O/S upgrades, server backups, etc.
©2016 Derek C. Ashmore, All Rights Reserved 7
There’s no free lunch
• Less control over environment
– Harder to tune
– Memory and time limits on execution
• No Java EE amenities
– No connection pooling, session support, caching
• Proprietary Interface
– Potential Technical Lock-in
• No Guarantee that AWS cost will be constant
– Potential Business Risk
• Modern version of CGI
©2016 Derek C. Ashmore, All Rights Reserved 8
Agenda
The “What”
and “Why” of
AWS Lambda
Developing
Lambda
Supporting
Lambda
Lambda and
Microservices
Summary /
Q&A
©2016 Derek C. Ashmore, All Rights Reserved 9
Lambda Java API
• RequestHandler interface
• JSON marshalling of Request and Response
• Execution Context
• Deployment Zip Artifact
– Typically one RequestHandler per Zip artifact
©2016 Derek C. Ashmore, All Rights Reserved 10
Lambda Request / Response Sample
• Expose REST API that collects email addresses
for a mailing list
– https://scrubbed/prod/EmailCollector
• Sample request/response
©2016 Derek C. Ashmore, All Rights Reserved 11
Implementing a RequestHandler
• RequestHandler interface is generic.
– POJOs represent the request and response
– POJOs determine JSON request/response format
– Execution Context class provided by AWS
• This class specified when Lambda defined
• Note the wrapping try/catch
– Portion of the Context provided by AWS -> need more
– AWS Does marshalling
– ContextedRuntimeException from Apache Commons Lang3
• Note that the Lambda is thin -> Business logic is elsewhere
• Sample is on GitHub (here)
©2016 Derek C. Ashmore, All Rights Reserved 12
What’s in the Context?
• Execution Context provided by AWS
• Contains:
– AWS Request ID -> Get logs for specific request
– Function name, version, arn
– Cognito identity
– Remaining time/memory
– Mobile client information (AWS Mobile SDK)
• Environment name/value map
• Custom name/value map
©2016 Derek C. Ashmore, All Rights Reserved 13
Resource Support
• Java 8 Runtime ->
– you can configure memory available
• Log4J logging available
– Viewable/searchable in Cloudwatch logs
– Custom Log4J Appender provided
• Third party jars can be included
– Including AWS SDK for AWS Tasks (executing other Lambdas)
– JDBC Drivers
– HttpClient or Apache CXF
• Keep in Mind
– You create/destroy all database connections
• No connection pooling (Lambdas are stateless)
– Caching APIs have limited benefit (Lambdas are stateless)
– No Remote Debug capability
©2016 Derek C. Ashmore, All Rights Reserved 14
Lambda Deployment Package
• Zip Organization
– Root is in the classpath
– Lib contains 3rd party jars
• Maven example here
– Need maven-dependency-plugin, maven-antrun-plugin
©2016 Derek C. Ashmore, All Rights Reserved 15
API Gateway
• Exposes Lambdas as a RESTful Web Service
– Can be publicly available or part of a secured
private microservice library
©2016 Derek C. Ashmore, All Rights Reserved 16
Gateway Lambda Integration
©2016 Derek C. Ashmore, All Rights Reserved 17
• Integrations do basic transformations
– Map headers and parameters to Lambda request
fields
Gateway Models
©2016 Derek C. Ashmore, All Rights Reserved 18
Gateway Models (con’t)
• Jackson can generate the Json schema needed as
a Model
– No Mavin plugin for this
– Example Java code to generate (here)
– Example Mavin pom generating on build (here)
©2016 Derek C. Ashmore, All Rights Reserved 19
Lambdas and SNS Topics
• Lambdas can subscribe to SNS Publish/subscribe
topics
• Request Message is type SNSEvent
©2016 Derek C. Ashmore, All Rights Reserved 20
Lambdas can be scheduled
• Lambda executions can be scheduled through
CloudWatch
– Cron expressions supported
©2016 Derek C. Ashmore, All Rights Reserved 21
Tooling Gotchas
• API Gateway requires client with Server Name
Indication (SNI) support
– Most recent SoapUI does not (reference)
– Had to write my own test client using Httpclient
4.2 or above
©2016 Derek C. Ashmore, All Rights Reserved 22
Agenda
The “What”
and “Why” of
AWS Lambda
Developing
Lambda
Supporting
Lambda
Lambda and
Microservices
Summary /
Q&A
©2016 Derek C. Ashmore, All Rights Reserved 23
Versioning Support
• Lambda versioning and aliases
– Aliases are labels (e.g. PROD, TEST, DEV) that can be
reassigned to different versions.
– Versions are unique an can’t be changed.
• S3 versioning possible for Lambda Zip artifacts
• You need a correlation between source control
and Lambda version
– Possibilities
• Tag all Lambda versions in source control and include the
Lambda version number
• Breadcrumbs in the deployed Zip that describe the specific
source control change number used for the build
©2016 Derek C. Ashmore, All Rights Reserved 24
Lifecycle Environment Support
• Configuration Support
– Baked into the deployment zip
• You can’t just move the zips from environment to
environment
• Spring profiles not an option as you don’t control JVM
parms
– API Gateway does have staging variables
• No Remote Debug Support
©2016 Derek C. Ashmore, All Rights Reserved 25
Automated Deployment Options
• Nothing out of the box
• One possibility
– Load Lambda function from S3 bucket
– Jenkins plugin to load build artifacts to S3
• https://wiki.jenkins-ci.org/display/JENKINS/S3+Plugin
– Use AWS CLI to Manage lambda publishing and
aliases
©2016 Derek C. Ashmore, All Rights Reserved 26
Performance
• Start-up Time – Python, Node.js, Java
– Berezovsky performance test
• Throughput – Java and Node.js
– Both have a JIT
– DZone comparison here
– Close enough that other factors would likely guide
your language choice
©2016 Derek C. Ashmore, All Rights Reserved 27
Agenda
The “What”
and “Why” of
AWS Lambda
Developing
Lambda
Supporting
Lambda
Lambda and
Microservices
Summary /
Q&A
©2016 Derek C. Ashmore, All Rights Reserved 28
Lambdas and Microservices
©2016 Derek C. Ashmore, All Rights Reserved 29
Using Lambdas as Microservices
• Lambda / API Gateway is a deployment option for microservices
– No differences in design principles
• Single purpose
• Self-contained
– Still design for failure
• Don’t “assume” that Lambda outages can’t happen
– A Lambda might need external resources that aren’t available
• Off Limits: Coding patterns that use state
– Lambdas must be stateless
– Fail fast patterns
• Service Call Mediator
• Circuit Breaker
– Performance Patterns
• Expiring Cache (API Gateway allows request caching)
©2016 Derek C. Ashmore, All Rights Reserved 30
Back-ends for Front-ends
©2015 Derek C. Ashmore, All Rights Reserved 31
Retry Pattern
©2015 Derek C. Ashmore, All Rights Reserved 32
• Best for asynchronous tasks
• Limit the number of tries
• You must stay under your Lambda execution time limit!
• Use sleep interval between tries
• Only addresses temporary outages
• Sample Retry Pattern implementation here.
• Tooling Support:
– Apache CXF supports Retry
– Spring Batch RetryTemplate
– Apache HttpClient (Example here)
Dispatch via Messaging
©2015 Derek C. Ashmore, All Rights Reserved 33
• Place work instruction on persistent queue
• If receivers are down, work stacks in queue
• Work throttled by number of receivers
• Queue can be SES, JMS or AMQP
• Tooling Support:
– JMS Api (easy API – many use natively)
– Spring JMSTemplate or RabbitTemplate (producer)
Custom Rollback
©2015 Derek C. Ashmore, All Rights Reserved 34
Contract Testing
• Critical for MS architectures
– Contract changes can break other services
– Bulkhead for rogue developers
– Makes individual services more disposable
• Consumer-based testing
• Tooling support
– Apache HttpClient (4.2 or above)
©2015 Derek C. Ashmore, All Rights Reserved 35
Agenda
The “What”
and “Why” of
AWS Lambda
Developing
Lambda
Supporting
Lambda
Lambda and
Microservices
Summary /
Q&A
©2016 Derek C. Ashmore, All Rights Reserved 36
Chief Complaints
• Documentation leaves a lot to be desired
– This is an understatement.
– For Java Lambdas, you are almost on your own.
• Lambda start-up time not consistent
– Sometimes long start-up time for JVM
– Python is the fastest
• Optimizations that depend on state aren’t as easy
– You would have to persist that state
• This would have it’s own concurrency and performance
issues
©2016 Derek C. Ashmore, All Rights Reserved 37
Implementation Tips
• Separation of Concerns
– Keep Lambda code separate from business logic
• Might want to change vendors someday
– Keep AWS SDK code separate from business logic
• Same reason
– Invoke other Lambdas through the API Gateway, not directly through the AWS
SDK
• Same reason
– Keep Business Logic locally runnable/debuggable
• Remote debug isn’t yet possible
• Ensure you can always tie AWS Request Id to your business transaction
– Need a way to gather logs from a complete business transactions and the
many services it might use
– All invocations get unique AWS request Ids
• For example, lambda invokes other lambdas
– Configure log4j layout to include AWS Request Id (example)
©2016 Derek C. Ashmore, All Rights Reserved 38
Lambda and the Gartner Hype Cycle
©2016 Derek C. Ashmore, All Rights Reserved 39
Further Reading
• This slide deck
– http://www.slideshare.net/derekashmore
• AWS Lambda Reading List
– http://www.derekashmore.com/2016/04/aws-lambda-reading-list.html
©2016 Derek C. Ashmore, All Rights Reserved 40
Questions?
• Derek Ashmore:
– Blog: www.derekashmore.com
– LinkedIn: www.linkedin.com/in/derekashmore
– Twitter: https://twitter.com/Derek_Ashmore
– GitHub: https://github.com/Derek-Ashmore
– Book: http://dvtpress.com/
©2016 Derek C. Ashmore, All Rights Reserved 41

More Related Content

PDF
Aws Lambda for Java Architects - JavaOne -2016-09-19
PDF
AWS Lambda Deployments: Best Practices and Common Mistakes O'Reilly Software...
PDF
Microservices for architects los angeles-2016-07-16
PDF
Aws Lambda for Java Architects CJug-Chicago 2016-08-30
PDF
AWS Lambda for Architects - Chicago Coder Conference -2016-06-07
PDF
Refactoring Into Microservices 2016-11-08
PDF
Refactoring Into Microservices 2016-11-06
PDF
Aws Lambda for Java Architects - Illinois VJug -2016-05-03
Aws Lambda for Java Architects - JavaOne -2016-09-19
AWS Lambda Deployments: Best Practices and Common Mistakes O'Reilly Software...
Microservices for architects los angeles-2016-07-16
Aws Lambda for Java Architects CJug-Chicago 2016-08-30
AWS Lambda for Architects - Chicago Coder Conference -2016-06-07
Refactoring Into Microservices 2016-11-08
Refactoring Into Microservices 2016-11-06
Aws Lambda for Java Architects - Illinois VJug -2016-05-03

What's hot (12)

PDF
Writing microservices in Java -- Chicago-2015-11-10
PDF
Refactoring Into Microservices. Chicago Coders Conference 2017-06-26
PDF
Microservices with Terraform, Docker and the Cloud. DevOps Wet 2018
PPTX
Sas 2015 event_driven
PPTX
Using Apache Camel as AKKA
PPT
DevOpsCon Cloud Workshop
PPT
Docker in the Cloud
PPT
High Availability Perl DBI + MySQL
PPTX
Peeling back the Lambda layers
PPTX
AWS Re:Invent - High Availability Architecture at Netflix
PPTX
Why akka
PPTX
Apache Performance Tuning: Scaling Out
Writing microservices in Java -- Chicago-2015-11-10
Refactoring Into Microservices. Chicago Coders Conference 2017-06-26
Microservices with Terraform, Docker and the Cloud. DevOps Wet 2018
Sas 2015 event_driven
Using Apache Camel as AKKA
DevOpsCon Cloud Workshop
Docker in the Cloud
High Availability Perl DBI + MySQL
Peeling back the Lambda layers
AWS Re:Invent - High Availability Architecture at Netflix
Why akka
Apache Performance Tuning: Scaling Out
Ad

Similar to Aws Lambda for Java Architects - Illinois JUG-Northwest -2016-08-02 (17)

PDF
AWS Lambda: Best Practices and Common Mistakes - Chicago Cloud Conference 2020
PDF
AWS Lambda: Best Practices and Common Mistakes - Chicago Cloud Conference 2019
PDF
AWS Lambda: Best Practices and Common Mistakes - Dev Ops West 2019
PDF
AWS Lambda: Best Practices and Common Mistakes - DevOps East 2019
PDF
AWS Lambda: Best Practices and Common Mistakes - AWS Community Days 2019
PDF
AWS Community Day - Derek C. Ashmore - AWS Lambda: Best Practices
PDF
Serverless in Java Lessons learnt
PDF
Webinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
PDF
Serverless in java Lessons learnt
PDF
SoCal NodeJS Meetup 20170215_aws_lambda
PPTX
Serverless design considerations for Cloud Native workloads
PDF
Introduction to AWS
PPTX
Developing serverless applications with .NET on AWS
PPTX
How Serverless Changes DevOps
PDF
Serverless Computing
PPTX
Scheduled Retweets Using AWS Lambda
PPTX
Auto Retweets Using AWS Lambda
AWS Lambda: Best Practices and Common Mistakes - Chicago Cloud Conference 2020
AWS Lambda: Best Practices and Common Mistakes - Chicago Cloud Conference 2019
AWS Lambda: Best Practices and Common Mistakes - Dev Ops West 2019
AWS Lambda: Best Practices and Common Mistakes - DevOps East 2019
AWS Lambda: Best Practices and Common Mistakes - AWS Community Days 2019
AWS Community Day - Derek C. Ashmore - AWS Lambda: Best Practices
Serverless in Java Lessons learnt
Webinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
Serverless in java Lessons learnt
SoCal NodeJS Meetup 20170215_aws_lambda
Serverless design considerations for Cloud Native workloads
Introduction to AWS
Developing serverless applications with .NET on AWS
How Serverless Changes DevOps
Serverless Computing
Scheduled Retweets Using AWS Lambda
Auto Retweets Using AWS Lambda
Ad

Recently uploaded (20)

PDF
Empathic Computing: Creating Shared Understanding
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Spectroscopy.pptx food analysis technology
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Cloud computing and distributed systems.
Empathic Computing: Creating Shared Understanding
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
The AUB Centre for AI in Media Proposal.docx
Chapter 3 Spatial Domain Image Processing.pdf
Encapsulation_ Review paper, used for researhc scholars
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Building Integrated photovoltaic BIPV_UPV.pdf
Machine learning based COVID-19 study performance prediction
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Mobile App Security Testing_ A Comprehensive Guide.pdf
cuic standard and advanced reporting.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
MYSQL Presentation for SQL database connectivity
Spectroscopy.pptx food analysis technology
Agricultural_Statistics_at_a_Glance_2022_0.pdf
MIND Revenue Release Quarter 2 2025 Press Release
Dropbox Q2 2025 Financial Results & Investor Presentation
“AI and Expert System Decision Support & Business Intelligence Systems”
Cloud computing and distributed systems.

Aws Lambda for Java Architects - Illinois JUG-Northwest -2016-08-02

  • 1. AWS Lambda for Java Architects Given by Derek C. Ashmore August 2, 2016 ©2016 Derek C. Ashmore, All Rights Reserved 1
  • 2. Who am I? • Professional Geek since 1987 • Java/J2EE/Java EE since 1999 • Roles include: • Developer • Architect • Project Manager • DBA • System Admin ©2016 Derek C. Ashmore, All Rights Reserved 2
  • 3. Discussion Resources • This slide deck – http://www.slideshare.net/derekashmore • Sample code on my Github – https://github.com/Derek-Ashmore/ • Sample Java AWS Lambda Source – https://github.com/Derek-Ashmore/AWSLambdaExamples • Slide deck has hyper-links! – Don’t bother writing down URLs ©2016 Derek C. Ashmore, All Rights Reserved 3
  • 4. Agenda The “What” and “Why” of AWS Lambda Developing Lambda Supporting Lambda Lambda and Microservices Summary / Q&A ©2016 Derek C. Ashmore, All Rights Reserved 4
  • 5. What are AWS Lambdas? • You provide custom code -> AWS runs it – Java, Node.js, Python • Computing power with less management – AWS manages the hardware – AWS autoscales that hardware – AWS maintains that hardware • Lambdas are event driven – API Gateway (e.g. RESTful Web Service call) – Many more • Lambdas are stateless • Not to be confused with “Lambda Expressions” in Java 8 ©2016 Derek C. Ashmore, All Rights Reserved 5
  • 6. Lambda Event Sources • API Gateway • SNS Messaging Subscriptions • Schedule • Storage writes – S3, DynamoDB, Kenesis ©2016 Derek C. Ashmore, All Rights Reserved 6 • SES Email receipt • Cloudwatch – Schedule, Events, log entries • Cognito (Security) • CloudFormation – Creation script
  • 7. What’s the Business Benefit • Less Maintenance Hassle • Unlimited Parallelism • Current cost advantage – Don’t pay for idle – CPU cost currently lower • Free tier – 1 M executions and 400K compute seconds per month – Memory allocated determines allowed free-tier runtime • 20 cents per 1 M executions + memory/runtime cost – Administration cost • No O/S upgrades, server backups, etc. ©2016 Derek C. Ashmore, All Rights Reserved 7
  • 8. There’s no free lunch • Less control over environment – Harder to tune – Memory and time limits on execution • No Java EE amenities – No connection pooling, session support, caching • Proprietary Interface – Potential Technical Lock-in • No Guarantee that AWS cost will be constant – Potential Business Risk • Modern version of CGI ©2016 Derek C. Ashmore, All Rights Reserved 8
  • 9. Agenda The “What” and “Why” of AWS Lambda Developing Lambda Supporting Lambda Lambda and Microservices Summary / Q&A ©2016 Derek C. Ashmore, All Rights Reserved 9
  • 10. Lambda Java API • RequestHandler interface • JSON marshalling of Request and Response • Execution Context • Deployment Zip Artifact – Typically one RequestHandler per Zip artifact ©2016 Derek C. Ashmore, All Rights Reserved 10
  • 11. Lambda Request / Response Sample • Expose REST API that collects email addresses for a mailing list – https://scrubbed/prod/EmailCollector • Sample request/response ©2016 Derek C. Ashmore, All Rights Reserved 11
  • 12. Implementing a RequestHandler • RequestHandler interface is generic. – POJOs represent the request and response – POJOs determine JSON request/response format – Execution Context class provided by AWS • This class specified when Lambda defined • Note the wrapping try/catch – Portion of the Context provided by AWS -> need more – AWS Does marshalling – ContextedRuntimeException from Apache Commons Lang3 • Note that the Lambda is thin -> Business logic is elsewhere • Sample is on GitHub (here) ©2016 Derek C. Ashmore, All Rights Reserved 12
  • 13. What’s in the Context? • Execution Context provided by AWS • Contains: – AWS Request ID -> Get logs for specific request – Function name, version, arn – Cognito identity – Remaining time/memory – Mobile client information (AWS Mobile SDK) • Environment name/value map • Custom name/value map ©2016 Derek C. Ashmore, All Rights Reserved 13
  • 14. Resource Support • Java 8 Runtime -> – you can configure memory available • Log4J logging available – Viewable/searchable in Cloudwatch logs – Custom Log4J Appender provided • Third party jars can be included – Including AWS SDK for AWS Tasks (executing other Lambdas) – JDBC Drivers – HttpClient or Apache CXF • Keep in Mind – You create/destroy all database connections • No connection pooling (Lambdas are stateless) – Caching APIs have limited benefit (Lambdas are stateless) – No Remote Debug capability ©2016 Derek C. Ashmore, All Rights Reserved 14
  • 15. Lambda Deployment Package • Zip Organization – Root is in the classpath – Lib contains 3rd party jars • Maven example here – Need maven-dependency-plugin, maven-antrun-plugin ©2016 Derek C. Ashmore, All Rights Reserved 15
  • 16. API Gateway • Exposes Lambdas as a RESTful Web Service – Can be publicly available or part of a secured private microservice library ©2016 Derek C. Ashmore, All Rights Reserved 16
  • 17. Gateway Lambda Integration ©2016 Derek C. Ashmore, All Rights Reserved 17 • Integrations do basic transformations – Map headers and parameters to Lambda request fields
  • 18. Gateway Models ©2016 Derek C. Ashmore, All Rights Reserved 18
  • 19. Gateway Models (con’t) • Jackson can generate the Json schema needed as a Model – No Mavin plugin for this – Example Java code to generate (here) – Example Mavin pom generating on build (here) ©2016 Derek C. Ashmore, All Rights Reserved 19
  • 20. Lambdas and SNS Topics • Lambdas can subscribe to SNS Publish/subscribe topics • Request Message is type SNSEvent ©2016 Derek C. Ashmore, All Rights Reserved 20
  • 21. Lambdas can be scheduled • Lambda executions can be scheduled through CloudWatch – Cron expressions supported ©2016 Derek C. Ashmore, All Rights Reserved 21
  • 22. Tooling Gotchas • API Gateway requires client with Server Name Indication (SNI) support – Most recent SoapUI does not (reference) – Had to write my own test client using Httpclient 4.2 or above ©2016 Derek C. Ashmore, All Rights Reserved 22
  • 23. Agenda The “What” and “Why” of AWS Lambda Developing Lambda Supporting Lambda Lambda and Microservices Summary / Q&A ©2016 Derek C. Ashmore, All Rights Reserved 23
  • 24. Versioning Support • Lambda versioning and aliases – Aliases are labels (e.g. PROD, TEST, DEV) that can be reassigned to different versions. – Versions are unique an can’t be changed. • S3 versioning possible for Lambda Zip artifacts • You need a correlation between source control and Lambda version – Possibilities • Tag all Lambda versions in source control and include the Lambda version number • Breadcrumbs in the deployed Zip that describe the specific source control change number used for the build ©2016 Derek C. Ashmore, All Rights Reserved 24
  • 25. Lifecycle Environment Support • Configuration Support – Baked into the deployment zip • You can’t just move the zips from environment to environment • Spring profiles not an option as you don’t control JVM parms – API Gateway does have staging variables • No Remote Debug Support ©2016 Derek C. Ashmore, All Rights Reserved 25
  • 26. Automated Deployment Options • Nothing out of the box • One possibility – Load Lambda function from S3 bucket – Jenkins plugin to load build artifacts to S3 • https://wiki.jenkins-ci.org/display/JENKINS/S3+Plugin – Use AWS CLI to Manage lambda publishing and aliases ©2016 Derek C. Ashmore, All Rights Reserved 26
  • 27. Performance • Start-up Time – Python, Node.js, Java – Berezovsky performance test • Throughput – Java and Node.js – Both have a JIT – DZone comparison here – Close enough that other factors would likely guide your language choice ©2016 Derek C. Ashmore, All Rights Reserved 27
  • 28. Agenda The “What” and “Why” of AWS Lambda Developing Lambda Supporting Lambda Lambda and Microservices Summary / Q&A ©2016 Derek C. Ashmore, All Rights Reserved 28
  • 29. Lambdas and Microservices ©2016 Derek C. Ashmore, All Rights Reserved 29
  • 30. Using Lambdas as Microservices • Lambda / API Gateway is a deployment option for microservices – No differences in design principles • Single purpose • Self-contained – Still design for failure • Don’t “assume” that Lambda outages can’t happen – A Lambda might need external resources that aren’t available • Off Limits: Coding patterns that use state – Lambdas must be stateless – Fail fast patterns • Service Call Mediator • Circuit Breaker – Performance Patterns • Expiring Cache (API Gateway allows request caching) ©2016 Derek C. Ashmore, All Rights Reserved 30
  • 31. Back-ends for Front-ends ©2015 Derek C. Ashmore, All Rights Reserved 31
  • 32. Retry Pattern ©2015 Derek C. Ashmore, All Rights Reserved 32 • Best for asynchronous tasks • Limit the number of tries • You must stay under your Lambda execution time limit! • Use sleep interval between tries • Only addresses temporary outages • Sample Retry Pattern implementation here. • Tooling Support: – Apache CXF supports Retry – Spring Batch RetryTemplate – Apache HttpClient (Example here)
  • 33. Dispatch via Messaging ©2015 Derek C. Ashmore, All Rights Reserved 33 • Place work instruction on persistent queue • If receivers are down, work stacks in queue • Work throttled by number of receivers • Queue can be SES, JMS or AMQP • Tooling Support: – JMS Api (easy API – many use natively) – Spring JMSTemplate or RabbitTemplate (producer)
  • 34. Custom Rollback ©2015 Derek C. Ashmore, All Rights Reserved 34
  • 35. Contract Testing • Critical for MS architectures – Contract changes can break other services – Bulkhead for rogue developers – Makes individual services more disposable • Consumer-based testing • Tooling support – Apache HttpClient (4.2 or above) ©2015 Derek C. Ashmore, All Rights Reserved 35
  • 36. Agenda The “What” and “Why” of AWS Lambda Developing Lambda Supporting Lambda Lambda and Microservices Summary / Q&A ©2016 Derek C. Ashmore, All Rights Reserved 36
  • 37. Chief Complaints • Documentation leaves a lot to be desired – This is an understatement. – For Java Lambdas, you are almost on your own. • Lambda start-up time not consistent – Sometimes long start-up time for JVM – Python is the fastest • Optimizations that depend on state aren’t as easy – You would have to persist that state • This would have it’s own concurrency and performance issues ©2016 Derek C. Ashmore, All Rights Reserved 37
  • 38. Implementation Tips • Separation of Concerns – Keep Lambda code separate from business logic • Might want to change vendors someday – Keep AWS SDK code separate from business logic • Same reason – Invoke other Lambdas through the API Gateway, not directly through the AWS SDK • Same reason – Keep Business Logic locally runnable/debuggable • Remote debug isn’t yet possible • Ensure you can always tie AWS Request Id to your business transaction – Need a way to gather logs from a complete business transactions and the many services it might use – All invocations get unique AWS request Ids • For example, lambda invokes other lambdas – Configure log4j layout to include AWS Request Id (example) ©2016 Derek C. Ashmore, All Rights Reserved 38
  • 39. Lambda and the Gartner Hype Cycle ©2016 Derek C. Ashmore, All Rights Reserved 39
  • 40. Further Reading • This slide deck – http://www.slideshare.net/derekashmore • AWS Lambda Reading List – http://www.derekashmore.com/2016/04/aws-lambda-reading-list.html ©2016 Derek C. Ashmore, All Rights Reserved 40
  • 41. Questions? • Derek Ashmore: – Blog: www.derekashmore.com – LinkedIn: www.linkedin.com/in/derekashmore – Twitter: https://twitter.com/Derek_Ashmore – GitHub: https://github.com/Derek-Ashmore – Book: http://dvtpress.com/ ©2016 Derek C. Ashmore, All Rights Reserved 41