Skip to content

Challenges in the Field of Dynamic UI Composition for Microservices (Christian Fröhlingsdorf)

MaxSimon95 edited this page Feb 17, 2019 · 2 revisions

The Journey

Es bieten sich verschiedene Optionen, um den Übergang von einem schwer wartbaren Monolithen hin zu Microservices im Hinblick auf die UI zu realisieren:

  • Single Page Application als Frontend-Monolith, dass die Microservice-UIs anspricht um Daten abzurufen
    • Würde sich zu einem neuen Bottleneck entwickeln, daher negativ
  • SCS - Self Contained Systems
    • Sehen gut getrennt aus, sind es aber nicht: "Warenkorb" z.B. wird überall verwendet, soll aber nicht jedes mal neu von jedem SCS-Team gebaut werden.
    • Kein gutes Fundament für User Experience
  • Die gewählte Lösung: DUC - Dynamic UI Composition
    • Ein Service beschreibt Grundrezept der Seite
    • Die anderen Services stellen UI fragments zur Verfügung

Challenges

  • Simplicity & Maintainability
    • Am besten an etablierte HTML und HTTP Standards halten
  • Templates & Includes
    • Includes werden asynchron aufgelöst → performant
    • Includes haben nur absolute URLS → performant
  • Asset Handling
    • Der inkludierte Service kontrolliert sein eigenes JS und CSS
    • scoping / naming Conventions für CSS-Assets, JS nicht auf global namespace zugreifen lassen
  • Migrating the monolith
    • Schrittweise überführen
    • Fallbacklogik für gescheiterte verlinkungen
      • große Content-Includes: Fallback zur alten Seite anstatt 404-Fehler
      • kleine Content-Includes: Fallback-Element das angezeigt wird
    • Session-Management durch Cookies
  • Performance
    • Time to first byte reduzieren
    • Herausforderung: Viele Fragmente resultieren in vielen Includes, was auf Performanz schlägt

Vorteile nach der Umsetzung

  • Skalierbare Frontendentwicklung
  • 100% Entkoppelte Microservices auf Frontend-Ebene
  • Zentrale Stelle für Entwicklung und zum Anbringen von Middleware (tracking, security, metrics, logging, session)
  • Ebene über die Performanz auf der ganzen Microservice-Landscape verbessert werden kann
  • Lernerfolge
    • Viele kleine Fragmente werfen Herausforderungen auf
    • Die Autonomie der Fragment-Providing-Teams steigt
    • E2E Verantwortung ist für Fragment-Including Teams schwerer wahrzunehmen
    • Atomares Testing der einzelnen Fragmente ist einfach
    • Komplexität der Landscape steigt
    • A-B-Tests lassen sich gut umsetzen um UX bei Änderungen zu messen
Clone this wiki locally