SlideShare a Scribd company logo
BRINGING THE
JAMSTACK TO
THE ENTERPRISE
InfoQ.com: News & Community Site
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
jamstack-enterprise/
• Over 1,000,000 software developers, architects and CTOs read the site world-
wide every month
• 250,000 senior developers subscribe to our weekly newsletter
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• 2 dedicated podcast channels: The InfoQ Podcast, with a focus on
Architecture and The Engineering Culture Podcast, with a focus on building
• 96 deep dives on innovative topics packed as downloadable emags and
minibooks
• Over 40 new content items per week
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon London
www.qconlondon.com
JAMUND FERGUSON
➡ Been at PayPal for 5.5yrs
➡ Brought in during Java to Node transition
➡ Currently leading consumer web platform team
➡ Focused on improving developer experience
➡ Do a lot of training and talking about JavaScript

internally and externally
Bringing JAMStack to the Enterprise
LACK OF STABILITY INCREDIBLY SLOW DEPLOY TIMES CLIENT-SIDE PERF
Bringing JAMStack to the Enterprise
WE HAVE A LOT OF SERVERS
AND DATA CENTERS
AND AVAILABILITY ZONES
AND STABILITY CHECKS
DEPLOYS CAN TAKE HOURS
DEPLOYS CAN TAKE HOURS
DEPLOYS CAN TAKE HOURS
Bringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
WHAT IF DOING THE RIGHT
THING IS TOO HARD?
WE NEED TO RE-THINK
THE ARCHITECTURE
GOLANG MACHINE LEARNINGCLOUD FUNCTIONS
TECHNOLOGY ENVY
UI
Application

Servers
Java JavaJava C++
Backend

Services
Node.jsJSX REST API
ReactHTML CSS CDN
Bringing JAMStack to the Enterprise
UI
Application

Servers
Java JavaJava C++
Backend

Services
Node.jsJSX REST API
ReactHTML CSS CDN
UI
Application

Servers
Java JavaJava C++
Backend

Services
Node.jsJSX REST API
ReactHTML CSS CDN
UI
Application

Servers
Java JavaJava C++
Backend

Services
Node.jsJSX REST API
ReactHTML CSS CDN
UI
Application

Servers
Java JavaJava C++
Backend

Services
JSX REST API
ReactHTML CSS CDN
UI
Application

Servers
Java JavaJava C++
Backend

Services
JSX REST API
ReactHTML CSS CDN
UI
Application

Servers
Java JavaJava C++
Backend

Services
JSX REST API
ReactHTML CSS CDN
UI
Application

Servers
Java JavaJava C++
Backend

Services
JSX REST API
ReactHTML CSS CDN
GRAPHQL
UI
Application

Servers
Java JavaJava C++
Backend

Services
JSX
ReactHTML CSS CDN
GRAPHQL
PROXY
SHARED GRAPHQL
Frontend

Services
ReactHTMLCSS
Backend

Services
CDN
C++Java JavaJava
HELLO JAMSTACK,
MY OLD FRIEND
Bringing JAMStack to the Enterprise
JAVASCRIPT
MARKUP
JAMSTACK APIs
Bringing JAMStack to the Enterprise
APPLICATION
SERVER
DB
SERVICE
JAMSTACK
JS
HTMLHTML
JSHTML
JS
HTML
JS
HTML
HTML
JS
JS
HTML
JS
HTML
JS
HTML
JS
HTML
JS
JAMSTACK
THEIR DEVICEGEOGRAPHICAL NEAR (CDN)
CLOUD
KEEP CONTENT CLOSER TO
THE CUSTOMER
FEW MOVING PARTS
NO DATABASE NO APP SERVER NO PROGRAMMING

LANGUAGE
GREAT TOOLING & DX
DEPLOY IN SECONDS REACT & GATSBY SINGLE STACK
JAMSTACK IS
GREAT FOR
STATIC SITES
YOU CAN ALSO
MAKE FULLY
INTERACTIVE
WEB APPS


