Beyond Micro Frontends: Effective Composable Decoupled Applications on Cloud Native Infrastructure
QCon London - March 28th 2023
microfrontend.dev - @anfibiacreativa

Natalia Venditto
2018 - Decoupling a frontend (monolith) may need more than frontend knowledge
microfrontend.dev - @anfibiacreativa

© Joshua Earle | Unsplash.com
microfrontend.dev - @anfibiacreativa

microfrontend.dev - @anfibiacreativa

Start from scratch
Decouple and modernize
microfrontend.dev - @anfibiacreativa

Two potential directions to take...
(Some) Platform Stats
- Business critical
- 600 projects in multiple verticals
- 3000 localized websites
- Thousands of registered users
- Millions of visits every month
microfrontend.dev - @anfibiacreativa

Monolithic Backend
Monolithic Frontend
Monolithic Frontend
Micro-service
Micro-service
Micro-service
Typical monolith app decoupling process
(service, technology, data perspective)
API Gateway
microfrontend.dev - @anfibiacreativa

A monolith frontend layer is not necessarily a bad thing
microfrontend.dev - @anfibiacreativa

Sometimes modular > micro-*
Page types
Homepage
Landing page
Blog page
User page
Common Components Set: classic HTML multiple page application
Analysis
+ JS and CSS loaded sync or async (Monolith)
Some user experiences are relatively static, while others are much more dynamic or frequently updated.
DYNAMIC Data Request
AT RUNTIME
MOST PAGES COME FROM SERVER CACHE
microfrontend.dev - @anfibiacreativa

E-commerce
New requirement
Page types
Homepage
Landing page
Blog page
User page
How do users interact? vs. How are the backend and frontend connected?
MORE STATIC
LESS AUTHORING
MORE DYNAMIC
LESS AUTHORING
LONG LIVED
SHORT LIVED
MORE STATIC
MORE AUTHORING
LONG LIVED
MORE DYNAMIC
MORE AUTHORING
LONG LIVED
E-commerce
...
MORE DYNAMIC
MORE AUTHORING
SHORT LIVED
Common Components Set: classic HTML multiple page application
+ JS and CSS loaded sync or async (Monolith)
DYNAMIC Data Request
AT RUNTIME
MOST PAGES COME FROM SERVER CACHE
microfrontend.dev - @anfibiacreativa

In the enterprise context, we're designing for users that come to our customer's platforms to solve different problems.
microfrontend.dev - @anfibiacreativa

Architect
Design independent and lean experiences that fit within tight performance budgets.
Use-case(s)
Architecture
Decision
Architecture
Decision
Tech-stack
Definition
Tech-stack
Definition
Development
Cycle
Development
Cycle
Deployment
Options
Deployment
Options
systems
user experiences
SPEC
microfrontend.dev - @anfibiacreativa

B
BACKEND-CENTRIC
microfrontend.dev - @anfibiacreativa

Before
A
API-FIRST
microfrontend.dev - @anfibiacreativa

After
SPA + cached to CDN
SSG
SSR
Data Request
AT BUILDTIME
Data Request
ON THE FLY
each frontend becomes just another client of the API, and it doesn't matter what technology we build it with
Data Request
AT RUNTIME
(Containerized) Microservice App.
Serverless Func. (Origin)
Edge Computing/Composable
API Contract and Management, Cache Layer, Validation and Proxy
Homepage
Landing page
Blog page
User page
E-commerce
Hybrid

Natalia Venditto
aka anfibiacreativa
Principal JavaScript DX Lead Microsoft Azure
Google Developer Expert for Angular and Web Technologies (Runtime Performance)

Author of https://microfrontend.dev
1x Microsoft Most Valuable Professional
PEOPLE
TECHNOLOGY
PROCESSES
Specialized team working on solving a concrete problem
Tech stack is chosen according to the team skills and the specific use-case
Processes are simplified to enable each team independently, based off of technology and requirements
Why decoupling? Organizational Performance
microfrontend.dev - @anfibiacreativa

