SlideShare a Scribd company logo
@mauroservienti | #apiconf2018
Designing a UI
for Microservices
Mauro Servienti | @mauroservienti
@mauroservienti | #apiconf2018
100% remote
@mauroservienti | #apiconf2018
bike rider
@mauroservienti | #apiconf2018
bananas
my favorite snack
@mauroservienti | #apiconf2018
What could
possibly go
wrong…
@mauroservienti | #apiconf2018
Let me buy a “banana holder”
@mauroservienti | #apiconf2018
Mauro Servienti
Solution Architect @ Particular Software
mauro.servienti@gmail.com
@mauroservienti
//milestone.topics.it
@mauroservienti | #apiconf2018
Does a page like that exist?
Or put it in another way: does a “Product” class or aggregate exist?
@mauroservienti | #apiconf2018
“There is no spoon”
Sales
Warehouse
Shipping
Marketing
@mauroservienti | #apiconf2018
Domain Model Decomposition
services owning
their own piece of
information.
Single Responsibility Principle
@mauroservienti | #apiconf2018
How can we design something like that?
@mauroservienti | #apiconf2018
Denormalization Temptations…
Marketing Sales Shipping Warehouse
De-normalized API
Client
“Product”ViewModel…
/products/1
@mauroservienti | #apiconf2018
<rant />
That’s a cache!
@mauroservienti | #apiconf2018
Oh…and by the way…
@mauroservienti | #apiconf2018
Whatchoo talkin'
'bout, Willis?
a report
not a cache
@mauroservienti | #apiconf2018
A report
• We're crossing a “boundary”
• Data flow out of each service to the user
• Users are already pulling things on demand
• let's benefit of that
@mauroservienti | #apiconf2018
ViewModel Composition
Marketing Sales Shipping Warehouse
Client
/products/1
PK PK PK PK
ViewModel…
@mauroservienti | #apiconf2018
Full vertical ownership
Marketing Sales Shipping Warehouse
@mauroservienti | #apiconf2018
Full vertical ownership
Marketing Sales Shipping Warehouse
Doc DB
+
HTTP
DB DB
back-end back-end
Web
Proxy
API
API
Proxy to
3° party
API
1 month
cache
24 hours
cache
No cache10 minutes
cache
front-end
component
front-end
component
front-end
component
front-end
component
client shell
@mauroservienti | #apiconf2018
View Model Appender
@mauroservienti | #apiconf2018
Request matching
@mauroservienti | #apiconf2018
Composition
@mauroservienti | #apiconf2018
Full vertical ownership
Marketing Sales Shipping Warehouse
Doc DB
+
HTTP
DB DB
back-end back-end
Web
Proxy
API
API
Proxy to
3° party
API
front-end
component
front-end
component
front-end
component
front-end
component
client shell
composition gateway
Marketing
Appender
Sales
Appender
Shipping
Appender
Warehouse
Appender
@mauroservienti | #apiconf2018
Composition Gateway
@mauroservienti | #apiconf2018
is all that glitters gold?
@mauroservienti | #apiconf2018
What about grids?
@mauroservienti | #apiconf2018
View
model/products/1
ProductNameA
€ 20.00
cover
image
A
Supplier A
ProductNameB
€ 20.00
cover
image
B
Supplier B
ProductNameC
€ 20.00
cover
image
C
Supplier C
ProductNameD
€ 20.00
cover
image
D
Supplier D
@mauroservienti | #apiconf2018
Component from
product-catalog
View
model
Component from
product-catalog
/products/1
ProductNameA
€ 20.00
cover
image
A
Supplier A
ProductNameB
€ 20.00
cover
image
B
Supplier B
ProductNameC
€ 20.00
cover
image
C
Supplier C
ProductNameD
€ 20.00
cover
image
D
Supplier D
load related
products
@mauroservienti | #apiconf2018
client-side message broker
Component from
product-catalog
Component from
sales
Component from
marketing
View
model
Component from
product-catalog
Component from
sales
Component from
marketing
ProductNameA
€ 20.00
cover
image
A
Supplier A
ProductNameB
€ 20.00
cover
image
B
Supplier B
ProductNameC
€ 20.00
cover
image
C
Supplier C
ProductNameD
€ 20.00
cover
image
D
Supplier D
publish `RelatedProductsFound`
load related
products
receive event
/products/1
@mauroservienti | #apiconf2018
Component from
product-catalog
Component from
sales
Component from
marketing
View
model
Component from
product-catalog
Component from
sales
Component from
marketing
ProductNameA
€ 20.00
cover
image
A
Supplier A
ProductNameB
€ 20.00
cover
image
B
Supplier B
ProductNameC
€ 20.00
cover
image
C
Supplier C
ProductNameD
€ 20.00
cover
image
D
Supplier D
load related
products
/products/1
@mauroservienti | #apiconf2018
Composition
@mauroservienti | #apiconf2018
Composition
@mauroservienti | #apiconf2018
Composition
@mauroservienti | #apiconf2018
Recap
• Clearly defined ownership
• SRP is respected
• Different caching strategies
• Business is much more flexible
• Select N+1 is not a concern
• # of requests will be “# of services”
@mauroservienti | #apiconf2018
//bit.ly/view-model-composition-demos
@mauroservienti | #apiconf2018