STATIC APPS ARE FULLY
INTERACTIVE WEB APPS,
POWERED BY STATIC
ASSETS* * and some APIs too
LOAD THE DYNAMIC BITS
LOAD THE STATIC PART <300MS
CDN /
EDGE
BROWSER
300ms
TTFB IS SUPER FAST. MOST OF
PAGE READY TO GO RIGHT AWAY!
300ms 30ms 400ms500ms
CDN /
EDGE
LOAD

BALANCER
GRAPHQLBROWSER
SERVICES
OR
DATABASE
~1000MS
WAITING TIME IS LOWER THAN
SSR BECAUSE I’M ONLY DOING
API PROCESSING
CDN /
EDGE
LOAD

BALANCER
NODE.JSNGINXBROWSER
SERVICES
OR
DATABASE
SERVER-SIDE RENDERED JAVASCRIPT
300ms 30ms 800ms10ms 1000ms
2140MS
PRE-RENDERED HTML AT THE CDN 300MS
CDN /
EDGE
BROWSER
300ms
PPME: PARTIALLY SERVER-RENDERED VERSION
3 SECONDS OF WHITE SCREEN
1000MS OF JS & IMAGES
TOTAL LOAD TIME (THROTTLED): ~4000MS
PPME: STATIC APP VERSION
INITIAL PAGE LOAD
IS UNDER 1S
1500MS PARSING JS &
WAITING ON CONTENT
500MS RECEIVE CONTENT
TOTAL LOAD TIME (THROTTLED): ~3000MS
ENTERPRISE JAMSTACK
WHEN BUILDING STATIC APPS
‣ Think files not routes
‣ Pre-render as much as possible (how frequently?)
‣ Load additional content with APIs
‣ Cache / optimize aggressively
PayPal.me Settings Page
- How much of this page can be static?
- Load it up with an API
- Optimize using SessionStorage

by pre-loading the users basic

settings at log-in
TO



300MS +

200MS =



500MS
FROM



300MS +

1200MS = 



