Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Micro_Frontend.pdf

 Micro_Frontend.pdf

Randy Vianda Putra

February 11, 2019
Tweet

More Decks by Randy Vianda Putra

Other Decks in Programming

Transcript

  1. Micro Frontends Techniques, strategies and recipes for building a modern

    web app with multiple teams using different JavaScript frameworks. 5
  2. What are Micro Frontends ? The term Micro Frontends first

    came up in ThoughtWorks Technology Radar at the end of 2016. The idea behind Micro Frontends is to think about a website or web app as a composition of features which are owned by independent teams. Each team has a distinct area of business or mission it cares about and specialises in. A team is cross functional and develops its features end-to-end, from database to user interface.
  3. Core ideas behind micro frontends - Be technology agnostic -

    Isolate team code - Establish team prefixes - Favor Native Browser Features over Custom APIs - Build a Resilient Site
  4. Advantages of a monolith - Easy and quick setup -

    Single CI/CD operation - Single codebase
  5. Problem with monolith - Long development cycles - Long build

    time - Risk refactoring and cleanup (this works - don’t touch)
  6. Micro frontends aka micro apps - Breaking a web application

    to it’s page and / or feature - Each feature owned by a single team - Allow each feature to be developed, tested and deployed independently
  7. Iframes summary - Easy A/B testing for features - Native

    support on most browsers - Enables high scale delivery (similar to micro services)
  8. Component based architecture summary - Each micro app is a

    component - Orchestrator app - Shared component are extracted and reusable
  9. Web Components Create custom reusable HTML tags - Custom Elements

    - Shadow DOM - HTML Imports - HTML Templates
  10. this is the reference to the root DOM node of

    the custom element. All properties and methods of a standard DOM element like innerHTML or getAttribute() can be used.