Independent deployability
microfrontend.dev - @anfibiacreativa

The ultimate goal. Keep this with you.
Micro-frontends
Independent and composable decoupled frontend applications
microfrontend.dev - @anfibiacreativa

Questions you may have now
- What can help me design API-First, decoupled composable frontends?
- Who are the users we are architecting micro-frontends for?
- What cloud components, developer tools and deployment options are useful?
microfrontend.dev - @anfibiacreativa

What are decoupled composable frontend applications?
They are applications -of all sizes- with an important frontend component. They are independently developed and managed and typically integrated in composition as part of a larger distributed system that was specifically designed for their integration.
microfrontend.dev - @anfibiacreativa

Decoupled application e2e
API (Functions)
Button
Database
Recommendations





API Gateway
Decoupled frontend application

~ packages/
|--- api/
|----GET
|----POST
|----...()
|--- frontend/
|----src/
|...index
Composition: Horizontal Split





Main Navigation
Button
Shopping Cart
Recommendations






Recommendations
Multi-framework horizontal
Single framework horizontal
Composition: Vertical Split

Button
Shopping Cart
Recommendations






Recommendations
Single framework vertical
eg: https://shop.example.com
MPA with dynamic embeds
eg: https://www.example.com/homepage

microfrontend.dev - @anfibiacreativa

Producing an effective decision matrix
microfrontend.dev - @anfibiacreativa

microfrontend.dev - @anfibiacreativa

How?
Where to?
For whom?
To what?
Where in?
With what?
In which way?
DEV
OPS
ARCH
How?
Where to?
For Whom?
SPECIFICATION
ARCHITECTURE DECISIONS
API CONTRACT
To what?
Where in?
With What?
microfrontend.dev - @anfibiacreativa

DEV
OPS
ARCH
How do we design API-First with frontend composition in mind?
We start by designing the user interface and the user-experience and defining the desired representation of state in the frontend, and specify our API's from that reference.
microfrontend.dev - @anfibiacreativa

APIs can and will degrade runtime performance
- Specify before executing
- Use the OpenAPI open standard
- Choose your API pattern wisely
- Reduce payload to a min
- Use headers and caching to reduce roundtrips
- Learn to benefit from infrastructure proxies
- Implement e2e testing
Particularly clientside!
microfrontend.dev - @anfibiacreativa

How?
Where to?
For Whom?
SPECIFICATION
ARCHITECTURE DECISIONS
API CONTRACT
To what?
Where in?
With What?
microfrontend.dev - @anfibiacreativa

DEV
OPS
ARCH
microfrontend.dev - @anfibiacreativa

Who are the users that we are architecting for?
We need to understand them and where do they access from and what are the connectivity options, the average devices, how do they browse, and why do they visit our customer's applications.
© Hannah Busing | Unsplash.com
microfrontend.dev - @anfibiacreativa

© Hal Gatewood | Unsplash.com
microfrontend.dev - @anfibiacreativa

2007
2011
2015
2019
2022
250 M
750 M
1,250 M
1000X
Growth
microfrontend.dev - @anfibiacreativa

© Tyler Lastovich | Unsplash.com
28%
iPhone*
14% in LATAM
16% in APAC
microfrontend.dev - @anfibiacreativa

Know your users and what they have at hand
Baseline price
US$
Critical path budget
200
Kbs
~150
microfrontend.dev - @anfibiacreativa

© NASA | Unsplash.com
microfrontend.dev - @anfibiacreativa

https://www.emnify.com/blog/global-2g-3g-phase-out
While some countries in the world have sunset 2G and even 3G, most countries in Latin America and Europe plan to continue to service devices until late 2025 and even late 2026.
4G coverage 2021
85%
5G coverage 2021
25%
microfrontend.dev - @anfibiacreativa

© Martin Sanchez | Unsplash.com
microfrontend.dev - @anfibiacreativa

Progressive enhancement
...not an old term.
microfrontend.dev - @anfibiacreativa