1500MS
2
3
4
/PAYPALME/SETTINGS SETTINGS.HTML1
My PayPal.me Profile
PAYPAL.ME/JAMUND JAMUND.HTML
PAYPAL.ME/* PROFILE.HTML
1
2 How much we we pre-render?
Make an API call for more data3
Optimizations:
• Cache user info / API request
• We can also load things like
the URL directly from memory
• <img src=“/images/:slug” />
4
EVEN IN WORST CASE
SCENARIOS, WHERE MOST
OF THE PAGE IS DYNAMIC,
STATIC APPS ARE FAST
BRINGING IT TO THE
ENTERPRISE
ADOPTION AND BUY-IN
Hold Workshops / Build Hype
WE DECIDED
TO BUILD A
PROTOTYPE
VERSION OF
PAYPAL.ME
BUILD OUT
TOOLING SO
THAT ANY TEAM
COULD MAKE A
STATIC APP
A TOOL TO
GENERATE OUR
STATIC ASSETS
A PLACE TO
HOST THEM
Bringing JAMStack to the Enterprise
https://www.gatsbyjs.org
> gatsby new qcon2019
info Creating new site from git: https://github.com/gatsbyjs/gatsby-starter-default.g
Cloning into 'qcon2019'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 1077 (delta 0), reused 2 (delta 0), pack-reused 1072
Receiving objects: 100% (1077/1077), 1.93 MiB | 1.72 MiB/s, done.
Resolving deltas: 100% (610/610), done.
success Created starter directory layout
info Installing packages...
✔ cwebp pre-build test passed successfully
✔ mozjpeg pre-build test passed successfully
✔ pngquant pre-build test passed successfully
added 1884 packages from 1136 contributors in 53.286s
> gatsby develop
success open and validate gatsby-configs — 0.006 s
success load plugins — 0.144 s
success onPreInit — 0.797 s
success delete html and css files from previous builds — 0.004 s
success initialize cache — 0.006 s
success copy gatsby files — 0.074 s
success onPreBootstrap — 0.005 s
success source and transform nodes — 0.047 s
success building schema — 0.262 s
success update schema — 0.100 s

Generating image thumbnails [==============================] 6/6 0.2 secs 100%
info bootstrap finished - 7.107 s


DONE Compiled successfully in 3592ms 

You can now view qcon2019 in the browser.
http://localhost:8000/
Bringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
Pages Folder
src/pages/qcon.js
GATSBY IS MAGIC
{ PORTING AN EXISTING
REACT SITE TO GATSBY
ISN’T VERY HARD }
Bringing JAMStack to the Enterprise
> gatsby build
success open and validate gatsby-configs — 0.063 s
success load plugins — 0.130 s
success onPreInit — 0.741 s
success onPreBootstrap — 0.004 s
success source and transform nodes — 0.035 s
success building schema — 0.211 s
success createPages — 0.000 s
success update schema — 0.096 s
success extract queries from components — 0.096 s
success run graphql queries — 0.046 s — 8/8 177.64 queries/second
success write out page data — 0.003 s
success write out redirect data — 0.001 s
success onPostBootstrap — 0.284 s
info bootstrap finished - 4.976 s
success Building production JavaScript and CSS bundles — 8.634 s
success Building static HTML for pages — 0.604 s — 5/5 22.57 pages/second
info Done building in 14.22 sec
> ls public
index.html
404.html

0-9bd0c85834a3a93b1f79.js
app-04084b8a557f707b6868.js
pages-manifest-e4b2639aaf09a35adca0.js
component---src-pages-404-js-d2285ef859a157145c5f.js
component---src-pages-index-js-fb8583164602255204fc.js
component---src-pages-page-2-js-32e895d1268581b61c23.js
component—src-pages-qcon-js-7f23b1bc9d18fc3f2d1e.js
component---src-pages-404-js.fc0360e935268c0b4b8c.css
component---src-pages-index-js.fc0360e935268c0b4b8c.css
component---src-pages-page-2-js.fc0360e935268c0b4b8c.css
component---src-pages-qcon-js.fc0360e935268c0b4b8c.css
chunk-map.json
manifest.webmanifest
page-2/
icons/
404/
Bringing JAMStack to the Enterprise
LET’S BUILD THE JAMSTACK DX
INSIDE OUR OWN PRIVATE CLOUD
Bringing JAMStack to the Enterprise
{
"hosting": {
"redirects": [{
"source": "/beta",
"destination": "/",
"type": 301
}],
"rewrites": [{
"source": "/profiles/*",
"destination": "/profiles.html"
}],
"headers": [{
"source": “**/*.js”,
"headers": [{
"key": “Access-Control-Allow-Origin“,
"value": “*"
}]
}]
}
EASILY APPLY
CORS HEADERS
REDIRECTS FOR
OUTDATED URLS
REWRITES FOR
WILDCARD URLS
GRAPHQL
Java JavaJava ASF
CDN GatsbyHTMLCSS
Backend

Services
Frontend

Services
STATIC APP SERVER
GRAPHQL
Java JavaJava ASF
Frontend

Services
GatsbyHTMLCSS
Backend

Services
Application

Servers
PRODUCTION STAGING
EACH APP SERVER CONTAINS ITS OWN ASSETS
▸ Developer can completely ignore app server
▸ “1-minute deploy” to production
▸ Infra team on the hook now if anything stops working
▸ Add static app capabilities to our current build & deploy pipeline
▸ Allow app devs to mostly focus on UI server piece
▸ “1-minute deploy” to staging
PHASE 1: STATIC APP SUPPORT
PHASE 2: STATIC APPS AS A SERVICE
STATIC APPS ADOPTION PLAN
STATIC
APP
SERVICE
APP MAPPINGS 

CLOUD STORAGE
ALL TEAMS SHARE A
SINGLE SERVICE TO
SERVE THEIR APPS
/paypalme
/summary
/home
STATIC
APP
SERVICE
APP MAPPINGS 

CLOUD STORAGE
1. Generates Files 2. Push them to Cloud
3. Update Mappings
ROLLBACK
/paypalme
/summary
/home
RETRACING OUR STEPS
WHEN DOING THE RIGHT
THING IS POSSIBLE, BUT
NOT EASY, CONSIDER
CHANGING YOUR
ARCHITECTURE
JAMSTACK PROVIDES A
STABLE & PERFORMANT
ARCHITECTURE BY
DEFAULT
INSTEAD OF SIMPLE

