- Micro Apps Weitere Varianten - Multi Modul Apps - Multi Modul-Integration Varnish/SSI oder Server Side Rendering - Web Components - Erstellung einer Gesamtanwendung (Build) - “BlackBox“ Components Varianten
„Neu Laden“ (refresh) der Seite - Jede Teilanwendung kann in einer anderen Technologie geschrieben werden - Lazy loading für optimierte initiale Ladezeit - Austausch von Applikationsteilen einfach möglich - Demo Anwendung (React, Angular 1 / 2, Vue, Ember, ...) 6 Single SPA “Meta Framework“ - ggfs. Probleme bei Major Updates eines Frameworks - Framework Eigenheiten bzgl. Ladetechnik können inkompatibel sein - Kurze Wartezeiten beim Switch von Anwendungen (neues Framework / Anwendung) - Ggfs. redundante Implementierungen in unterschiedlichen Technologien - Rahmenanwendung notwendig - Kein “Zwang“ Abhängigkeiten zu aktualisieren - Wartung der Anwendung auf vielen Frameworks - Lessons learned schwer möglich
Anwendung und „Shared“ - Funktioniert gut bei gleich bleibendem Technologie Stack - Einfachere Entwicklung von gemeinsamer Funktionalität - Lessons learned - Anwendungsübergreifend - Upgrade von Frameworks 8 Multi SPA - Kurze Wartezeiten beim Switch von Anwendungen (caching) - Ggfs. redundante Implementierungen in unterschiedlichen Technologien - Upgrades in Shared Modulen erzwingen eventuell Upgrades aller Anwendungen - Anwendungen auf einer Vielzahl an Frameworks muss gewartet werden (können)
Orchestrierung über Iframes + window.postmessage API - Portal ähnlicher Charakter - Eignet sich gut für Webseiten ähnliche Anwendungsfälle 10 Micro Apps - Man sollte die Anzahl der Technologien beschränken - Kein Lazy Loading zur Optimierung der initialen Ladezeit - Komplexität/Größe der Teilanwendungen kann beschränkt sein
sich geschlossene Einheit - Jedes Modul kann in einer anderen Technologie implementiert werden - Module kommunizieren nur über einen Event Bus miteinander (Rahmen) - Sehr ähnlich zu Micro Apps, keine iFrames - Multi Module Integration Varnish/SSI oder Server Side Rendering - Zusammenbau der Anwendung erfolgt „remote“ - Alle benötigten Teile einer Anwendung (Scripts, Styles, Assets) werden im HTML zusammengeführt - Die UI Elemente werden an definierten Punkten im UI eingesetzt 11 Weitere Varianten
Components) - Keine UI Bibliotheken wie Angular, React, ... - Erstellung einer Gesamtanwendung (Build) - Starke Kopplung zwischen Rahmenanwendung und Teilanwendungen/-Komponenten - Neue Anwendung bei Update einer Teilkomponente - “BlackBox“ Components - Jede Komponente hat ihren kompletten State - Sehr starke Kopplung zwischen Anwendungen und Komponenten 12 Weitere Varianten
Status Quo / der Anfang Projektsicht (Frontend) - Kein/keine („Grüne Wiese“) - Build (für Backend vorhanden) - Vorgaben (nur Angular) - UX / UI Library bzw. Styleguide - Vorstellung was genau wir brauchen (fachl.) - „Weiche“ Vorgaben - „Wir machen MicroServices“ - Hohe Coverage/Qualtiät gewünscht - Continuous Delivery & Deployment - Deadline ~5 Monate - 2 Developers - Alles „from Scratch“ Entwickeln - UI & UX - Komponenten - Technologie Stack - Erkenntnisse - Perfekte Lösung aufgrund des Zeitplans nicht möglich - Wir werden mit Trade Offs leben - Wir versuchen uns keines der Zielszenarien zu verbauen
wir zeitlich nicht 1 Wir kennen kaum den Umfang / Inhalt der Teilanwendungen, welche Variante ist die Richtige ? Es gibt dringendere Probleme als eine “schöne” Zerlegung anhand der MicroServices Wir müssen uns selber in das ganze Umfeld eingewöhnen (Technik, Fachlichkeit, …) Aufgrund der Gegebenheiten entscheiden wir uns erstmal für einen Monolithen 2 3 4 15 Zielkonflikt 1 5
(Expertensystem) - Enger Kreis an Anwendern - Page Refresh ist OK - Mittels PWA/WebWorker erreichen wir eine mehr als ausreichende Ladegeschwindigkeit - Angular / Angular CLI - Update aller Abhängigkeiten spätestens alle 2-3 Sprints (1 Sprint -> 2 Wochen) - Updates i.d.R. <1-2h (auch Major Updates Angular 4.4 -> 5) - Externe Abhängigkeiten möglichst gering halten - Multi Projekt Updates später automatisieren - Architektur - MicroServices liefern auch „ihre UI“ aus - Keine Kopplung zwischen Anwendungen / Services - Leichte Erweiterbarkeit und hohe Wiederverwendbarkeit 17 Ausblick / Ziel
Die Shared Module in den MicroServices benutzen (sofern nötig) „Shared“ - „Spezialisierung“ von Shared - Ein MicroService kapselt die ihm zugehörigen UI Elemente - Komponenten, Services, Pipes, Models 23 Architektur – Schritt 2
Fresh - micro-frontends.org - Single SPA - Shared EventBus - Multi SPAs that live on different URLs - Iframes using libraries and Window.postMessage API - Chrisdavies/eev - Managing Frontends in a MicroService Architecture - Including Frontend Web Components into MicroServices - ”BlackBox” React Components - Micro Frontends Quellen