for microservices

for Microservices Mauro Servienti | @mauroservienti @mauroservienti - PowerPoint PPT Presentation

Designing a UI for Microservices Mauro Servienti | @mauroservienti @mauroservienti | #apiconf2018 100% remote @mauroservienti | #apiconf2018 bike rider @mauroservienti | #apiconf2018 bananas my favorite snack @mauroservienti | #apiconf2018


  1. Designing a UI for Microservices Mauro Servienti | @mauroservienti @mauroservienti | #apiconf2018

  2. 100% remote @mauroservienti | #apiconf2018

  3. bike rider @mauroservienti | #apiconf2018

  4. bananas my favorite snack @mauroservienti | #apiconf2018

  5. What could possibly go wrong… @mauroservienti | #apiconf2018

  6. Let me buy a “banana holder” @mauroservienti | #apiconf2018

  7. Mauro Servienti Solution Architect @ Particular Software mauro.servienti@gmail.com @mauroservienti //milestone.topics.it @mauroservienti | #apiconf2018

  8. Does a page like that exist? Or put it in another way: does a “Product” class or aggregate exist? @mauroservienti | #apiconf2018

  9. “There is no spoon” Marketing Sales Shipping Warehouse @mauroservienti | #apiconf2018

  10. Domain Model Decomposition services owning their own piece of information. Single Responsibility Principle @mauroservienti | #apiconf2018

  11. How can we design something like that? @mauroservienti | #apiconf2018

  12. Denormalization Temptations… Marketing Sales Shipping Warehouse De-normalized API ViewModel… “Product” Client /products/1 @mauroservienti | #apiconf2018

  13. That’s a cache! <rant /> @mauroservienti | #apiconf2018

  14. Oh…and by the way… @mauroservienti | #apiconf2018

  15. a report not a cache Whatchoo talki lkin' 'bout, , Will illis is? @mauroservienti | #apiconf2018

  16. 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

  17. ViewModel Composition Marketing Sales Shipping Warehouse PK PK PK PK Client ViewModel… /products/1 @mauroservienti | #apiconf2018

  18. Full vertical ownership Marketing Sales Shipping Warehouse @mauroservienti | #apiconf2018

  19. Full vertical ownership 10 minutes No cache cache Marketing Sales Shipping Warehouse Doc DB DB DB + HTTP back-end back-end API Web 1 month API Proxy to API Proxy 3° party cache 24 hours front-end front-end front-end front-end component component component component cache client shell @mauroservienti | #apiconf2018

  20. View Model Appender @mauroservienti | #apiconf2018

  21. Request matching @mauroservienti | #apiconf2018

  22. Composition @mauroservienti | #apiconf2018

  23. Full vertical ownership Marketing Sales Shipping Warehouse Doc DB DB DB + HTTP back-end back-end API Web API Proxy to API Proxy 3° party front-end front-end front-end front-end component component component component composition gateway Marketing Sales Shipping Warehouse Appender Appender Appender Appender client shell @mauroservienti | #apiconf2018

  24. Composition Gateway @mauroservienti | #apiconf2018

  25. is all that glitters gold? @mauroservienti | #apiconf2018

  26. What about grids? @mauroservienti | #apiconf2018

  27. ProductNameA ProductNameB ProductNameC ProductNameD Supplier A Supplier B Supplier C Supplier D cover cover cover cover image image image image A B C D € 20.00 € 20.00 € 20.00 € 20.00 View /products/1 model @mauroservienti | #apiconf2018

  28. ProductNameA ProductNameB ProductNameC ProductNameD Supplier A Supplier B Supplier C Supplier D cover cover cover cover image image image image A B C D € 20.00 € 20.00 € 20.00 € 20.00 View /products/1 model Component from product-catalog load related products Component from product-catalog @mauroservienti | #apiconf2018

  29. ProductNameA ProductNameB ProductNameC ProductNameD Supplier A Supplier B Supplier C Supplier D cover cover cover cover image image image image A B C D € 20.00 € 20.00 € 20.00 € 20.00 View /products/1 model Component from Component from Component from product-catalog sales marketing publish `RelatedProductsFound` receive event load related client-side message broker products Component from Component from Component from product-catalog sales marketing @mauroservienti | #apiconf2018

  30. ProductNameA ProductNameB ProductNameC ProductNameD Supplier A Supplier B Supplier C Supplier D cover cover cover cover image image image image A B C D € 20.00 € 20.00 € 20.00 € 20.00 View /products/1 model Component from Component from Component from product-catalog sales marketing load related products Component from Component from Component from product-catalog sales marketing @mauroservienti | #apiconf2018

  31. Composition @mauroservienti | #apiconf2018

  32. Composition @mauroservienti | #apiconf2018

  33. Composition @mauroservienti | #apiconf2018

  34. 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

  35. //bit.ly/view-model-composition-demos @mauroservienti | #apiconf2018

  36. @mauroservienti | #apiconf2018

Recommend


More recommend