More Related Content

PPTX
Angular
PPTX
JFokus 2019 - Reacting to the future of application architecture
PPTX
Google chrome extensions
PDF
Wc miami Genesis Introduction
PPTX
Spring18 Lightning Component Updates
PPTX
Progettare una UI per i Microservices
PDF
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
PPTX
Design a UI for your Microservices @ Do IT Better
Angular
JFokus 2019 - Reacting to the future of application architecture
Google chrome extensions
Wc miami Genesis Introduction
Spring18 Lightning Component Updates
Progettare una UI per i Microservices
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Design a UI for your Microservices @ Do IT Better

Similar to Designing a ui for microservices (20)

PDF
Designing a UI for microservices
PPTX
Generazione dinamica della UI con Blazor WebAssembly
PPTX
Conversionista : Conversion manager course - Stockholm 20 march 2013
PPTX
Reactive summit 2018
PDF
Micro Frontends in Practice: A Case Study Using Flutter in the Web
PPTX
SharePoint development evolution from classic to app
PPTX
APIdays Helsinki 2019 - Lean Method for Building Good APIs for Business – API...
PDF
How to get your management board to Teams Kettukari MWPC Paris 191.2021
PDF
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
PDF
Creating an Accessibility Machine for 220 Million Users
PDF
50 Great Products For Startups
PDF
apidays LIVE Jakarta - What will the next generation of API Portals look like...
PDF
Lizards & Pumpkins Catalog Replacement at mm17de
PPTX
There is an App for...Vanity URLs
PPTX
Mconf14 aperto vanity url-app
PDF
apidays Paris 2022 - Lessons from the evolution of API product management ove...
PPTX
Marjukka Niinioja at APIdays Amsterdam 2019
PDF
Search in the Metaverse
PDF
BrightonSEO April 2022 - Kara Thurkettle - Search in the Metaverse.pdf
PPTX
[RakutenTechConf2013] [E-2] HTML5 in Rakuten
Designing a UI for microservices
Generazione dinamica della UI con Blazor WebAssembly
Conversionista : Conversion manager course - Stockholm 20 march 2013
Reactive summit 2018
Micro Frontends in Practice: A Case Study Using Flutter in the Web
SharePoint development evolution from classic to app
APIdays Helsinki 2019 - Lean Method for Building Good APIs for Business – API...
How to get your management board to Teams Kettukari MWPC Paris 191.2021
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
Creating an Accessibility Machine for 220 Million Users
50 Great Products For Startups
apidays LIVE Jakarta - What will the next generation of API Portals look like...
Lizards & Pumpkins Catalog Replacement at mm17de
There is an App for...Vanity URLs
Mconf14 aperto vanity url-app
apidays Paris 2022 - Lessons from the evolution of API product management ove...
Marjukka Niinioja at APIdays Amsterdam 2019
Search in the Metaverse
BrightonSEO April 2022 - Kara Thurkettle - Search in the Metaverse.pdf
[RakutenTechConf2013] [E-2] HTML5 in Rakuten
Ad