How?
Where to?
UX-UI
SPECIFICATION
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
To what?
Where in?
With What?
DEV
OPS
ARCH
microfrontend.dev - @anfibiacreativa

How?
Where to?
UX-UI
SPECIFICATION
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
To what?
Where in?
With What?
DEV
OPS
ARCH
End-user bounce rate increase
< 1s > 3s
32%
< 1s > 5s
90%
*Financial institutions sites in the US average 2.2s
microfrontend.dev - @anfibiacreativa

https://www.thinkwithgoogle.com/marketing-strategies/app-and-mobile/mobile-page-speed-new-industry-benchmarks/
Request and assets count
Max. on average
50
Total weight of assets
~3Mb
microfrontend.dev - @anfibiacreativa

The stack may come determined by the render strategy and the split pattern chosen.
microfrontend.dev - @anfibiacreativa

Horizontal Split





Main Navigation
Button
Shopping Cart
Recommendations






Recommendations
Multi-framework horizontal
Single framework horizontal
A framework choice must be the result of evaluating:
Recommendations











Possible reactivity patterns
State management options
Preferred rendering strategy
Data fetching methods
Deployment origin
Available ecosystem
Community and docs
When possible...
Use new generation frontend frameworks.
Stick to web platform APIs and web standards.
Async or defer load, consider the critical path.
Tree-shake, bundle consciously and eliminate dead code.
Always!
Define and respect a performance budget.
What are the new generation of full-stack frameworks?
Meta-frameworks with SSR capabilities.
microfrontend.dev - @anfibiacreativa

Island Architecture
Homepage
Userpage
© Jcob Nasyr | Unsplash.com
instead of a multi-framework horizontal split
Partial Hydration
microfrontend.dev - @anfibiacreativa



Features of Island Architecture
Frameworks featuring this from of progressive hydration don't need a shell.
Every region is hydrated independently and bootstrap is handled by the top-level object (document).
They feature state serialization.
microfrontend.dev - @anfibiacreativa

YOU MAY WANT TO CHECK






Resumability instead of hydration
https://qwik.builder.io
As opposed to hydration (that replays all logic in the client), resumability picks up where the server left (state and handlers are serialized).
microfrontend.dev - @anfibiacreativa

YOU MAY WANT TO CHECK
Web-standards based HTML-First frameworks
Real HTML-First frameworks feature no compilation/transpiling steps.
In the case of enhance.dev, it promotes progressive enhancement as FWA (pure serverless functions)

https://enhance.dev
YOU MAY WANT TO CHECK
microfrontend.dev - @anfibiacreativa

microfrontend.dev - @anfibiacreativa

TECHNICAL STACK
How?
Where to?
UX-UI
SPECIFICATION
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
PROGRAMMING LANG.
FRAMEWORK
PATTERNS
To what?
Where in?
DEV
OPS
ARCH
microfrontend.dev - @anfibiacreativa

CODE STRUCTURE
TECHNICAL STACK
How?
Where to?
UX-UI
SPECIFICATION
DEPENDENCY
MGMNT.
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
PROGRAMMING LANG.
FRAMEWORK
PATTERNS
DEVELOPMENT
SETUP
To what?
DEV
OPS
ARCH
CODE STRUCTURE
TECHNICAL STACK
How?
Where to?
UX-UI
microfrontend.dev - @anfibiacreativa

SPECIFICATION
DEPENDENCY
MGMNT.
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
PROGRAMMING LANG.
FRAMEWORK
PATTERNS
DEVELOPMENT
SETUP
INTEGRATIONS
1P AND 3P SERVICES
DATA ACCESS
OBSERVABILITY
DEV
OPS
ARCH
Tools for Code Optimization and Orchestration
microfrontend.dev - @anfibiacreativa

Remote
shareScope
Host Runtime
Container
provided modules
exposed modules
consumed modules
version check
version check
version def
Analyzing code at runtime can be challenging without a good governance strategy in place. Fate-sharing and version skew can be some of the problems.
microfrontend.dev - @anfibiacreativa

