Headless Architecture
&
The Future of Websites
@webcampzagreb
•
@swisswebmiss
Agenda
Introduction
Solution Architecting
Decoupling Systems
How to Implement
Questions?
Dobar dan!
I'm Heidi.
American from Portland, OR.
Senior Front End Engineer @Bumped
@swisswebmiss
Solution Architecting
Finding the Right Fit
"Platform-Agnostic"
Technical Requirements
We need to integrate into our order management system
We want to build the frontend in React
We want to build the backend in Ruby.
In the future we would like to create a progressive web app.
We want to include User-Generated
Content
Fitting into the parameters of a monolith system has implications on scalability, performance,
and user-experience.
Technical Debt
MVP
Phase II?
Technical Debt
Tethered to
system roadmap
Custom layer
of code
Less control of
source code
Performance Issues
of internet users expect the mobile version of the website to be faster than the desktop
85%
Source: sitecore.com/resources/index/infographics/go-beyond-the-web
Performance Issues
Unoptimized media
and scripts
Resource-intensive
plugins
Heavy load time
on the front end
Performance Issues
Median Time to Interact
Reach
Source: sitecore.com/resources/index/infographics/go-beyond-the-web
of consumers want to learn more about a place they are visiting through use of AR/VR.
67%
Reach
Source: sitecore.com/resources/index/infographics/go-beyond-the-web
of millennials said they would not buy from a brand that published irrelevant, badly written, poorly designed content.
71%
Reach
More work for
content creators
Inconsistencies in
content
Data stored in
different databases
Decoupling Systems
Going Beyond the Browser
Separate the
presentation layer
from the backend layer.
INFRASTRUCTURE
WEBSERVER
DATABASE
BACK-END UI
API
YOUR CODE
WEBSERVER
Headless
Monolith
INFRASTRUCTURE
WEBSERVER
DATABASE
BACK-END UI
YOUR CODE
INFRASTRUCTURE
WEBSERVER
DATABASE
BACK-END UI
API
YOUR CODE
WEBSERVER
Headless
Sample eCommerce Architecture
Process
APIs
System
APIs
Payment Processing
Tax
Service
Order Processing
Shipping
Status
Payment
Address
Customer
Inventory
Tax
Shipment
Promos
Orders
Fulfillment
Experience
APIs
Content Management
Allows each team to focus on what they are good at.
Flexibility
Backend and frontend systems are swappable.
Framework Agnostic
Leverage static-site generators
Faster Page Speed
Query the services you need,
when you need them.
Greater Control
{
user(id: 123) {
friends {
friends(job: "engineer") {
name
}
}
}
}
Test and Iterate
Test and deploy component by component.
Omnichannel
"Now
Boarding"
"Check in for your flight"
"Price drop on flight"
"Flights to Zagreb"
Airline: | Flight: | Departure City: | Arrival City: |
KLM | 1234 | AMS | ZAG |
Departure Time: | Arrival Time: | Duration: | Price: |
11:20 | 13:10 | 110 minutes | € 499 |
Localization
Title
Hello!
Subtitle
Welcome to WebCamp.
English - UK
Title
Zdravo!
Subtitle
Dobrodošli u WebCamp.
Croatian
Vet Carefully
Further reach
Restricted editor
Restricted Editor
No robust
dashboards
No WYSIWYG editor
No built-in
plugins
Vet Carefully
Scalable
Larger tech stack
Further reach
Restricted editor
Increased Maintenance
Different
technologies
Separate containers
Version
control
Vet Carefully
Scalable
Larger tech stack
Further reach
Restricted editor
Performance
Costly
Cost Prohibitive
No open source
codebase
Additional hosting for presentation layer
Subscription-based
API services
Decoupling Your Approach
Think Content First
It means you need to start with
what you want to say instead of
how to present it.
Think like a
content strategist
1
Think like a content strategist
1
Who is my audience?
What is their customer journey and
what content do they need in each step?
Which channels do we need to
communicate through?
How do I structure the content so that I can reuse it across different places and channels?
Break the
WYSIWYG addiction
2
Break the WYSIWYG addiction
2
Draft
Preview
Publish
Status:
Staging Site
Break the WYSIWYG addiction
2
Draft
Preview
Publish
Status:
Live Site
Use APIs instead
of plugins
3
Use APIs instead of plugins
3
Data architecture
Type of API and language bindings
Average downtime and availability
Request limits and cost
Documentation + support
I can't start from scratch
¯\_(ツ)_/¯
“One of the natural wonders of this area [Australia] is the huge strangler vines. They seed in the upper branches of a fig tree and gradually work their way down the tree until they root in the soil. Over many years they grow into fantastic and beautiful shapes, meanwhile strangling and killing the tree that was their host.”
Strangler Pattern
Source: martinfowler.com/bliki/StranglerApplication.html
Martin Fowler
Strangler Pattern
Plan
Strangler Pattern
Identify boundaries
Plan
Strangler Pattern
Identify boundaries
Plan
Refactor both backend and frontend
Strangler Pattern
Refactor page by page
Strangler Pattern
Be mindful of scope creep
Refactor page by page
Strangler Pattern
Adoption
Coexist
Sunset
Long-term Process
Headless architecture can provide a more scalable, performant and personalized approach to your web applications and beyond.
Wrap up
Questions?
Slides will be available on Twitter:
@swisswebmiss
https://joind.in/talk/137e5