STATIC SITES WE ARE
CHOOSING TO TO BUILD
FULLY INTERACTIVE

STATIC APPS
THESE APPS ARE VERY
STABLE AND VERY FAST
AND THE DEVELOPER
EXPERIENCE IS AWESOME
EVEN AFTER HAVING TO
BUILD A LOT OF OUR OWN
INFRASTRUCTURE WE
THINK ITS GOING TO BE
WORTH THE INVESTMENT
OUR DEVELOPERS ARE
GOING TO LOVE IT

AND WE THINK

YOU WILL TOO
JAMSTACK
IS GOING TO
BE HUGE
THANK YOU
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
jamstack-enterprise/

More Related Content

PPTX
The Anatomy Of A Performance Audit
PDF
JAMstack
PDF
GraphQL Bangkok Meetup 6.0
PDF
JAMstack WTJ
PPTX
Build Fast WordPress Site With Gatsby
PPTX
C# development workflow @ criteo
PDF
Blazing fast sites using Blaze, Hybrid CMS NYC
PDF
NYC WebPerf Meetup Feb 2020 - Measuring the Adoption of Web Performance Techn...
The Anatomy Of A Performance Audit
JAMstack
GraphQL Bangkok Meetup 6.0
JAMstack WTJ
Build Fast WordPress Site With Gatsby
C# development workflow @ criteo
Blazing fast sites using Blaze, Hybrid CMS NYC
NYC WebPerf Meetup Feb 2020 - Measuring the Adoption of Web Performance Techn...

What's hot (20)

PPTX
Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018
PDF
Jayway Web Tech Radar 2015
PPTX
Common Traits of High Performing Websites, BairesWeb - Argentina
PDF
Gatsby (Code.Talks) 2019
PPTX
Real User Measurement Insights, London WebPerf 2018-Nov-06
PPTX
Why reinvent the wheel at Criteo?
PDF
Fluent 2018: Tracking Performance of the Web with HTTP Archive
PDF
What's new in Gradle 4.0
PPT
Introduction to Grails
PDF
Drupal, GraphQL, Views, View Modes and Gatsby for a US Gov site CMS Philly
PDF
Embracing the modern web using a Headless CMS with GatsbyJS CMS Philly
PPTX
Groovy & Grails - From Scratch to Production
PPTX
#CodefreshLive Event
PDF
Grails Asset Pipeline Plugin
PDF
Building a modern application using Symfony API Platform and GatsbyJS PHP QRO
PDF
Introduction to Modern DevOps Technologies
PDF
Introduction to DevOps and the Practical Use Cases at Credit OK
PDF
Intro to MontageJS
PPTX
Lightning Web Components by Abdul Gafoor
PDF
[Nuxeo World 2013] Roadmap 2014 - Product part
Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018
Jayway Web Tech Radar 2015
Common Traits of High Performing Websites, BairesWeb - Argentina
Gatsby (Code.Talks) 2019
Real User Measurement Insights, London WebPerf 2018-Nov-06
Why reinvent the wheel at Criteo?
Fluent 2018: Tracking Performance of the Web with HTTP Archive
What's new in Gradle 4.0
Introduction to Grails
Drupal, GraphQL, Views, View Modes and Gatsby for a US Gov site CMS Philly
Embracing the modern web using a Headless CMS with GatsbyJS CMS Philly
Groovy & Grails - From Scratch to Production
#CodefreshLive Event
Grails Asset Pipeline Plugin
Building a modern application using Symfony API Platform and GatsbyJS PHP QRO
Introduction to Modern DevOps Technologies
Introduction to DevOps and the Practical Use Cases at Credit OK
Intro to MontageJS
Lightning Web Components by Abdul Gafoor
[Nuxeo World 2013] Roadmap 2014 - Product part
Ad

Similar to Bringing JAMStack to the Enterprise (20)