CODE STRUCTURE
TECHNICAL STACK
How?
microfrontend.dev - @anfibiacreativa

SPECIFICATION
DEPENDENCY
MGMNT.
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
DEVELOPMENT
SETUP
PROGRAMMING LANG.
FRAMEWORK
PATTERNS
1P AND 3P SERVICES
DATA ACCESS
OBSERVABILITY
Where to?
UX-UI
INTEGRATIONS
DEV
OPS
ARCH
microfrontend.dev - @anfibiacreativa

What are the cloud services and components relevant to this architecture type?
As frontend developers, knowing our cloud infrastructure, services and models is an extreme advantage to better design and architect for the user in a cost-efficient and performant way and be able to identify use-cases that can be shipped as composable app.
Including the integrations.
Serverless
microfrontend.dev - @anfibiacreativa

Fully managed, auto-scalable infrastructure, from zero to provider pre-set limits.
Leverage modern frameworks polymorphism and move resource intensive computation to the cloud
Edge Functions
Origin Functions
Compute that needs to be executed closer to the user. Composability at the edge.
Cold start and latency may be acceptable for database querying for data analysis workflows.
Containers
microfrontend.dev - @anfibiacreativa

And how much we want them abstracted away, orchestrated and managed by the providers.
There is more to containers than Docker and K8s.
Containers are a way to run code in isolation, and it's not limited to Docker ad K8s.
Wasm
Containerization at the edge of the network. Alternative runtimes deliver with native-like performance.
Event-driven
Data streaming made possible by the Web Platform and cloud event and messaging streaming services, contribute to highly dynamic composition.
Event-driven architectures benefit from mechanisms available in both the browser and cloud.
Consumer 1
Broker
Topic N
Data Processing
subscribed to Topic 2
Consumer N
Publisher 1
microfrontend.dev - @anfibiacreativa

Publisher 3
Topic 1
Publisher 2
Topic 2
Consumer 2
subscribed to Topic 1 and N
subscribed to Topic 1
Use design patterns supported by the Web Platform and at a cloud-native level, for state-management...
Decoupled Frontend A
Pub/Sub
LocalStorage
input
event=`topic`
publish(event)
subscribe(event, callback)
subscribe(event, callback)
Decoupled Frontend B
Decoupled Frontend C
microfrontend.dev - @anfibiacreativa

As well as implement API end-point consolidation via API Gateway
Consumer 1
API Management
Service SDK
Consumer N
API 1 - RESTFul
microfrontend.dev - @anfibiacreativa

API N - tRPC
API 2 - GraphQL
Consumer 2
Containerized Node.js App
Querying via Serverless Function
Reverse Proxy, Cache
Total global data estimated in 2025
200 Zb
© Fabio | Unsplash.com
microfrontend.dev - @anfibiacreativa

Benefit from geo-distributed, multi model databases
Relational
Document Stores
Key-Value
Graph
Spatial
Search Engines
Wide Column
Vector
Time-series

MySQL, PostgreSQL, SQL Server, Azure NoSQL, Cassandra
Cosmos DB, MongoDB, Firebase, Firestore
Cloud BigTable
Cosmos DB, SpatiaLite, PostGIS
Redis, Memcached
Cosmos DB for Gremlin, Neo4js, Virtuoso
Elasticshearch, Solr, Algolia
MongoDB, Gremlin, Influx, Prometheus
Weaviate, Qdrant, Milvus, Elastic








microfrontend.dev - @anfibiacreativa

Relational
Document Stores
Key-Value
Graph
Spatial
Search Engines
Wide Column
Vector
Time-series

AI Model Training, Advanced Search








Content Management, Banking, CRM, Resource Planning
Content Management, Fintech, Customization, Personalization
Session Management, Product recommendations, Caching
Fraud Detection, Recommendation Engines, Social Networks, Network Mapping
IoT use-cases (collecting data from devices), Trends and forecasting, Monitorization
Full-text content search
Logging, Geographic information, Reporting systems
Geomarketing, Supply chain optimization, Environmental Management
microfrontend.dev - @anfibiacreativa

