Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40...
Transcript of Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40...
![Page 1: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/1.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Self-Contained SystemsReloaded
Stefan Reuter, Thomas Kruse
trion development GmbH · www.trion.de
1
![Page 2: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/2.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Stefan Reuter
IT-Architekt
@stefanreuter
Thomas Kruse
IT-Architekt
@everflux
JUG Münster, Frontend-FreundeMünster
Intro
2
![Page 3: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/3.jpg)
Self-Contained Systems Reloaded JavaLand 2018
AgendaSCS: Herleitung und Motivation
Frontend-Integration?
Moderne (Frontend-)Technologie für SCS
3
![Page 4: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/4.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Monolithische Systeme
Mainframe
4
![Page 5: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/5.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Monolithische Systeme
5
![Page 6: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/6.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Monolithische Systeme
6
![Page 7: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/7.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Monolithische Systeme
7
![Page 8: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/8.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Trennung Frontend/Backend
Frontend
Backend
8
![Page 9: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/9.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Organisation
9
![Page 10: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/10.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Modularisierung im Backend
10
![Page 11: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/11.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Microservices entstehen
11
![Page 12: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/12.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Backend vollständig zerlegt
12
![Page 13: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/13.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Frontend Modularisierung
13
![Page 14: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/14.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Optionen zur ModularisierungEin modularisiertes Frontend (Tempel-Architektur)
Ein Frontend je Domäne
Microservices enthalten Frontend
14
![Page 15: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/15.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Ein modularisiertes Frontend
15
![Page 16: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/16.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Ein Frontend je Domäne
16
![Page 17: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/17.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Microservices enthaltenFrontend
17
![Page 18: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/18.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Self-Contained Systems1. Jedes SCS ist eine unabhängige Webanwendung.
2. Jedes SCS wird durch ein Team verantwortet.
3. Kommunikation mit anderen Systemen soll - wenn möglich -asynchron erfolgen.
4. Ein SCS kann optional eine Service-API anbieten.
5. Jedes SCS muss Daten und Logik enthalten.
6. Ein SCS soll seine Funktionalität mit eigener UI nutzbar machen.
7. Um enge Kopplung zu vermeiden, darf ein SCS keinenGeschäftscode mit anderen SCS teilen.
8. Um SCS durch verringerte Kopplung robuster zu machen, sollgemeinsame Infrastruktur minimiert werden.
18
![Page 19: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/19.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Einordnung VariantenEin modularisiertes Frontend (Tempel-Architektur)
Kein SCS, weil keine unabhängigen Webanwendungen
Ein Frontend je Domäne
SCS konform, Schnitt der SCS entspricht Domänenschnitt
Microservices enthalten Frontend
SCS konform, Schnitt der SCS entspricht Domänenschnitt
19
![Page 20: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/20.jpg)
Self-Contained Systems Reloaded JavaLand 2018
SCS bringt Vorteile, wenn… … konsequente Modularisierung das Ziel ist.
… die Organisation nach Domänen möglich und gewünscht ist.
… die volle Autonomie und die damit verbundene Verantwortunggelebt wird.
… die Verwendung separater Frameworks bzw. Frameworkversionenals nützlich empfunden wird.
20
![Page 21: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/21.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Kommunikation bei SCS
21
![Page 22: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/22.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Kommunikation überSystemgrenzen
Kommunikation zwischen mehreren SCS und zwischen SCS undexternen Systemen erfolgt grundsätzlich asynchron.
Ziel: Jedes SCS soll autonom auskunftsfähig sein.
Hilfreich: Nutzung von Domain Events aus Domain-Driven Design.
Folgeverarbeitung ergibt sich als Konsequenz von Ereignissen.
Daten aus Domain Events können lokal persistiert werden.
22
![Page 23: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/23.jpg)
Self-Contained Systems Reloaded JavaLand 2018
TechnologienPolling
HTTP Feeds, Atom
Client kann wieder aufsetzen, Parallelisierung schwierig
Messaging Publish-Subscribe
JMS Topic, AMQP
Kafka, Apache Pulsar
23
![Page 24: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/24.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Kommunikation innerhalbeines Self-Contained SystemsAlles erlaubt
Services untereinander, Frontend zu Services
In der Praxis haben sich Vorgaben innerhalb der Organisationbewährt:
Technologie-Spektrum begrenzen
Lange Aufrufketten vermeiden
Konsistenz sicherstellen
Robustheit erhalten
24
![Page 25: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/25.jpg)
Self-Contained Systems Reloaded JavaLand 2018
SCS Landschaft
25
![Page 26: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/26.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Wünsche der AnwenderAnforderungen an Navigation
Einstiegspunkte
Übergreifende Navigation
Kontextspezifische Navigation
Anforderung: Einheitliche Oberfläche (UX und Optik)
26
![Page 27: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/27.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Integration der OberflächenOptionen zur Umsetzung der Navigation
Startseite mit Links
Jedes SCS liefert Navigation
Infrastruktur liefert Navigation
Tiefe Integration
Beispiel: Produktvorschläge
27
![Page 28: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/28.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Startseite mit Links
Shop TabletsHandys Checkout
ShopLagerBuchhaltung
Startseite
Lager
Bestand
Lieferung
Abrechnung
Konto
Mahnungen
28
![Page 29: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/29.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Jedes SCS liefert NavigationStatisch
Build Zeit
Dynamisch
HTML, zentrales Templating
Daten, lokales Templating
29
![Page 30: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/30.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Infrastruktur liefert NavigationFrames (deprecated)
Server Side Includes (SSI), Edge Side Includes (ESI)
Clientseitiger Abruf zentraler Assets
30
![Page 31: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/31.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Tiefe IntegrationAufruf von allgemeiner Funktionalität
Newsletter abbonieren
Recherche / Information
Rechnungen eines Kunden
Sprung zu spezifischem Usecase
Bestellung xy stornieren
31
![Page 32: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/32.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Optionen Tiefe IntegrationLink auf Unterbereich von SCS (deep linking)
Link mit (Rück-)Sprungziel
Link mit Parameterübergabe
Link mit Parameterübergabe und (Rück-)Sprungziel
UI Fragmente (Integration on the Glass)
32
![Page 33: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/33.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Link auf Unterbereich von SCS
Newsletter
Shop
Anmeldungzum
Newsletter
Newsletter
33
![Page 34: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/34.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Link mit (Rück-)Sprungziel
Newsletter
Shop
Anmeldungzum
Newsletter
Newsletter
weiter:shop
34
![Page 35: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/35.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Link mit Parameterübergabe
Artikel 65
Shop
Abrechnung
Konto
Mahnungen
Buchhaltung
Artikel 65
Artikel 66artikel:65
35
![Page 36: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/36.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Link mit Parameterübergabeund (Rück-)Sprungziel
Bezahlen 30 €?
Payment
OK
Shop
Zur Kassebetrag:30.00,weiter:newsletter
Anmeldungzum
Newsletter
Newsletter
36
![Page 37: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/37.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Herausforderungen beiIntegration
Zustand bei Anwendungswechsel
Security
Single-Sign-On
Rollen, Berechtigungen
Grundlage ist guter Schnitt
Fragment-Mashup ist schwer handhabbar
Führt zu enger Kopplung
37
![Page 38: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/38.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Frontend-Technologie für SCSSCS sind Webanwendungen
Webentwicklung im Enterprise-Umfeld verlangt:
Investitionssicherheit (Weiterentwicklung, Verbreitung, Community)
Hohe Entwicklerproduktivität
Gute Dokumentation
Konsistenter Technologiestack nötig
Kann durch Framework bereitgestellt werden
Modern und kuratierter Stack
38
![Page 39: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/39.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Server-SideJavaServer Faces
Spring WebMVC
Play
Wicket
39
![Page 40: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/40.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Client-Side (SPA)Angular
React
Polymer
Vue
(Vaadin / GWT)
40
![Page 41: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/41.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Client-Side (SPA)SPA steht nicht im Widerspruch zu SCS
SCS Architektur ist agnostisch bzgl. Umsetzung
SCS führt zu regelmäßigem Wechsel des Systems durch Anwender
Schneller Anwendungsstart
Umgang mit lokalem Zustand
Frühe Frameworks und Designs waren nicht optimal im SCS Kontext
Langsamer Anwendungsstart
41
![Page 42: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/42.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Abwägung im Enterprise-Kontext
Schwierig durch reine Server-Side-Stacks Desktop-Usability zuerzielen
Angular + TypeScript
Modulsystem, DI
Typsicher (Refactoring/Wartung)
Für Java-Entwickler vertraute Muster
Alternativen: React, Polymer, Vue
Liefern keinen vollständigen Stack, muss zusammengestellt werden
42
![Page 43: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/43.jpg)
Self-Contained Systems Reloaded JavaLand 2018
DemoUmsetzung mit Angular Frontend
Zwei SCS: und
Wechsel zwischen den Anwendungen über Link
Gemeinsame Navigation zur Build Time
Reload, Bookmarkfähigkeit
Umgang mit Zustand
Shop Lager
43
![Page 44: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/44.jpg)
Self-Contained Systems Reloaded JavaLand 2018
SCS mit AngularVorgehen repräsentativ für andere SPA Frameworks
HTML5 Routing verwenden (Server-Side Rewrite Rules)
Angular Modulsystem ermöglicht große, wartbare Anwendungen
Auch für komplexe SCS geeignet
Angular Features: Crawlbar (SEO), I18N, Wiederverwendung,Wartbarkeit (TypeScript)
Zustandsverwaltung mit @ngrx/store
44
![Page 45: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/45.jpg)
Self-Contained Systems Reloaded JavaLand 2018 45
![Page 46: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/46.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Lager-Beispiel: Microservicemit Frontend-Anteil
Technologien
Backend: Spring Boot
Frontend: Angular
Build
Maven
NPM und Angular-CLI
Deployment
Docker
46
![Page 47: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/47.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Build Pipeline
47
![Page 48: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/48.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Build mit CI ServerBeispiel: GitLab CI
Stages: build und build-image (Docker)
stages: - build - build-image variables: DIST_DIR: spring-boot-angular/frontend/dist/ JAR_FILE: spring-boot-angular/backend/target/backend.jar DOCKERFILE: spring-boot-angular/Dockerfile.prod IMAGE: trion/scs-demo
48
![Page 49: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/49.jpg)
Self-Contained Systems Reloaded JavaLand 2018
CI Server: BackendSpring Boot Build mit Build-Container maven
build-backend: stage: build image: maven:3-jdk-8 script: - cd spring-boot-angular/backend - mvn verify -B artifacts: expire_in: 1 day paths: - $JAR_FILE tags: - x86_64
49
![Page 50: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/50.jpg)
Self-Contained Systems Reloaded JavaLand 2018
CI Server: FrontendFrontend Build mit Build-Container trion/ng-cli
build-frontend: stage: build image: trion/ng-cli script: - cd spring-boot-angular/frontend - npm install - ng build --prod artifacts: expire_in: 1 day paths: - $DIST_DIR tags: - x86_64
50
![Page 51: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/51.jpg)
Self-Contained Systems Reloaded JavaLand 2018
CI Server: Docker ImageAuslieferung des SCS Artefakts als Docker-Image
build-image: stage: build-image image: docker script: - docker build --build-arg JAR_FILE=$JAR_FILE --build-arg DIST_DIR=$DIST_DIR -t $IM - docker push $IMAGE tags: - x86_64
51
![Page 52: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/52.jpg)
Self-Contained Systems Reloaded JavaLand 2018
DeploymentMicroserver enthält das Frontend
Konsistenz durch gemeinsamen Build, Test und Deployment allerBestandteile
Optionen
Paketierung im JAR
In separatem Verzeichnis als statische Ressourcen
Kombinierbar mit Docker in beiden Varianten
52
![Page 53: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/53.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Reload und BookmarksAnforderungen
Reload (F5)
Bookmarks (z.B. auf eine Artikeldetailseite)
Browser Navigation (Back/Forward)
Umsetzung
Spring ResourceResolver liefert die Angular-Anwendung für alleUnterpfade aus
Angular übernimmt Route initial aus URL
Angular setzt URL auf Basis aktiver Route per HTML5 History API
53
![Page 54: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/54.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Tipp: NamespaceZugriff auf Backend durch /api
Erleichtert HTTP Handling
Speziell bei Server-Side-Rendering (Crawling/ohne JS)
54
![Page 55: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/55.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Tipp: DockerSCS Gedanke und Docker bringt Vorteile
Für Build
Umgebung benötigt keine speziellen Werkzeuge
Für Tests
Isolierter Test, kleinerer Test-Scope
Mit Docker eigener Datenbestand simpel
Reproduzierbare, stabile Tests
55
![Page 56: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/56.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Häufige Fragen zur Umsetzung
56
![Page 57: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/57.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Was ist mit … Globalem Look-and-Feel
UI: CSS Asset sharing, Redundante Implementierung von CIGuidelines
UX: Abstimmung
Gefahr, dass Autonomie verloren geht
57
![Page 58: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/58.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Was ist mit … Microfrontends
Custom Framework
Technologische Kopplung
Vergleichbar mit Portal-Server
Deutet auf nicht gelungenen Domänen-Schnitt
Evtl. passt hier SCS Architektur nicht
58
![Page 59: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/59.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Was ist mit … Transklusion (SSI, ESI, Ajax-Fragments)
Nur bei autonomen Anteilen
Sekundäre Inhalte, Read-Only
Gefahr von Laufzeit-Monolith
Gefahr von hoher Komplexität
Umfangreicher Einsatz deutet auf nicht gelungenen Domänen-Schnitt
Security Anforderungen schwierig umzusetzen
59
![Page 60: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/60.jpg)
Self-Contained Systems Reloaded JavaLand 2018
Was ist mit … Nativen Anwendungen (Desktop, iOS, Android)
HTML-Hybrid kann mit SCS harmonisieren
SCS nicht dogmatisch sehen
60
![Page 61: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/61.jpg)
Self-Contained Systems Reloaded JavaLand 2018
FazitSCS funktioniert mit modernen Frameworks und Konzepten
Gute Erfahrungen mit Angular, Spring Boot und Kafka
Herausforderungen
Guter Schnitt essentiell
(Re-)Integration für Anwender
Organisatorische Autonomie
Bei hochintegrierten Frontendanwendungen passt SCS-Ansatz evtl.nicht optimal
Monolithisches Frontend stellt höhere Anforderungen an Entwicklerund Framework, mit Angular handhabbar
61
![Page 62: Self-Contained Systems Reloaded - trion development...2018/03/13 · (Vaadin / GWT) 40 Self-Contained Systems Reloaded JavaLand 2018 Client-Side (SPA) SPA steht nicht im Widerspruch](https://reader034.fdocuments.in/reader034/viewer/2022042220/5ec65afa7cd143019b6fd4a5/html5/thumbnails/62.jpg)
Self-Contained Systems Reloaded JavaLand 2018
danke.Stefan Reuter (@stefanreuter)
Thomas Kruse (@everflux)
62