SlideShare a Scribd company logo
THE FUTURE WILL BETHE FUTURE WILL BE
SERVERLESSSERVERLESS
Verona, 9 May 2018
Luciano Mammino ( )@loige
loige.link/serverless-jsday 1
loige.link/serverless-jsday 2
LUCIANO... WHOLUCIANO... WHO
Find me online:
-  (@loige)
-  (lmammino)
-
-  (loige.co)
Twitter
GitHub
Linkedin
Blog
Solution Architect at
with @mariocasciaro
with @andreaman87
with @ Podgeypoos79 3
AGENDAAGENDA
CHAPTER 1:CHAPTER 1: FROM BARE METAL TO SERVERLESSFROM BARE METAL TO SERVERLESS
CHAPTER 2:CHAPTER 2: SERVERLESS, WTF?!SERVERLESS, WTF?!
CHAPTER 3:CHAPTER 3: UNDERSTANDING SERVERLESSUNDERSTANDING SERVERLESS
CHAPTER 4:CHAPTER 4: A SERVERLESS USE CASEA SERVERLESS USE CASE
CHAPTER 5:CHAPTER 5: PROS N' CONSPROS N' CONS
CHAPTER 6:CHAPTER 6: IT'S TIME TO GET STARTEDIT'S TIME TO GET STARTED
4
CHAPTER 1CHAPTER 1
FROMFROM BAREMETALBAREMETAL  TO  TO SERVERLESSSERVERLESS
loige.co/from-bare-metal-to-serverless
5
“YOUHAVETOKNOWTHEPASTTOUNDERSTANDTHE“YOUHAVETOKNOWTHEPASTTOUNDERSTANDTHE
PRESENT.”PRESENT.”
― Carl Sagan
6
1989-1991 — Sir Tim Berners-Lee invented the World Wide Web 7
1991-1995 — The bare metal age 8
1995 — The invention of web hosting 9
1997 — Grid computing: 2 machines are better than 1!
Ian Foster
10
1999 — Salesforce introduces the concept of Software as a Service (SaaS)
Marc Benioff
11
2001 — VMWare releases ESXi, "server virtualization" becomes a thing 12
2002-2006 — AWS is born (IaaS), people talk about "Cloud computing" 13
2009 — Heroku and the invention of the "Platform as a Service" (PaaS)
 James Lindenbaum
Adam Wiggins
Orion Henry
14
2011 — Envolve/Firebase, real time database as a service (RTDaaS???)
James Tamplin and Andrew Lee
15
2012 — Parse.com and the first Backend as a Service (BaaS)
Tikhon Bernstam
Ilya Sukhar
James Yu
Kevin Lacker
16
2013 — Docker, "linux containers are better than virtual machines"
Solomon Hykes
17
2013-2015 — Kubernetes / Swarm / Nomad / CoreOs (containers at scale) 18
2014 — Launch of AWS Lambda (FaaS) 19
CHAPTER 2CHAPTER 2
SERVERLESS,WTF*?!SERVERLESS,WTF*?!
*What's The Fun 20
"Serverless most often refers to serverless applications. Serverless applications
are ones that don't require you to provision or manage any servers. You can focus
on your core product and business logic instead of responsibilities like operating
system (OS) access control, OS patching, provisioning, right-sizing, scaling, and
availability. By building your application on a serverless platform, the platform
manages these responsibilities for you."
 
— Amazon Web Services
loige.link/serverless-apps-lambda
21
“   The essence of the serverless trend is the absence of the
server concept during software development.
 
— Auth0
loige.link/what-is-serverless
22
loige.link/serverless-commitstrip 23
CHAPTER 3CHAPTER 3
UNDERSTANDING SERVERLESSUNDERSTANDING SERVERLESS
24
loige.link/serverless-abstraction
25
THE 4 PILLARS OF SERVERLESSTHE 4 PILLARS OF SERVERLESS
(TLDR; IT'S NOT ONLY ABOUT SERVERS)(TLDR; IT'S NOT ONLY ABOUT SERVERS)
No server management
You don't know how many and how they are configured
Flexible scaling
If you need more resources, they will be allocated for you
High availability
Redundancy and fault tolerance are built in
Never pay for idle
Unused resources cost $0
26
THE SERVERLESS LAYERSTHE SERVERLESS LAYERS
(TLDR; IT'S NOT ONLY "FAAS")(TLDR; IT'S NOT ONLY "FAAS")
COMPUTECOMPUTE
DATADATA
MESSAGING AND STREAMINGMESSAGING AND STREAMING
27
USER MANAGEMENT AND IDENTITYUSER MANAGEMENT AND IDENTITY
MONITORING AND DEPLOYMENTMONITORING AND DEPLOYMENT
EDGEEDGE
STUFF THAT WE CAN BUILDSTUFF THAT WE CAN BUILD
 Mobile Backends
 APIs & Microservices
 Data Processing pipelines
⚡  Webhooks
  Bots and integrations
