+ All Categories
Home > Documents > Self-Contained Systems Reloaded - trion development...2018/03/13  · (Vaadin / GWT) 40...

Self-Contained Systems Reloaded - trion development...2018/03/13  · (Vaadin / GWT) 40...

Date post: 21-May-2020
Category:
Upload: others
View: 8 times
Download: 0 times
Share this document with a friend
62
Self-Contained Systems Reloaded JavaLand 2018 Self-Contained Systems Reloaded Stefan Reuter, Thomas Kruse trion development GmbH · www.trion.de 1
Transcript
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Self-Contained Systems Reloaded JavaLand 2018

danke.Stefan Reuter (@stefanreuter)

Thomas Kruse (@everflux)

62


Recommended