More from Mauro Servienti (20)

PPTX
Welcome to the (state) machine @ ExploreDDD 2019
PPTX
Designing a ui for microservices @ .NET Day Switzerland 2019
PPTX
Welcome to the (state) machine @ Xe One Day Enterprise Applications
PPTX
All our aggregates are wrong @ NDC Copenhagen 2019
PPTX
Be like water, my friend @ Agile for Innovation 2019
PPTX
Microservices architecture is it the right choice to design long-living syste...
PPTX
Titles, abstracts, and bio matter... oh my! @ Global Diversity CFP Day 2019
PPTX
Living organizations, particular software @ do IT Better Parma
PPTX
Welcome to the (state) machine @ Crafted Software
PPTX
PO is dead, long live the PO - Italian Agile Day 2018
PPTX
Microservices and pineapple on pizza what do they have in common - dos and ...
PPTX
All our aggregates are wrong (ExploreDDD 2018)
PPTX
Po is dead, long live the po
PPTX
Shipping code is not the problem, deciding what to ship it is!
PPTX
GraphQL - Where are you from? Where are you going?
PPTX
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
PPTX
The road to a Service Oriented Architecture is paved with messages
PPTX
La via verso SOA è lastricata di messaggi
PPTX
Implementare il single sign on con IdentityServer
PPTX
How we daily manage and work in a dispersed company: Particular Software
Welcome to the (state) machine @ ExploreDDD 2019
Designing a ui for microservices @ .NET Day Switzerland 2019
Welcome to the (state) machine @ Xe One Day Enterprise Applications
All our aggregates are wrong @ NDC Copenhagen 2019
Be like water, my friend @ Agile for Innovation 2019
Microservices architecture is it the right choice to design long-living syste...
Titles, abstracts, and bio matter... oh my! @ Global Diversity CFP Day 2019
Living organizations, particular software @ do IT Better Parma
Welcome to the (state) machine @ Crafted Software
PO is dead, long live the PO - Italian Agile Day 2018
Microservices and pineapple on pizza what do they have in common - dos and ...
All our aggregates are wrong (ExploreDDD 2018)
Po is dead, long live the po
Shipping code is not the problem, deciding what to ship it is!
GraphQL - Where are you from? Where are you going?
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
The road to a Service Oriented Architecture is paved with messages
La via verso SOA è lastricata di messaggi
Implementare il single sign on con IdentityServer
How we daily manage and work in a dispersed company: Particular Software
Ad

Recently uploaded (20)

PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
System and Network Administration Chapter 2
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
Essential Infomation Tech presentation.pptx
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
L1 - Introduction to python Backend.pptx
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Transform Your Business with a Software ERP System
PDF
Nekopoi APK 2025 free lastest update
PDF
AI in Product Development-omnex systems
PDF
medical staffing services at VALiNTRY
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Understanding Forklifts - TECH EHS Solution
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
System and Network Administration Chapter 2
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
How to Migrate SBCGlobal Email to Yahoo Easily
How Creative Agencies Leverage Project Management Software.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Essential Infomation Tech presentation.pptx
Reimagine Home Health with the Power of Agentic AI​
Wondershare Filmora 15 Crack With Activation Key [2025
L1 - Introduction to python Backend.pptx
Upgrade and Innovation Strategies for SAP ERP Customers
Transform Your Business with a Software ERP System
Nekopoi APK 2025 free lastest update
AI in Product Development-omnex systems
medical staffing services at VALiNTRY
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Understanding Forklifts - TECH EHS Solution
wealthsignaloriginal-com-DS-text-... (1).pdf

Designing a ui for microservices

Editor's Notes

  • #10: While showing ownership in overlay....Lots of components, or in SOA lingo services, each one owing different data. Otherwise it's a clear violation of responsibilities.
  • #13: It's very tempting to design a technical solution
  • #14: no clear ownership no easy way to (partially) invalidate it the truth from the user perspective
  • #18: It's very tempting to design a technical solution
  • #19: It's very tempting to design a technical solution
  • #20: It's very tempting to design a technical solution
  • #24: It's very tempting to design a technical solution