⚙  IoT Backends
 Single page web applications
28
SOME SERVERLESS APPS I HELPED BUILDSOME SERVERLESS APPS I HELPED BUILD
Open source
A "semi-automated" weekly newsletter ( )
A middleware framework for AWS Lambda ( )
 
Enterprise
Various solutions for the UK Energy industry: Trading platform, Billing engine,
Market data aggregator ( )
Big data pipeline (~1-5TB/day/customer) to make network data searchable
( )
Fullstack bulletin
middy.js.org
Planet 9 Energy
Vectra.ai
29
EXECUTION MODELEXECUTION MODEL
Event →
30
IF   ________________________________  
 
THEN ________________________________ 
        
"IF"IF THISTHIS THENTHEN THATTHAT" MODEL" MODEL
31
SERVERLESS AND JAVASCRIPTSERVERLESS AND JAVASCRIPT
Frontend
Serverless Web hosting is static, but you can build SPAs
(React, Angular, Vue, etc.)
Backend
Node.js is supported by every provider
⚡ Fast startup (as opposed to Java)
Use all the modules on NPM
Support other languages/dialects
(TypeScript, ClojureScript, ESNext...)
32
exports.myLambda = function (
event,
context,
callback
) {
// get input from event and context
// use callback to return output or errors
}
ANATOMY OF A NODE.JS LAMBDA ON AWSANATOMY OF A NODE.JS LAMBDA ON AWS
33
CHAPTER 4CHAPTER 4
A SERVERLESS USE CASEA SERVERLESS USE CASE
34
Search for threats using network metadata
Security researcher
Have an API to be able to search across 
network metadata files available on the 
shared FTP drive
I can find and validate potential 
security threats on the network
35
A SERVERLESS IMPLEMENTATION (ON AWS)A SERVERLESS IMPLEMENTATION (ON AWS)
Network
Metadata
FTP Storage
Search API
(API Gateway)
Network metadata search service
User or other
services
Sync
Lambda
Parse/Load
Lambda
API
Lambda
Network Metadata
S3 Bucket
/metadata
elastic search index 36
scheduled event
new object
API 
Request 
SYNC LAMBDASYNC LAMBDA
{
"account": "123456789012",
"region": "us-east-1",
"detail": {},
"detail-type": "Scheduled Event",
"source": "aws.events",
"time": "2018-05-09T14:30:21Z",
"id": "cdc73f9d-aea9-1234-9d5a-835b769c0d9c",
"resources": [
"arn:aws:events:us-east-1:123456789012:rule/my-schedule"
]
}
Cloudwatch scheduled event
37
exports.syncLambda = (
event,
context,
callback
) => {
// 1. connect to the FTP server
// 2. get list of files from FTP
// 3. get list of files from S3
// 4. make a diff to find new files in FTP
// 5. read the new files and save them to S3
// 6. invoke the callback to stop lambda
}
SYNC LAMBDASYNC LAMBDA
38
LOAD LAMBDALOAD LAMBDA
{
"Records": [
{
"eventTime": "2018-05-09T14:30:21Z",
"s3": {
"object": {
"eTag": "0123456789abcdef0123456789abcdef",
"sequencer": "0A1B2C3D4E5F678901",
"key": "2018-05-09-metadata.csv.gz",
"size": 1024
},
"bucket": {
"arn": "arn:aws:s3:::metadata-sync-files",
"name": "metadata-sync-files",
}
},
"awsRegion": "us-east-1",
"eventName": "ObjectCreated:Put",
"eventSource": "aws:s3"
}
]
}
S3 new object event
new object
39
exports.loadLambda = (
event,
context,
callback
) => {
// 1. get the new file details from the `event`
// 2. read the file and deserialize the records
// 3. send the records to elastic search using
// the bulk API
// 4. invoke the callback to stop lambda
}
LOAD LAMBDALOAD LAMBDA
40
API LAMBDAAPI LAMBDA
{
"body": "",
"resource": "/metadata/search",
"requestContext": {
"resourceId": "123456",
"apiId": "1234567890",
"resourcePath": "/metadata/search",
"httpMethod": "GET",
"requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef",
"stage": "prod"
},
"queryStringParameters": {
"q": "srcIp:127.0.0.1 AND host:google.com"
},
"headers": {
"User-Agent": "Custom User Agent String",
},
"httpMethod": "GET",
"path": "/metadata/search"
}
API Gateway proxy event
API 
Request 
41
exports.apiLambda = (
event,
context,
callback
) => {
// 1. read the HTTP details (query) from
// the `event`
// 2. issue the query to ElasticSearch to the
// given index
// 3. reformat the results into an API gateway
// response
// 4. invoke the callback passing the response
}
API LAMBDAAPI LAMBDA
42
ORCHESTRATION / CONFIGURATIONORCHESTRATION / CONFIGURATION
WHO DEFINES THE EVENTS AND WHERE DO WE STORE THE CONFIG?WHO DEFINES THE EVENTS AND WHERE DO WE STORE THE CONFIG?
43
ORCHESTRATION / CONFIGURATIONORCHESTRATION / CONFIGURATION
MANY OPTIONSMANY OPTIONS
Manually a.k.a. "clicky-clicky" from the Web UI
Declarative code-based approaches:
orAWS Cloudformation SAM
Serverless framework
Terraform
44
service: metadataSearch
provider:
name: aws
runtime: nodejs8.10
functions:
sync:
handler: index.syncLambda
environment:
FTP_HOST: "28.0.1.22:23"
FTP_USERNAME: admin
FTP_PASSWORD: unicorns
S3_BUCKET: metadata-sync-files
events:
- schedule: rate(2 hours)
load:
handler: index.loadLambda
environment:
ES_INDEX: metadata
events:
- s3:
bucket: metadata-sync-files
event: "s3:ObjectCreated:*"
api:
handler: index.apiLambda
environment:
ES_INDEX: metadata
events:
- http: GET metadata/search
SERVERLESS FRAMEWORK EXAMPLESERVERLESS FRAMEWORK EXAMPLEserverless.yml
sls deploy
Reads the serverless.yml and parses the
resources
Creates a zip file containing the source
code
Creates a Cloudformation stack with all
the resources listed in serverless.yml
Deploys the stack (including Lambda code)
$
45
(MANY) THINGS I DIDN'T HAVE TO WORRY ABOUT...(MANY) THINGS I DIDN'T HAVE TO WORRY ABOUT...
What type of virtual machine do I need?
What operating system?
How to keep OS/System updated?
How much disk space do I need?
How do I handle/retry failures?
How do I collect and rotate logs?
What about metrics?
What machine do I need to run the database?
How do I backup the database?
How do I scale the database?
Which web server should I use and how to configure it?
Throttling? Managing API Keys? API caching?
46
CHAPTER 5CHAPTER 5
PROS N' CONSPROS N' CONS
47
FOCUS ON DELIVERING BUSINESS VALUE / FAST TIMEFOCUS ON DELIVERING BUSINESS VALUE / FAST TIME
TO MARKETTO MARKET
48
LESS "TECH-FREEDOM™" /LESS "TECH-FREEDOM™" /
TIGHT VENDOR LOCK-IN!TIGHT VENDOR LOCK-IN!
49
OPTIMAL RESOURCE ALLOCATIONOPTIMAL RESOURCE ALLOCATION
50
NOT-MAGIC™!NOT-MAGIC™!
YOU STILL HAVE TO WRITE CONFIGURATIONYOU STILL HAVE TO WRITE CONFIGURATION
51
AUTO-SCALABILITYAUTO-SCALABILITY
52
COLDSTARTCOLDSTARTPROBLEMPROBLEM
loige.link/cold-start
53
HIGH AVAILABILITYHIGH AVAILABILITY
54
SOFT/HARDLIMITSSOFT/HARDLIMITS
loige.link/lambda-limits
55
PAY PER USAGEPAY PER USAGE
(don't pay for idle!)
56
LOCAL DEVELOPMENT,LOCAL DEVELOPMENT,
TESTING, DEBUGGINGTESTING, DEBUGGING
57
GROWING ECOSYSTEMGROWING ECOSYSTEM
58
OLDER TECHNOLOGIESOLDER TECHNOLOGIES
MIGHT NOT INTEGRATE WELLMIGHT NOT INTEGRATE WELL
59
CHAPTER 6CHAPTER 6
IT'S TIME TO GET STARTEDIT'S TIME TO GET STARTED
60
WHO IS ALREADY ADOPTING SERVERLESSWHO IS ALREADY ADOPTING SERVERLESS
61
PICK A FAAS AND START TO HAVE FUN!PICK A FAAS AND START TO HAVE FUN!
IBM
Cloud
Functions
AWS
Lambda
Azure
Functions
Google
Cloud
Functions
Auth0
Webtask
Iron.io
FaaS
Spotinst
Functions
Apache
OpenWhisk
Fission
stdlib
service
Functions
62
Fn Kubeless
CLOUD BASEDCLOUD BASED
SELF-HOSTED / OPEN SOURCESELF-HOSTED / OPEN SOURCE
Feffe LeverOS Open FaaS
WHY IS SERVERLESS THE FUTURE?WHY IS SERVERLESS THE FUTURE?
MY 2 FAVOURITE REASONS:MY 2 FAVOURITE REASONS:
Opportunity to deliver value to the customer quickly
Pay only for the used resources
63
TOMORROW I'LL MIGRATE ALLTOMORROW I'LL MIGRATE ALL
MY APPS TO SERVERLESSMY APPS TO SERVERLESS
APPROACH THISAPPROACH THIS
WITH CARE...WITH CARE...
64
THANKS!THANKS!
QUESTIONS?QUESTIONS?
Now or later to :)@loige
loige.link/serverless-jsday
If your company wants to get started with serverless on
AWS, be sure to check out serverlesslab.com
65
CREDITSCREDITS
High Res Emojis by emojiisland.com
World Wide Web Foundation, history of the web
Web hosting on Wikipedia
The history of web hosting: how things have changed since Tibus started in 1996
Grid computing on Wikipedia
Globus toolkit on Wikipedia
Globus Alliance on Wikipedia
Globus: A Metacomputing Infrastructure Toolkit (slides)
The Anatomy of the Grid: Enabling Scalable Virtual Organizations (paper)
Computer Weekly, the history of Cloud Computing
Brief history of Salesforce.com
With long history of virtualization behind it, IBM looks to the future
About Amazon Web Services (official)
Fullstack python: What is Serverless
Parse (platform) on Wikipedia
Firebase on Wikipedia
Kubernetes on Wikipedia
CoreOS on Wikipedia
AWS Lambda on Wikipedia
Serverless Computing on Wikipedia
"AWS Serverless Applications Lens" white paper (pdf)
"Serverless Architectures with AWS Lambda" white paper (pdf)
AWS Lambda VS the World
Serverless: Looking Back to See Forward
Awesome Serverless (GitHub repository)
Discussion about the history of Serverless on Lobste.rs
a HUGE thanks to:
@vladholubiev
@mariocasciaro
@katavic_d
@Podgeypoos79
PLEASE GIVE FEEDBACK
loige.link/vote-jsday
66

