Microfrontends

 Microfrontends

snowcamp.io (Grenoble, France)

event: http://snowcamp.io/

E6c61f085d7aceaf97b7bd00e9195514?s=128

SQUER Solutions

January 24, 2019
Tweet

Transcript

  1. 1.

    @duffleit micro frontends a strive for fully verticalized systems _

    @duffleit Grenoble, snowcamp.io photo by Komail Naqvi
  2. 2.

    @duffleit David Leitner ▪ Technical Expert at Senacor Technologies ▪

    Lecturer for post diploma courses at UAS Technikum Vienna ▪ I do a couple of things around the tech- community I‘m writing code
  3. 3.

    @duffleit A definition of micro frontends The idea of micro

    frontends is to extend the concepts of micro services to the frontend world.
  4. 4.

    @duffleit Sam Newman: ▪ small and focused on one thing

    ▪ … to be autonomous ▪ That‘s it WHY we do them? Microservices * UBERHDTV - https://imgur.com/gallery/nup4lfX CVDD HDD/EDD *
  5. 5.

    @duffleit why autonomous? ✅Independent deployments ✅Small interface surface ✅Technology agnostic

    ✅Based on standards ✅Autonomous operations ✅Parallel Development
  6. 12.

    @duffleit DB DB DB DB DB DB DB DB DB

    Independent deployments Autonomous operations Technology agnostic Based on standards Parallel Development Small interface surface
  7. 13.
  8. 15.
  9. 17.

    @duffleit The frontend is … not an implementation detail, it

    is a critical part of a microservice architecture.
  10. 18.

    @duffleit frontend platform backend platform Independent deployments Autonomous operations Technology

    agnostic Based on standards Parallel Development Small interface surface a frontend monolith was born a micro frontend TO THE RESCUE Independent deployments Autonomous operations Technology agnostic Based on standards Parallel Development Small interface surface
  11. 21.
  12. 23.

    @duffleit Flavour #1: Backend for Frontend frontend platform backend platform

    Products Ordering Payment Shipping Dash board BFF BFF BFF BFF BFF samnewman.io/patterns/architectural/bff/
  13. 25.

    @duffleit What customers expect: 1 Company == 1 Website I

    don‘t want to maintain this UI/UX anymore. 1 Company === 1 Website
  14. 26.

    @duffleit Flavour #1: Reusage Problem frontend platform backend platform Catalogue

    Ordering Payment Shipping hyperlink hyperlink hyperlink Navigation Navigation Navigation
  15. 27.

    @duffleit Flavour #1: Hyperlink Integration Independent deployments Autonomous operations Technology

    agnostic Parallel Development A consistent UI/UX Smooth user interaction Fast loading
  16. 31.

    @duffleit MonoRepo Simplifies dependency management. Allows extensive code sharing and

    reuse. package.json Shared resources (assets, components…) repository
  17. 32.

    @duffleit Flavour #2: Build Time Integration Independent deployments Autonomous operations

    Technology agnostic Parallel Development A consistent UI/UX Smooth user interaction Fast loading* BUNDLED FRONTED UI-Shared-Stuff (e.g. SPA-Framework, Components)
  18. 35.

    @duffleit Flavour #3: Server Side Includes or Edge Side Includes

    <html> <body> <!--#include virtual="/products" --> <!--#include virtual="/payments" --> <!--#include virtual="/dashboard" --> <!--#include virtual="/shipping" --> </body> </html>
  19. 36.

    @duffleit Flavour #3: Transclusion Independent deployments Autonomous operations Technology agnostic

    Parallel Development A consistent UI/UX Smooth user interaction Fast loading BUNDLED FRONTED UI-Shared-Stuff (e.g. SPA-Framework, Components)
  20. 38.
  21. 39.

    @duffleit Flavour #4: App Shell Integration Independent deployments Autonomous operations

    Technology agnostic Parallel Development A consistent UI/UX Smooth user interaction Fast loading APP SHELL Header Footer
  22. 41.
  23. 42.

    @duffleit /catalogue /checkout APP SHELL Header Footer A matter of

    modularisation Hyperlink Integration App Shell Integration Metaframework
  24. 43.
  25. 44.

    @duffleit • they are implemented with iframes. • or start

    using web components now. Flavour #5: Technology agnostic
  26. 45.

    @duffleit Flavour #5: Metaframework Metaframework /catalogue /checkout Independent deployments Autonomous

    operations Technology agnostic Parallel Development A consistent UI/UX Smooth user interaction Fast loading
  27. 46.

    @duffleit „a consistent UI“ 1) CDN – for static files

    2) CMS – for static content 3) A Component Library
  28. 47.

    @duffleit „a component library“ SPA-C SPA-B SPA-A component library Time

    Effort 2019 2020 2021 component library component library a promise that you will save time in the future by reusage. you introduce a dependency between your projects. copy & own
  29. 48.

    @duffleit „a component library“ If you really need a component

    library, then build it technology agnostic instead for one framework (version).
  30. 50.

    @duffleit Flavour #5: Metaframework Metaframework /catalogue /checkout Independent deployments Autonomous

    operations Technology agnostic Parallel Development A consistent UI/UX Smooth user interaction Fast loading
  31. 53.

    @duffleit A general decision advice Your application is big?* The

    need for smooth user interaction Build Time Integration Hyperlink Integration Strongly Independent UI/Domain Parts Complex modularisation needed Transclusion App Shell Integration Meta- Framework * an application is big enough to justify using micro frontends, if slight UI/UX differences between the two most unrelated subpages are acceptable. Yes No
  32. 54.

    @duffleit Compose your perfect MIX Landing Shop Ordering hyperlink hyperlink

    APP SHELL Header Footer <!–- SSIs --> <!--#include … --> <!--#include … -->
  33. 55.

    @duffleit Key-Takeaways „Think twice if a frontend monolith does not

    fit your needs and start with a monolith first approach.“
  34. 56.

    @duffleit Key-Takeaways „Consider the frontend as part of your microservice

    architecture – and solve UI specific problems with UI specific solutions.“
  35. 57.

    @duffleit Key-Takeaways „Minimize the shared dependencies and design for replacement

    not for reuse.” >> A little copying is better than a little dependency. Rob Pike