CODE STRUCTURE
TECHNICAL STACK
How?
microfrontend.dev - @anfibiacreativa

SPECIFICATION
DEPENDENCY
MGMNT.
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
DEVELOPMENT
SETUP
PROGRAMMING LANG.
FRAMEWORK
PATTERNS
1P AND 3P SERVICES
DATA ACCESS
OBSERVABILITY
UX-UI
INTEGRATIONS
INFFRASTRUCTURE
APPLICATION RUNTIME
COMPOSITION LAYER
API GATEWAY
DATA STORAGE AND ACCESS
CACHING AND PROXYING
Infra as Code
microfrontend.dev - @anfibiacreativa

Make infrastructure decisions repeatable and incremental on iteration, in an automated way.
CI/CD
CODE STRUCTURE
TECHNICAL STACK
microfrontend.dev - @anfibiacreativa

SPECIFICATION
DEPENDENCY
MGMNT.
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
DEVELOPMENT
SETUP
PROGRAMMING LANG.
FRAMEWORK
PATTERNS
1P AND 3P SERVICES
DATA ACCESS
OBSERVABILITY
UX-UI
INTEGRATIONS
INFFRASTRUCTURE
APPLICATION RUNTIME
COMPOSITION LAYER
API GATEWAY
DATA STORAGE AND ACCESS
CACHING AND PROXYING
CI/CD PIPELINES
CODE HOSTING
PIPELINES/WORKFLOWS
INFRASTRUCTURE AS CODE
DEV
OPS
ARCH
MONITORIZATION
CODE STRUCTURE
TECHNICAL STACK
microfrontend.dev - @anfibiacreativa

SPECIFICATION
DEPENDENCY
MGMNT.
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
DEVELOPMENT
SETUP
PROGRAMMING LANG.
FRAMEWORK
PATTERNS
1P AND 3P SERVICES
DATA ACCESS
OBSERVABILITY
UX-UI
INTEGRATIONS
INFFRASTRUCTURE
APPLICATION RUNTIME
COMPOSITION LAYER
API GATEWAY
DATA STORAGE AND ACCESS
CACHING AND PROXYING
CI/CD PIPELINES
CODE HOSTING
PIPELINES/WORKFLOWS
INFRASTRUCTURE AS CODE







DEV
OPS
ARCH
MONITORIZATION
CODE STRUCTURE
TECHNICAL STACK
microfrontend.dev - @anfibiacreativa

SPECIFICATION
DEPENDENCY
MGMNT.
ARCHITECTURE DECISIONS
API CONTRACT
DESIGN MOCKS
WIREFRAMES
DEVELOPMENT
SETUP
PROGRAMMING LANG.
FRAMEWORK
PATTERNS
1P AND 3P SERVICES
DATA ACCESS
OBSERVABILITY
UX-UI
INTEGRATIONS
INFFRASTRUCTURE
APPLICATION RUNTIME
COMPOSITION LAYER
API GATEWAY
DATA STORAGE AND ACCESS
CACHING AND PROXYING
CI/CD PIPELINES
CODE HOSTING
PIPELINES/WORKFLOWS
INFRASTRUCTURE AS CODE
DEVELOPMENT
DESIGN
DEPLOYMENT







DEV
OPS
ARCH
MONITORIZATION
Development
microfrontend.dev - @anfibiacreativa

Specification
Setup
Design
Integration
Delivery
Operations
DEVELOPMENT
DESIGN
DEPLOYMENT







DEV
OPS
ARCH

Thank you.
@anfibiacreativa - https://www.microfrontend.dev

Beyond Micro Frontends: Effective Composable Decoupled Applications on Cloud Native Infrastructure
By Natalia Venditto
Beyond Micro Frontends: Effective Composable Decoupled Applications on Cloud Native Infrastructure
- 810