More Related Content

PDF
Build reactive systems on lambda
PDF
Security in serverless world
PDF
The future of paas is serverless
PDF
Serverless observability - a hero's perspective
PDF
Spring Cloud Stream with Kafka
PDF
2021 JCConf 使用Dapr簡化Java微服務應用開發
PDF
ApacheCon NA - Apache Camel K: connect your Knative serverless applications w...
PDF
The Big Cloud native FaaS Lebowski
Build reactive systems on lambda
Security in serverless world
The future of paas is serverless
Serverless observability - a hero's perspective
Spring Cloud Stream with Kafka
2021 JCConf 使用Dapr簡化Java微服務應用開發
ApacheCon NA - Apache Camel K: connect your Knative serverless applications w...
The Big Cloud native FaaS Lebowski

What's hot (20)

PDF
Security in serverless world (get.net)
PDF
Yan Cui - How to build observability into a serverless application - Codemoti...
PDF
Building ‘Bootiful’ microservices cloud
PDF
Create Great CNCF User-Base from Lessons Learned from Other Open Source Commu...
PDF
ApacheCon NA - Apache Camel K: a cloud-native integration platform
PDF
New Features of Kubernetes v1.2.0 beta
PDF
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
PPTX
Samuele Resca - REACTIVE PROGRAMMING, DAMN. IT IS NOT ABOUT REACTJS - Codemot...
PDF
Patterns and practices for building resilient Serverless applications
PDF
Microservice With Spring Boot and Spring Cloud
PDF
Microservices with Spring and Cloud Foundry
PDF
Мониторинг облачной CI-системы на примере Jenkins / Александр Акбашев (HERE T...
PDF
Serverless in production, an experience report (microservices london)
PDF
Service discovery with Eureka and Spring Cloud
ODP
Sun Web Server Brief
PDF
Why PCF is the best platform for Spring Boot
PDF
What's new with Apache Camel 3? | DevNation Tech Talk
PPTX
Mario Fusco - Reactive programming in Java - Codemotion Milan 2017
PDF
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
PDF
Being serverless and Swift... Is that allowed?
Security in serverless world (get.net)
Yan Cui - How to build observability into a serverless application - Codemoti...
Building ‘Bootiful’ microservices cloud
Create Great CNCF User-Base from Lessons Learned from Other Open Source Commu...
ApacheCon NA - Apache Camel K: a cloud-native integration platform
New Features of Kubernetes v1.2.0 beta
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Samuele Resca - REACTIVE PROGRAMMING, DAMN. IT IS NOT ABOUT REACTJS - Codemot...
Patterns and practices for building resilient Serverless applications
Microservice With Spring Boot and Spring Cloud
Microservices with Spring and Cloud Foundry
Мониторинг облачной CI-системы на примере Jenkins / Александр Акбашев (HERE T...
Serverless in production, an experience report (microservices london)
Service discovery with Eureka and Spring Cloud
Sun Web Server Brief
Why PCF is the best platform for Spring Boot
What's new with Apache Camel 3? | DevNation Tech Talk
Mario Fusco - Reactive programming in Java - Codemotion Milan 2017
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Being serverless and Swift... Is that allowed?
Ad

Similar to The future will be Serverless - JSDay Verona 2018 (20)

PDF
The future will be Serverless (FrontConf Munich 2017)
PDF
Serverless: A love hate relationship
PPTX
Demistifying serverless on aws
PDF
Serverless Toronto User Group - Let's go Serverless!
PDF
Deploying Serverless Cloud Optical Character Recognition in Support of NASA A...
PDF
Serverless architectures-with-aws-lambda
PDF
20180111 we bde-bs - serverless url shortener
PDF
NDev Talk - Serverless Design Patterns
PDF
Serverless presentation
PDF
Montréal AWS Users United: Let's go Serverless!
PDF
Serverless - The Future of the Cloud?!
PDF
Čtvrtkon #64 - AWS Serverless - Michal Haták
PDF
Serverless Optical Character Recognition in support of Astronaut Safety AWS M...
PPTX
awslambda-240508203904-07xsds253491.pptx
PDF
Serverless OCR for NASA EVA: AWS Meetup DC 2017-12-12
PPTX
Primeros pasos en desarrollo serverless
PPTX
What is Serverless Computing?
PDF
AWSomeDay Zurich 2018 - How to go serverless
PDF
Introduction to Serverless Computing - OOP Munich
PPTX
Building Cross-Cloud Platform Cognitive Microservices Using Serverless Archit...
The future will be Serverless (FrontConf Munich 2017)
Serverless: A love hate relationship
Demistifying serverless on aws
Serverless Toronto User Group - Let's go Serverless!
Deploying Serverless Cloud Optical Character Recognition in Support of NASA A...
Serverless architectures-with-aws-lambda
20180111 we bde-bs - serverless url shortener
NDev Talk - Serverless Design Patterns
Serverless presentation
Montréal AWS Users United: Let's go Serverless!
Serverless - The Future of the Cloud?!
Čtvrtkon #64 - AWS Serverless - Michal Haták
Serverless Optical Character Recognition in support of Astronaut Safety AWS M...
awslambda-240508203904-07xsds253491.pptx
Serverless OCR for NASA EVA: AWS Meetup DC 2017-12-12
Primeros pasos en desarrollo serverless
What is Serverless Computing?
AWSomeDay Zurich 2018 - How to go serverless
Introduction to Serverless Computing - OOP Munich
Building Cross-Cloud Platform Cognitive Microservices Using Serverless Archit...
Ad

More from Luciano Mammino (20)

PDF
Serverless Rust: Your Low-Risk Entry Point to Rust in Production (and the ben...
PDF
Did you know JavaScript has iterators? DublinJS
PDF
What I learned by solving 50 Advent of Code challenges in Rust - RustNation U...
PDF
Building an invite-only microsite with Next.js & Airtable - ReactJS Milano
PDF
From Node.js to Design Patterns - BuildPiper
PDF
Let's build a 0-cost invite-only website with Next.js and Airtable!
PDF
Everything I know about S3 pre-signed URLs
PDF
Serverless for High Performance Computing
PDF
Serverless for High Performance Computing
PDF
JavaScript Iteration Protocols - Workshop NodeConf EU 2022
PDF
Building an invite-only microsite with Next.js & Airtable
PDF
Let's take the monolith to the cloud 🚀
PDF
A look inside the European Covid Green Certificate - Rust Dublin
PDF
Monoliths to the cloud!
PDF
The senior dev
PDF
Node.js: scalability tips - Azure Dev Community Vijayawada
PDF
A look inside the European Covid Green Certificate (Codemotion 2021)
PDF
AWS Observability Made Simple
PDF
Semplificare l'observability per progetti Serverless
PDF
Finding a lost song with Node.js and async iterators - NodeConf Remote 2021
Serverless Rust: Your Low-Risk Entry Point to Rust in Production (and the ben...
Did you know JavaScript has iterators? DublinJS
What I learned by solving 50 Advent of Code challenges in Rust - RustNation U...
Building an invite-only microsite with Next.js & Airtable - ReactJS Milano
From Node.js to Design Patterns - BuildPiper
Let's build a 0-cost invite-only website with Next.js and Airtable!
Everything I know about S3 pre-signed URLs
Serverless for High Performance Computing
Serverless for High Performance Computing
JavaScript Iteration Protocols - Workshop NodeConf EU 2022
Building an invite-only microsite with Next.js & Airtable
Let's take the monolith to the cloud 🚀
A look inside the European Covid Green Certificate - Rust Dublin
Monoliths to the cloud!
The senior dev
Node.js: scalability tips - Azure Dev Community Vijayawada
A look inside the European Covid Green Certificate (Codemotion 2021)
AWS Observability Made Simple
Semplificare l'observability per progetti Serverless
Finding a lost song with Node.js and async iterators - NodeConf Remote 2021

Recently uploaded (20)

PDF
cuic standard and advanced reporting.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Approach and Philosophy of On baking technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Electronic commerce courselecture one. Pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
cuic standard and advanced reporting.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Network Security Unit 5.pdf for BCA BBA.
Approach and Philosophy of On baking technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
Per capita expenditure prediction using model stacking based on satellite ima...
Mobile App Security Testing_ A Comprehensive Guide.pdf
MYSQL Presentation for SQL database connectivity
Spectral efficient network and resource selection model in 5G networks
Reach Out and Touch Someone: Haptics and Empathic Computing
Electronic commerce courselecture one. Pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Chapter 3 Spatial Domain Image Processing.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
GamePlan Trading System Review: Professional Trader's Honest Take
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
NewMind AI Monthly Chronicles - July 2025
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx

The future will be Serverless - JSDay Verona 2018

  • 1. THE FUTURE WILL BETHE FUTURE WILL BE SERVERLESSSERVERLESS Verona, 9 May 2018 Luciano Mammino ( )@loige loige.link/serverless-jsday 1
  • 3. LUCIANO... WHOLUCIANO... WHO Find me online: -  (@loige) -  (lmammino) - -  (loige.co) Twitter GitHub Linkedin Blog Solution Architect at with @mariocasciaro with @andreaman87 with @ Podgeypoos79 3
  • 4. AGENDAAGENDA CHAPTER 1:CHAPTER 1: FROM BARE METAL TO SERVERLESSFROM BARE METAL TO SERVERLESS CHAPTER 2:CHAPTER 2: SERVERLESS, WTF?!SERVERLESS, WTF?! CHAPTER 3:CHAPTER 3: UNDERSTANDING SERVERLESSUNDERSTANDING SERVERLESS CHAPTER 4:CHAPTER 4: A SERVERLESS USE CASEA SERVERLESS USE CASE CHAPTER 5:CHAPTER 5: PROS N' CONSPROS N' CONS CHAPTER 6:CHAPTER 6: IT'S TIME TO GET STARTEDIT'S TIME TO GET STARTED 4
  • 5. CHAPTER 1CHAPTER 1 FROMFROM BAREMETALBAREMETAL  TO  TO SERVERLESSSERVERLESS loige.co/from-bare-metal-to-serverless 5
  • 7. 1989-1991 — Sir Tim Berners-Lee invented the World Wide Web 7
  • 9. 1995 — The invention of web hosting 9
  • 10. 1997 — Grid computing: 2 machines are better than 1! Ian Foster 10
  • 11. 1999 — Salesforce introduces the concept of Software as a Service (SaaS) Marc Benioff 11
  • 12. 2001 — VMWare releases ESXi, "server virtualization" becomes a thing 12
  • 13. 2002-2006 — AWS is born (IaaS), people talk about "Cloud computing" 13
  • 14. 2009 — Heroku and the invention of the "Platform as a Service" (PaaS)  James Lindenbaum Adam Wiggins Orion Henry 14
  • 15. 2011 — Envolve/Firebase, real time database as a service (RTDaaS???) James Tamplin and Andrew Lee 15
  • 16. 2012 — Parse.com and the first Backend as a Service (BaaS) Tikhon Bernstam Ilya Sukhar James Yu Kevin Lacker 16
  • 17. 2013 — Docker, "linux containers are better than virtual machines" Solomon Hykes 17
  • 18. 2013-2015 — Kubernetes / Swarm / Nomad / CoreOs (containers at scale) 18
  • 19. 2014 — Launch of AWS Lambda (FaaS) 19
  • 21. "Serverless most often refers to serverless applications. Serverless applications are ones that don't require you to provision or manage any servers. You can focus on your core product and business logic instead of responsibilities like operating system (OS) access control, OS patching, provisioning, right-sizing, scaling, and availability. By building your application on a serverless platform, the platform manages these responsibilities for you."   — Amazon Web Services loige.link/serverless-apps-lambda 21
  • 22. “   The essence of the serverless trend is the absence of the server concept during software development.   — Auth0 loige.link/what-is-serverless 22
  • 24. CHAPTER 3CHAPTER 3 UNDERSTANDING SERVERLESSUNDERSTANDING SERVERLESS 24
  • 26. THE 4 PILLARS OF SERVERLESSTHE 4 PILLARS OF SERVERLESS (TLDR; IT'S NOT ONLY ABOUT SERVERS)(TLDR; IT'S NOT ONLY ABOUT SERVERS) No server management You don't know how many and how they are configured Flexible scaling If you need more resources, they will be allocated for you High availability Redundancy and fault tolerance are built in Never pay for idle Unused resources cost $0 26
  • 27. THE SERVERLESS LAYERSTHE SERVERLESS LAYERS (TLDR; IT'S NOT ONLY "FAAS")(TLDR; IT'S NOT ONLY "FAAS") COMPUTECOMPUTE DATADATA MESSAGING AND STREAMINGMESSAGING AND STREAMING 27 USER MANAGEMENT AND IDENTITYUSER MANAGEMENT AND IDENTITY MONITORING AND DEPLOYMENTMONITORING AND DEPLOYMENT EDGEEDGE
  • 28. STUFF THAT WE CAN BUILDSTUFF THAT WE CAN BUILD  Mobile Backends  APIs & Microservices  Data Processing pipelines ⚡  Webhooks   Bots and integrations ⚙  IoT Backends  Single page web applications 28
  • 29. SOME SERVERLESS APPS I HELPED BUILDSOME SERVERLESS APPS I HELPED BUILD Open source A "semi-automated" weekly newsletter ( ) A middleware framework for AWS Lambda ( )   Enterprise Various solutions for the UK Energy industry: Trading platform, Billing engine, Market data aggregator ( ) Big data pipeline (~1-5TB/day/customer) to make network data searchable ( ) Fullstack bulletin middy.js.org Planet 9 Energy Vectra.ai 29
  • 32. SERVERLESS AND JAVASCRIPTSERVERLESS AND JAVASCRIPT Frontend Serverless Web hosting is static, but you can build SPAs (React, Angular, Vue, etc.) Backend Node.js is supported by every provider ⚡ Fast startup (as opposed to Java) Use all the modules on NPM Support other languages/dialects (TypeScript, ClojureScript, ESNext...) 32
  • 33. exports.myLambda = function ( event, context, callback ) { // get input from event and context // use callback to return output or errors } ANATOMY OF A NODE.JS LAMBDA ON AWSANATOMY OF A NODE.JS LAMBDA ON AWS 33
  • 34. CHAPTER 4CHAPTER 4 A SERVERLESS USE CASEA SERVERLESS USE CASE 34
  • 36. A SERVERLESS IMPLEMENTATION (ON AWS)A SERVERLESS IMPLEMENTATION (ON AWS) Network Metadata FTP Storage Search API (API Gateway) Network metadata search service User or other services Sync Lambda Parse/Load Lambda API Lambda Network Metadata S3 Bucket /metadata elastic search index 36 scheduled event new object API  Request 
  • 37. SYNC LAMBDASYNC LAMBDA { "account": "123456789012", "region": "us-east-1", "detail": {}, "detail-type": "Scheduled Event", "source": "aws.events", "time": "2018-05-09T14:30:21Z", "id": "cdc73f9d-aea9-1234-9d5a-835b769c0d9c", "resources": [ "arn:aws:events:us-east-1:123456789012:rule/my-schedule" ] } Cloudwatch scheduled event 37
  • 38. exports.syncLambda = ( event, context, callback ) => { // 1. connect to the FTP server // 2. get list of files from FTP // 3. get list of files from S3 // 4. make a diff to find new files in FTP // 5. read the new files and save them to S3 // 6. invoke the callback to stop lambda } SYNC LAMBDASYNC LAMBDA 38
  • 39. LOAD LAMBDALOAD LAMBDA { "Records": [ { "eventTime": "2018-05-09T14:30:21Z", "s3": { "object": { "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901", "key": "2018-05-09-metadata.csv.gz", "size": 1024 }, "bucket": { "arn": "arn:aws:s3:::metadata-sync-files", "name": "metadata-sync-files", } }, "awsRegion": "us-east-1", "eventName": "ObjectCreated:Put", "eventSource": "aws:s3" } ] } S3 new object event new object 39
  • 40. exports.loadLambda = ( event, context, callback ) => { // 1. get the new file details from the `event` // 2. read the file and deserialize the records // 3. send the records to elastic search using // the bulk API // 4. invoke the callback to stop lambda } LOAD LAMBDALOAD LAMBDA 40
  • 41. API LAMBDAAPI LAMBDA { "body": "", "resource": "/metadata/search", "requestContext": { "resourceId": "123456", "apiId": "1234567890", "resourcePath": "/metadata/search", "httpMethod": "GET", "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef", "stage": "prod" }, "queryStringParameters": { "q": "srcIp:127.0.0.1 AND host:google.com" }, "headers": { "User-Agent": "Custom User Agent String", }, "httpMethod": "GET", "path": "/metadata/search" } API Gateway proxy event API  Request  41
  • 42. exports.apiLambda = ( event, context, callback ) => { // 1. read the HTTP details (query) from // the `event` // 2. issue the query to ElasticSearch to the // given index // 3. reformat the results into an API gateway // response // 4. invoke the callback passing the response } API LAMBDAAPI LAMBDA 42
  • 43. ORCHESTRATION / CONFIGURATIONORCHESTRATION / CONFIGURATION WHO DEFINES THE EVENTS AND WHERE DO WE STORE THE CONFIG?WHO DEFINES THE EVENTS AND WHERE DO WE STORE THE CONFIG? 43
  • 44. ORCHESTRATION / CONFIGURATIONORCHESTRATION / CONFIGURATION MANY OPTIONSMANY OPTIONS Manually a.k.a. "clicky-clicky" from the Web UI Declarative code-based approaches: orAWS Cloudformation SAM Serverless framework Terraform 44
  • 45. service: metadataSearch provider: name: aws runtime: nodejs8.10 functions: sync: handler: index.syncLambda environment: FTP_HOST: "28.0.1.22:23" FTP_USERNAME: admin FTP_PASSWORD: unicorns S3_BUCKET: metadata-sync-files events: - schedule: rate(2 hours) load: handler: index.loadLambda environment: ES_INDEX: metadata events: - s3: bucket: metadata-sync-files event: "s3:ObjectCreated:*" api: handler: index.apiLambda environment: ES_INDEX: metadata events: - http: GET metadata/search SERVERLESS FRAMEWORK EXAMPLESERVERLESS FRAMEWORK EXAMPLEserverless.yml sls deploy Reads the serverless.yml and parses the resources Creates a zip file containing the source code Creates a Cloudformation stack with all the resources listed in serverless.yml Deploys the stack (including Lambda code) $ 45
  • 46. (MANY) THINGS I DIDN'T HAVE TO WORRY ABOUT...(MANY) THINGS I DIDN'T HAVE TO WORRY ABOUT... What type of virtual machine do I need? What operating system? How to keep OS/System updated? How much disk space do I need? How do I handle/retry failures? How do I collect and rotate logs? What about metrics? What machine do I need to run the database? How do I backup the database? How do I scale the database? Which web server should I use and how to configure it? Throttling? Managing API Keys? API caching? 46
  • 47. CHAPTER 5CHAPTER 5 PROS N' CONSPROS N' CONS 47
  • 48. FOCUS ON DELIVERING BUSINESS VALUE / FAST TIMEFOCUS ON DELIVERING BUSINESS VALUE / FAST TIME TO MARKETTO MARKET 48
  • 49. LESS "TECH-FREEDOM™" /LESS "TECH-FREEDOM™" / TIGHT VENDOR LOCK-IN!TIGHT VENDOR LOCK-IN! 49
  • 50. OPTIMAL RESOURCE ALLOCATIONOPTIMAL RESOURCE ALLOCATION 50
  • 51. NOT-MAGIC™!NOT-MAGIC™! YOU STILL HAVE TO WRITE CONFIGURATIONYOU STILL HAVE TO WRITE CONFIGURATION 51
  • 56. PAY PER USAGEPAY PER USAGE (don't pay for idle!) 56
  • 57. LOCAL DEVELOPMENT,LOCAL DEVELOPMENT, TESTING, DEBUGGINGTESTING, DEBUGGING 57
  • 59. OLDER TECHNOLOGIESOLDER TECHNOLOGIES MIGHT NOT INTEGRATE WELLMIGHT NOT INTEGRATE WELL 59
  • 60. CHAPTER 6CHAPTER 6 IT'S TIME TO GET STARTEDIT'S TIME TO GET STARTED 60
  • 61. WHO IS ALREADY ADOPTING SERVERLESSWHO IS ALREADY ADOPTING SERVERLESS 61
  • 62. PICK A FAAS AND START TO HAVE FUN!PICK A FAAS AND START TO HAVE FUN! IBM Cloud Functions AWS Lambda Azure Functions Google Cloud Functions Auth0 Webtask Iron.io FaaS Spotinst Functions Apache OpenWhisk Fission stdlib service Functions 62 Fn Kubeless CLOUD BASEDCLOUD BASED SELF-HOSTED / OPEN SOURCESELF-HOSTED / OPEN SOURCE Feffe LeverOS Open FaaS
  • 63. WHY IS SERVERLESS THE FUTURE?WHY IS SERVERLESS THE FUTURE? MY 2 FAVOURITE REASONS:MY 2 FAVOURITE REASONS: Opportunity to deliver value to the customer quickly Pay only for the used resources 63
  • 64. TOMORROW I'LL MIGRATE ALLTOMORROW I'LL MIGRATE ALL MY APPS TO SERVERLESSMY APPS TO SERVERLESS APPROACH THISAPPROACH THIS WITH CARE...WITH CARE... 64
  • 65. THANKS!THANKS! QUESTIONS?QUESTIONS? Now or later to :)@loige loige.link/serverless-jsday If your company wants to get started with serverless on AWS, be sure to check out serverlesslab.com 65
  • 66. CREDITSCREDITS High Res Emojis by emojiisland.com World Wide Web Foundation, history of the web Web hosting on Wikipedia The history of web hosting: how things have changed since Tibus started in 1996 Grid computing on Wikipedia Globus toolkit on Wikipedia Globus Alliance on Wikipedia Globus: A Metacomputing Infrastructure Toolkit (slides) The Anatomy of the Grid: Enabling Scalable Virtual Organizations (paper) Computer Weekly, the history of Cloud Computing Brief history of Salesforce.com With long history of virtualization behind it, IBM looks to the future About Amazon Web Services (official) Fullstack python: What is Serverless Parse (platform) on Wikipedia Firebase on Wikipedia Kubernetes on Wikipedia CoreOS on Wikipedia AWS Lambda on Wikipedia Serverless Computing on Wikipedia "AWS Serverless Applications Lens" white paper (pdf) "Serverless Architectures with AWS Lambda" white paper (pdf) AWS Lambda VS the World Serverless: Looking Back to See Forward Awesome Serverless (GitHub repository) Discussion about the history of Serverless on Lobste.rs a HUGE thanks to: @vladholubiev @mariocasciaro @katavic_d @Podgeypoos79 PLEASE GIVE FEEDBACK loige.link/vote-jsday 66