Challenges in the Field of Dynamic UI Composition for Microservices (Christian Fröhlingsdorf) - Archi-Lab/fae-team-2 GitHub Wiki
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