Luca Mezzalira, VP of Architecture at DAZN, has recently written a book about micro-frontend architecture, being published by O'Reilly early next year. We'd like to set up an arch tea with him to discuss edX's approach to MFEs and to learn from his own experiences.  Prior to that, we'd love to gather any questions the team might have, or things we'd like to discuss.  For a prior session of this type, see: Arch Lunch with Julie, Hubspot Design System lead - 2019-01-09

While our platform architecture is a year-and-a-half into applying MFEs to our monolith strategy, we still have a way to go as we mature our frontend platform. Don’t miss out on this opportunity to come and hear how we may apply Luca’s learnings and experiences on developing and scaling MFEs.

Pre-work

Micro-frontends are the technical representation of a business subdomain, allowing independent implementations with same or different technology choices. An MFE avoids sharing logic with other subdomains and is owned by a single team.

Goal

Our goal is to have a Q&A discussion with a Micro-frontend expert who can provide an external perspective to edX’s MFE development and future MFE growth and scaling needs.

Reminders

Questions for Luca

MFEs at DAZN

These are notes based on Luca's 30mn video.

MFEs at edX

  • MFE Runways built:
    • https://edx.github.io/frontend-platform/ 
      • Analytics (Segment)
      • Authentication && HTTP client (JWT and axios)
      • i18n (react-intl)
      • logging (New Relic)
      • Initialization and configuration
    • https://github.com/edx/frontend-build 
      • webpack configuration
      • eslint
      • babel
      • jest configuration
    • Design system / component library (Paragon)
      • https://github.com/edx/paragon
        • Reusable React components ("atoms and molecules") 
        • a11y as a priority
        • Bootstrap-based CSS classes/utility classes
        • Soon: react-bootstrap component passthroughs to help flesh out the library
        • Tree-shakeable
    • Reusable "organisms":
      • frontend-component-header
        • With edX-branded npm alias overrides, i.e., "frontend-component-header-edx"
      • frontend-component-footer
        • With edX-branded npm alias overrides, as above
      • frontend-component-cookie-policy-banner


  • MFE Standards/Principles:
    • Naming convention for apps (frontend-app-X)
    • Naming convention for components/organisms: (frontend-component-X)
    • Each micro-frontend "app" corresponds to a particular bounded context.  
      • "learning" contains both in-course experience and course overview pages
      • "account" has account settings and (may include) login and registration
      • "course-authoring" will contain all tools for working with course content as course staff
    • Each MFE is its own standalone application (i.e., not in a container/shell, like with single-spa)
      • MFEs may share modules via npm, but are independently deployed and share no assets at runtime
      • MFEs reside in their own repositories and are deployed independently of any associated backend APIs

MFEs and their LOCs

21.3 frontend-app-learner-portal-programs (new!)
21.5 frontend-app-course-authoring (new!)
22.7 https://github.com/edx/frontend-app-ecommerce
28.0 https://github.com/edx/frontend-app-support-tools
28.1 https://github.com/edx/frontend-app-learning
28.1 https://github.com/edx/frontend-app-program-console
29.3 https://github.com/edx/frontend-app-profile
32.4 https://github.com/edx/frontend-app-learner-portal-enterprise
35.8 https://github.com/edx/frontend-app-account
37.7 https://github.com/edx/frontend-app-gradebook
50.5 https://github.com/edx/frontend-app-payment
58.7 https://github.com/edx/frontend-app-admin-portal
65.1 https://github.com/edx/frontend-app-publisher

Meeting Notes (not complete - please update when you can)