PDF
Bringing the JAMstack to the Enterprise
PDF
'DOCKER' & CLOUD: ENABLERS For DEVOPS
PDF
Docker and Cloud - Enables for DevOps - by ACA-IT
PDF
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
PDF
Simpler Web Architectures Now! (At The Frontend 2016)
PDF
Optimizing a React application for Core Web Vitals
PDF
Building a Bank with Go
PDF
Introducing Neo4j 3.0
PDF
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
PDF
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
PPTX
ASP.NET Core For The Agile Enterprise
PDF
Angularjs practical project experiences with javascript development in a bank
PDF
Why and How SmartNews uses SaaS?
DOC
tonyz
PDF
Yannis Zarkadas. Enterprise data science workflows on kubeflow
PDF
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
PPTX
Real World Lessons in Progressive Web Application & Service Worker Caching
PPTX
Introducción al SharePoint Framework SPFx
PDF
Week 4 lecture material cc (1)
PDF
week 4_watermark.pdfffffffffffffffffffff
Bringing the JAMstack to the Enterprise
'DOCKER' & CLOUD: ENABLERS For DEVOPS
Docker and Cloud - Enables for DevOps - by ACA-IT
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
Simpler Web Architectures Now! (At The Frontend 2016)
Optimizing a React application for Core Web Vitals
Building a Bank with Go
Introducing Neo4j 3.0
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
ASP.NET Core For The Agile Enterprise
Angularjs practical project experiences with javascript development in a bank
Why and How SmartNews uses SaaS?
tonyz
Yannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
Real World Lessons in Progressive Web Application & Service Worker Caching
Introducción al SharePoint Framework SPFx
Week 4 lecture material cc (1)
week 4_watermark.pdfffffffffffffffffffff
Ad

More from C4Media (20)

PDF
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
PDF
Next Generation Client APIs in Envoy Mobile
PDF
Software Teams and Teamwork Trends Report Q1 2020
PDF
Understand the Trade-offs Using Compilers for Java Applications
PDF
Kafka Needs No Keeper
PDF
High Performing Teams Act Like Owners
PDF
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
PDF
Service Meshes- The Ultimate Guide
PDF
Shifting Left with Cloud Native CI/CD
PDF
CI/CD for Machine Learning
PDF
Fault Tolerance at Speed
PDF
Architectures That Scale Deep - Regaining Control in Deep Systems
PDF
ML in the Browser: Interactive Experiences with Tensorflow.js
PDF
Build Your Own WebAssembly Compiler
PDF
User & Device Identity for Microservices @ Netflix Scale
PDF
Scaling Patterns for Netflix's Edge
PDF
Make Your Electron App Feel at Home Everywhere
PDF
The Talk You've Been Await-ing For
PDF
Future of Data Engineering
PDF
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Next Generation Client APIs in Envoy Mobile
Software Teams and Teamwork Trends Report Q1 2020
Understand the Trade-offs Using Compilers for Java Applications
Kafka Needs No Keeper
High Performing Teams Act Like Owners
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Service Meshes- The Ultimate Guide
Shifting Left with Cloud Native CI/CD
CI/CD for Machine Learning
Fault Tolerance at Speed
Architectures That Scale Deep - Regaining Control in Deep Systems
ML in the Browser: Interactive Experiences with Tensorflow.js
Build Your Own WebAssembly Compiler
User & Device Identity for Microservices @ Netflix Scale
Scaling Patterns for Netflix's Edge
Make Your Electron App Feel at Home Everywhere
The Talk You've Been Await-ing For
Future of Data Engineering
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More

Recently uploaded (20)

PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Machine learning based COVID-19 study performance prediction
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation theory and applications.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Electronic commerce courselecture one. Pdf
PDF
cuic standard and advanced reporting.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Modernizing your data center with Dell and AMD
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
MYSQL Presentation for SQL database connectivity
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Machine learning based COVID-19 study performance prediction
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation theory and applications.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Unlocking AI with Model Context Protocol (MCP)
Electronic commerce courselecture one. Pdf
cuic standard and advanced reporting.pdf
The AUB Centre for AI in Media Proposal.docx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Spectral efficient network and resource selection model in 5G networks
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Agricultural_Statistics_at_a_Glance_2022_0.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Modernizing your data center with Dell and AMD
Dropbox Q2 2025 Financial Results & Investor Presentation
MYSQL Presentation for SQL database connectivity
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

Bringing JAMStack to the Enterprise