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

The future will be Serverless - JSDay Verona 2018

  • 1.
    THE FUTURE WILLBETHE FUTURE WILL BE SERVERLESSSERVERLESS Verona, 9 May 2018 Luciano Mammino ( )@loige loige.link/serverless-jsday 1
  • 2.
  • 3.
    LUCIANO... WHOLUCIANO... WHO Findme 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 FROMFROMBAREMETALBAREMETAL  TO  TO SERVERLESSSERVERLESS loige.co/from-bare-metal-to-serverless 5
  • 6.
  • 7.
    1989-1991 — SirTim Berners-Lee invented the World Wide Web 7
  • 8.
  • 9.
    1995 — The inventionof web hosting 9
  • 10.
    1997 — Gridcomputing: 2 machines are better than 1! Ian Foster 10
  • 11.
    1999 — Salesforceintroduces the concept of Software as a Service (SaaS) Marc Benioff 11
  • 12.
    2001 — VMWarereleases ESXi, "server virtualization" becomes a thing 12
  • 13.
    2002-2006 — AWSis born (IaaS), people talk about "Cloud computing" 13
  • 14.
    2009 — Herokuand 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.comand 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 — Launchof AWS Lambda (FaaS) 19
  • 20.
  • 21.
    "Serverless most oftenrefers 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.
    “   Theessence of the serverless trend is the absence of the server concept during software development.   — Auth0 loige.link/what-is-serverless 22
  • 23.
  • 24.
    CHAPTER 3CHAPTER 3 UNDERSTANDINGSERVERLESSUNDERSTANDING SERVERLESS 24
  • 25.
  • 26.
    THE 4 PILLARSOF 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 LAYERSTHESERVERLESS 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 WECAN 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 APPSI 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
  • 30.
  • 31.
  • 32.
    SERVERLESS AND JAVASCRIPTSERVERLESSAND 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 ASERVERLESS USE CASEA SERVERLESS USE CASE 34
  • 35.
  • 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 IDIDN'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 PROSN' CONSPROS N' CONS 47
  • 48.
    FOCUS ON DELIVERINGBUSINESS 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 ALLOCATIONOPTIMALRESOURCE ALLOCATION 50
  • 51.
    NOT-MAGIC™!NOT-MAGIC™! YOU STILL HAVETO WRITE CONFIGURATIONYOU STILL HAVE TO WRITE CONFIGURATION 51
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
    PAY PER USAGEPAYPER USAGE (don't pay for idle!) 56
  • 57.
    LOCAL DEVELOPMENT,LOCAL DEVELOPMENT, TESTING,DEBUGGINGTESTING, DEBUGGING 57
  • 58.
  • 59.
    OLDER TECHNOLOGIESOLDER TECHNOLOGIES MIGHTNOT INTEGRATE WELLMIGHT NOT INTEGRATE WELL 59
  • 60.
    CHAPTER 6CHAPTER 6 IT'STIME TO GET STARTEDIT'S TIME TO GET STARTED 60
  • 61.
    WHO IS ALREADYADOPTING SERVERLESSWHO IS ALREADY ADOPTING SERVERLESS 61
  • 62.
    PICK A FAASAND 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 SERVERLESSTHE 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 MIGRATEALLTOMORROW 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 laterto :)@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 Emojisby 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