StripeCon 2019 talk - Serverless and Silverstripe

T
...a lazy developer’s guide
Tim Burt
Presented by
Dorset Digital
Silverstripe in the
Serverless Age
Today's Topics
1.What this isn’t
2. What’s the point then?
3. Right, what’s all this ‘Serverless’ nonsense?
4. ...so how can I use it?
5. Does it work?
6. What next?
7. Questions?
What this isn’t
What this isn’t
•This is not a cure-all solution to your hosting
needs
•This is not an beautifully engineered solution!
•Not a replacement for your existing hosting
systems (yet) – especially on highly dynamic /
interactive sites
•Not a live demo ;-)
What’s the point then?
What’s the point?
•Make a quicker, more resilient and scalable hosting
environment
•Create a Proof of Concept
•Start thinking about site delivery in a different way
•Take advantage of existing technologies
•Do as little work as possible :-)
•Don’t spend a fortune on hosting!
•Make something that can be retro-fitted to an existing
site
Right, what’s all this
‘Serverless’ nonsense?
Familiar models
Simple server model
Add some redundancy
Go big – deploy globally
A note about DNS
•DNS is the key
•More specifically, ‘anycast’ DNS is the key
Enough already!
What’s this got to do with
“Serverless”?
This:
...so how can I use it?
The steps to (almost) Serverless
Step 1: Move your assets
•With Silverstripe CMS 4, assets can be stored in
a remote location
•A single, common store for site content
• https://github.com/silverstripe/silverstripe-s3
Step 2: Improve distribution
•Add a CDN such as Cloudfront, StackPath, etc.
•Reduces latency, improves performance
• https://github.com/DorsetDigital/silverstripe-url-rewriter
Simple middleware to replace S3 URLs with CDN versions, eg:
https://s3.eu-west-2.amazonaws.com/stripecon.dorset-digital.net/public/image.jpg
BECOMES
https://d1bj1kucw3tvqr.cloudfront.net/public/image.jpg
Step 3: Site resources
•Serve site resources (CSS, JS, etc.) from a CDN
such as Cloudfront, StackPath, etc.
•Reduces latency, improves performance
• https://github.com/DorsetDigital/silverstripe-cdnrewrite
Simple middleware to replace site asset URLs with CDN versions, eg:
https://www.example.com/_resources/css/styles.css
BECOMES
https://cdn.example.com/_resources/css/styles.css
Step 4: Static publishing
•Big performance gains
•Fine for non-transactional pages
• https://github.com/silverstripe/silverstripe-staticpublishqueue
Nearly there!
(I promise)
Step 5: Living on the edge
•Deal with web requests at the edge locations
•Most traffic never reaches the origin server
•Fast responses
Step 5: Workers
•Cloudflare Technology for running edge code
•Runs V8 engine
•Use Rust, Typescript
•Can respond to specific URL patterns
•Low cost
•Can contain conditional logic, can modify
requests and responses
Step 5: Workers KV
•Cloudflare Technology for storing data in their
network
•Simple Key→Value storage
•Keys up to 512 Bytes
•Values up to 2MB
•Can be given TTL for automatic expiry
Step 5: Our edge worker
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
});
async function handleRequest(request) {
request = new Request(request);
let requestedURL = new URL(request.url);
let urlPath = trimByChar(requestedURL.pathname, '/');
if (urlPath === '/') {
urlPath = 'index'
}
const kvdata = await kvstore.get(urlPath);
if (kvdata !== null) {
var requestTimestamp = new Date().toUTCString();
var myHeaders = new Headers({
'Content-Type': 'text/html; charset=utf-8',
'vary': 'X-Forwarded-Protocol,Accept-Encoding',
'server': 'Edge Hosting',
'date': requestTimestamp,
'x-worker-debug': 'KV Active'
});
return new Response(kvdata, {headers: myHeaders})
} else {
let originResponse = await fetch(request);
let response = new Response(originResponse.body, originResponse);
response.headers.set('x-worker-debug', 'Origin Active');
response.headers.set('x-path', urlPath);
return response
}
}
function trimByChar(string, character) {
const first = [...string].findIndex(char => char !== character);
const last = [...string].reverse().findIndex(char => char !== character);
return string.substring(first, string.length - last);
}
Step 5: Pushing the data
•We need to push the page data to our KV store
• https://github.com/DorsetDigital/silverstripe-edgepublisher
A publishing backend for the Silverstripe staticpublishqueue module
Utilises the existing processes for the selection, creation and storing of the
statically generated pages.
Can be used to interface with Cloudflare KV or AWS DynamoDB
Deals with the creation of KV namespaces via the Cloudflare API
Sends data directly to the edge data store when pages are published,
deleted, etc.
Does it work?
Yes.. so far!
•This is an alternative approach to distributed
hosting.
•Costs compared to a fully redundant,
geographically distributed hosting system on
Google Compute or AWS are extremely
favourable!
•Massively scalable, highly resilient
•More controllable than relying on HTTP proxies /
caching
In the real world..
(sort of)
https://stripecon.dorset-digital.net
https://stripecon.dorset-digital.net
https://stripecon.dorset-digital.net
Performance tests
• On a domestic broadband connection, response time of the first
request (TTFB) usually between 100-200ms (vs. 1-2 seconds on
the shared host)
• Repeat requests from same node TTFB generally under 50ms !
• Lightweight pages fully load very fast (even with browser caches
disabled)
Performance tests
•Image-heavy pages are almost as fast, once the CDN
(Cloudfront) has the images in it’s edge caches
Performance tests
•PageSpeed (mobile):
Performance tests
•PageSpeed (Desktop):
What next?
References
•Test site: https://stripecon.dorset-digital.net
•V8: https://v8.dev
•Cloudflare Workers:
https://developers.cloudflare.com/workers/
•AWS Lambda Edge:
https://aws.amazon.com/lambda/edge/
Questions?
Thanks for listening!
tim@dorset-digital.net
@DorsetDigital on Slack / Community forum
Contact:
1 of 39

Recommended

AWS for Start-ups - Case Study - PeoplePerHour by
AWS for Start-ups - Case Study - PeoplePerHour AWS for Start-ups - Case Study - PeoplePerHour
AWS for Start-ups - Case Study - PeoplePerHour Amazon Web Services
1.3K views16 slides
Aws, an intro to startups by
Aws, an intro to startupsAws, an intro to startups
Aws, an intro to startupsSubramanyam Kasibhat
916 views20 slides
Amazon Web Services Customer Case Study, Fashion for Home by
Amazon Web Services Customer Case Study, Fashion for HomeAmazon Web Services Customer Case Study, Fashion for Home
Amazon Web Services Customer Case Study, Fashion for HomeAmazon Web Services
3.3K views12 slides
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing by
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizing
[AWSKRUG&JAWS-UG Meetup #1] 70% Cost Reduction with On-demand resizingAWSKRUG - AWS한국사용자모임
477 views49 slides
We All Live in a Yellow (Serverless) Submarine by
We All Live in a Yellow (Serverless) SubmarineWe All Live in a Yellow (Serverless) Submarine
We All Live in a Yellow (Serverless) SubmarineFITC
363 views60 slides
Ceph Day Santa Clara: Ceph at DreamHost by
Ceph Day Santa Clara: Ceph at DreamHost Ceph Day Santa Clara: Ceph at DreamHost
Ceph Day Santa Clara: Ceph at DreamHost Ceph Community
1.4K views31 slides

More Related Content

What's hot

Kenshoo - Use Hadoop, One Week, No Coding by
Kenshoo - Use Hadoop, One Week, No CodingKenshoo - Use Hadoop, One Week, No Coding
Kenshoo - Use Hadoop, One Week, No CodingMapR Technologies
1.9K views10 slides
AWS Cloud experience concepts tips and tricks by
AWS Cloud experience concepts tips and tricksAWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricksDirk Harms-Merbitz
664 views19 slides
Cloud Costing Services by
Cloud Costing Services Cloud Costing Services
Cloud Costing Services InnoTech
553 views30 slides
When all you have is a nail by
When all you have is a nailWhen all you have is a nail
When all you have is a nailAdam Friedman
357 views39 slides
Learn WordPress - Live Session 2 Slides by
Learn WordPress - Live Session 2 SlidesLearn WordPress - Live Session 2 Slides
Learn WordPress - Live Session 2 SlidesAhmed Mohammed Nagdy
771 views27 slides
Reducing Database Costs via Shard Consolidation by
Reducing Database Costs via Shard ConsolidationReducing Database Costs via Shard Consolidation
Reducing Database Costs via Shard ConsolidationAmazon Web Services
337 views34 slides

What's hot(19)

Kenshoo - Use Hadoop, One Week, No Coding by MapR Technologies
Kenshoo - Use Hadoop, One Week, No CodingKenshoo - Use Hadoop, One Week, No Coding
Kenshoo - Use Hadoop, One Week, No Coding
MapR Technologies1.9K views
AWS Cloud experience concepts tips and tricks by Dirk Harms-Merbitz
AWS Cloud experience concepts tips and tricksAWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricks
Dirk Harms-Merbitz664 views
Cloud Costing Services by InnoTech
Cloud Costing Services Cloud Costing Services
Cloud Costing Services
InnoTech553 views
When all you have is a nail by Adam Friedman
When all you have is a nailWhen all you have is a nail
When all you have is a nail
Adam Friedman357 views
The cloud is my laboratory by Adam Friedman
The cloud is my laboratoryThe cloud is my laboratory
The cloud is my laboratory
Adam Friedman2.2K views
Day of Cloud: Amazon EC2 by cmcavoy
Day of Cloud: Amazon EC2Day of Cloud: Amazon EC2
Day of Cloud: Amazon EC2
cmcavoy1.1K views
Cloud Computing: Amazon AWS and EC2 by Teamskunkworks
Cloud Computing: Amazon AWS and EC2Cloud Computing: Amazon AWS and EC2
Cloud Computing: Amazon AWS and EC2
Teamskunkworks2.1K views
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft... by Amazon Web Services
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Amazon Web Services10.4K views
AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ... by AWS Chicago
AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...
AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...
AWS Chicago216 views

Similar to StripeCon 2019 talk - Serverless and Silverstripe

performance.ppt by
performance.pptperformance.ppt
performance.pptfakeaccount225095
16 views78 slides
Monkeytalk Fall 2012 - Responsive Web Design by
Monkeytalk Fall 2012 - Responsive Web DesignMonkeytalk Fall 2012 - Responsive Web Design
Monkeytalk Fall 2012 - Responsive Web DesignSerge Hufkens
1.1K views57 slides
PAC 2019 virtual Mark Tomlinson by
PAC 2019 virtual Mark TomlinsonPAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark TomlinsonNeotys
188 views18 slides
Yow Conference Dec 2013 Netflix Workshop Slides with Notes by
Yow Conference Dec 2013 Netflix Workshop Slides with NotesYow Conference Dec 2013 Netflix Workshop Slides with Notes
Yow Conference Dec 2013 Netflix Workshop Slides with NotesAdrian Cockcroft
49.3K views187 slides
Cassandra and Docker Lessons Learned by
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedDataStax Academy
40.3K views35 slides
Code for Startup MVP (Ruby on Rails) Session 1 by
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Henry S
5.9K views57 slides

Similar to StripeCon 2019 talk - Serverless and Silverstripe(20)

Monkeytalk Fall 2012 - Responsive Web Design by Serge Hufkens
Monkeytalk Fall 2012 - Responsive Web DesignMonkeytalk Fall 2012 - Responsive Web Design
Monkeytalk Fall 2012 - Responsive Web Design
Serge Hufkens1.1K views
PAC 2019 virtual Mark Tomlinson by Neotys
PAC 2019 virtual Mark TomlinsonPAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark Tomlinson
Neotys188 views
Yow Conference Dec 2013 Netflix Workshop Slides with Notes by Adrian Cockcroft
Yow Conference Dec 2013 Netflix Workshop Slides with NotesYow Conference Dec 2013 Netflix Workshop Slides with Notes
Yow Conference Dec 2013 Netflix Workshop Slides with Notes
Adrian Cockcroft49.3K views
Cassandra and Docker Lessons Learned by DataStax Academy
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons Learned
DataStax Academy40.3K views
Code for Startup MVP (Ruby on Rails) Session 1 by Henry S
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
Henry S5.9K views
How to Build a Bespoke Page Builder in WordPress by Gerald Glynn
How to Build a Bespoke Page Builder in WordPressHow to Build a Bespoke Page Builder in WordPress
How to Build a Bespoke Page Builder in WordPress
Gerald Glynn1.3K views
Rapid and Responsive - UX to Prototype with Bootstrap by Josh Jeffryes
Rapid and Responsive - UX to Prototype with BootstrapRapid and Responsive - UX to Prototype with Bootstrap
Rapid and Responsive - UX to Prototype with Bootstrap
Josh Jeffryes9.5K views
Mapping Life Science Informatics to the Cloud by Chris Dagdigian
Mapping Life Science Informatics to the CloudMapping Life Science Informatics to the Cloud
Mapping Life Science Informatics to the Cloud
Chris Dagdigian6.4K views
Beyond Relational by Lynn Langit
Beyond RelationalBeyond Relational
Beyond Relational
Lynn Langit4.4K views
Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the... by Jason Himmelstein
Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...
Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...
Jason Himmelstein1.5K views
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA by Tomas Cervenka
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNAFirst Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
Tomas Cervenka1.3K views
Web Development using Ruby on Rails by Avi Kedar
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
Avi Kedar628 views
GDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft Azure by Andriy Deren'
GDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft AzureGDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft Azure
GDG Ternopil TechTalks Web #1 2015 - Data storages in Microsoft Azure
Andriy Deren'214 views
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP by Daniel Zivkovic
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCPSimpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
Daniel Zivkovic189 views
Nuts and bolts of running a popular site in the aws cloud by David Veksler
Nuts and bolts of running a popular site in the aws cloudNuts and bolts of running a popular site in the aws cloud
Nuts and bolts of running a popular site in the aws cloud
David Veksler538 views
"It’s not only Lambda! Economics behind Serverless" at JAX Conference in Mai ... by Vadym Kazulkin
"It’s not only Lambda! Economics behind Serverless" at JAX Conference in Mai ..."It’s not only Lambda! Economics behind Serverless" at JAX Conference in Mai ...
"It’s not only Lambda! Economics behind Serverless" at JAX Conference in Mai ...
Vadym Kazulkin190 views

Recently uploaded

IETF 118: Starlink Protocol Performance by
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol PerformanceAPNIC
354 views22 slides
Is Entireweb better than Google by
Is Entireweb better than GoogleIs Entireweb better than Google
Is Entireweb better than Googlesebastianthomasbejan
12 views1 slide
PORTFOLIO 1 (Bret Michael Pepito).pdf by
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdfbrejess0410
8 views6 slides
How to think like a threat actor for Kubernetes.pptx by
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptxLibbySchulze1
5 views33 slides
WEB 2.O TOOLS: Empowering education.pptx by
WEB 2.O TOOLS: Empowering education.pptxWEB 2.O TOOLS: Empowering education.pptx
WEB 2.O TOOLS: Empowering education.pptxnarmadhamanohar21
16 views16 slides
Building trust in our information ecosystem: who do we trust in an emergency by
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergencyTina Purnat
106 views18 slides

Recently uploaded(9)

IETF 118: Starlink Protocol Performance by APNIC
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol Performance
APNIC354 views
PORTFOLIO 1 (Bret Michael Pepito).pdf by brejess0410
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdf
brejess04108 views
How to think like a threat actor for Kubernetes.pptx by LibbySchulze1
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptx
LibbySchulze15 views
Building trust in our information ecosystem: who do we trust in an emergency by Tina Purnat
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat106 views
Marketing and Community Building in Web3 by Federico Ast
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3
Federico Ast12 views

StripeCon 2019 talk - Serverless and Silverstripe

  • 1. ...a lazy developer’s guide Tim Burt Presented by Dorset Digital Silverstripe in the Serverless Age
  • 2. Today's Topics 1.What this isn’t 2. What’s the point then? 3. Right, what’s all this ‘Serverless’ nonsense? 4. ...so how can I use it? 5. Does it work? 6. What next? 7. Questions?
  • 4. What this isn’t •This is not a cure-all solution to your hosting needs •This is not an beautifully engineered solution! •Not a replacement for your existing hosting systems (yet) – especially on highly dynamic / interactive sites •Not a live demo ;-)
  • 6. What’s the point? •Make a quicker, more resilient and scalable hosting environment •Create a Proof of Concept •Start thinking about site delivery in a different way •Take advantage of existing technologies •Do as little work as possible :-) •Don’t spend a fortune on hosting! •Make something that can be retro-fitted to an existing site
  • 7. Right, what’s all this ‘Serverless’ nonsense?
  • 11. Go big – deploy globally
  • 12. A note about DNS •DNS is the key •More specifically, ‘anycast’ DNS is the key
  • 13. Enough already! What’s this got to do with “Serverless”?
  • 14. This:
  • 15. ...so how can I use it?
  • 16. The steps to (almost) Serverless
  • 17. Step 1: Move your assets •With Silverstripe CMS 4, assets can be stored in a remote location •A single, common store for site content • https://github.com/silverstripe/silverstripe-s3
  • 18. Step 2: Improve distribution •Add a CDN such as Cloudfront, StackPath, etc. •Reduces latency, improves performance • https://github.com/DorsetDigital/silverstripe-url-rewriter Simple middleware to replace S3 URLs with CDN versions, eg: https://s3.eu-west-2.amazonaws.com/stripecon.dorset-digital.net/public/image.jpg BECOMES https://d1bj1kucw3tvqr.cloudfront.net/public/image.jpg
  • 19. Step 3: Site resources •Serve site resources (CSS, JS, etc.) from a CDN such as Cloudfront, StackPath, etc. •Reduces latency, improves performance • https://github.com/DorsetDigital/silverstripe-cdnrewrite Simple middleware to replace site asset URLs with CDN versions, eg: https://www.example.com/_resources/css/styles.css BECOMES https://cdn.example.com/_resources/css/styles.css
  • 20. Step 4: Static publishing •Big performance gains •Fine for non-transactional pages • https://github.com/silverstripe/silverstripe-staticpublishqueue
  • 22. Step 5: Living on the edge •Deal with web requests at the edge locations •Most traffic never reaches the origin server •Fast responses
  • 23. Step 5: Workers •Cloudflare Technology for running edge code •Runs V8 engine •Use Rust, Typescript •Can respond to specific URL patterns •Low cost •Can contain conditional logic, can modify requests and responses
  • 24. Step 5: Workers KV •Cloudflare Technology for storing data in their network •Simple Key→Value storage •Keys up to 512 Bytes •Values up to 2MB •Can be given TTL for automatic expiry
  • 25. Step 5: Our edge worker addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }); async function handleRequest(request) { request = new Request(request); let requestedURL = new URL(request.url); let urlPath = trimByChar(requestedURL.pathname, '/'); if (urlPath === '/') { urlPath = 'index' } const kvdata = await kvstore.get(urlPath); if (kvdata !== null) { var requestTimestamp = new Date().toUTCString(); var myHeaders = new Headers({ 'Content-Type': 'text/html; charset=utf-8', 'vary': 'X-Forwarded-Protocol,Accept-Encoding', 'server': 'Edge Hosting', 'date': requestTimestamp, 'x-worker-debug': 'KV Active' }); return new Response(kvdata, {headers: myHeaders}) } else { let originResponse = await fetch(request); let response = new Response(originResponse.body, originResponse); response.headers.set('x-worker-debug', 'Origin Active'); response.headers.set('x-path', urlPath); return response } } function trimByChar(string, character) { const first = [...string].findIndex(char => char !== character); const last = [...string].reverse().findIndex(char => char !== character); return string.substring(first, string.length - last); }
  • 26. Step 5: Pushing the data •We need to push the page data to our KV store • https://github.com/DorsetDigital/silverstripe-edgepublisher A publishing backend for the Silverstripe staticpublishqueue module Utilises the existing processes for the selection, creation and storing of the statically generated pages. Can be used to interface with Cloudflare KV or AWS DynamoDB Deals with the creation of KV namespaces via the Cloudflare API Sends data directly to the edge data store when pages are published, deleted, etc.
  • 28. Yes.. so far! •This is an alternative approach to distributed hosting. •Costs compared to a fully redundant, geographically distributed hosting system on Google Compute or AWS are extremely favourable! •Massively scalable, highly resilient •More controllable than relying on HTTP proxies / caching
  • 29. In the real world.. (sort of)
  • 33. Performance tests • On a domestic broadband connection, response time of the first request (TTFB) usually between 100-200ms (vs. 1-2 seconds on the shared host) • Repeat requests from same node TTFB generally under 50ms ! • Lightweight pages fully load very fast (even with browser caches disabled)
  • 34. Performance tests •Image-heavy pages are almost as fast, once the CDN (Cloudfront) has the images in it’s edge caches
  • 38. References •Test site: https://stripecon.dorset-digital.net •V8: https://v8.dev •Cloudflare Workers: https://developers.cloudflare.com/workers/ •AWS Lambda Edge: https://aws.amazon.com/lambda/edge/