resilient software design patterns...java message service nur java komplexe objekte queues und...

100
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: Resilient Software Design Patterns 18.2

Upload: others

Post on 30-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]:

Resilient Software Design Patterns

18.2

Page 2: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH

Ihr Sprecher

2

Thorsten Maier

Trainer, Berater, Entwickler

SchwerpunkteArchitektur

ProzesseQualitätssicherung

Page 3: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 3

Resilient Software?

Page 4: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 4

Resilient Software?

Widerstandsfähig gegen Fehler

Page 5: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 5

Warum?

Page 6: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 6

Warum?

… weil jeder Ausfall viel Geld kostet

und viele User verärgert

Page 7: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 7

Warum?

… weil jeder Ausfall viel Geld kostet

und viele User verärgert

Page 8: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 8

Was ist daran neu?

Page 9: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 9

Was ist daran neu?

…mehr User…mehr Daten

…schnellere Anpassungen

Page 10: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 10

𝑉𝑒𝑟𝑓ü𝑔𝑏𝑎𝑟𝑘𝑒𝑖𝑡 =M𝑇𝑇𝐹

M𝑇𝑇𝐹 + M𝑇𝑇R

MTTF = Mean Time To FailureMTTR = Mean Time To Recovery

Page 11: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 11

Verfügbarkeit Betriebszeit (h)Maximale erlaubte

Ausfallzeit (h)Maximale erlaubte

Ausfallzeit (min)

99 % 8672,4 87,6 525699,5 % 8716,2 43,8 262899,9 % 8751,24 8,76 525,6

99,99 % 8759,124 0,876 52,56100 % 8760 0 0

99% =8672,4h

8672,4h + 87,6h

Page 12: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 12

Traditioneller Stabilisierungsansatz

𝑉𝑒𝑟𝑓ü𝑔𝑏𝑎𝑟𝑘𝑒𝑖𝑡 =M𝑇𝑇𝐹

M𝑇𝑇𝐹 + M𝑇𝑇R

Page 13: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 13

Der „resilient“ Ansatz

𝑉𝑒𝑟𝑓ü𝑔𝑏𝑎𝑟𝑘𝑒𝑖𝑡 =M𝑇𝑇𝐹

M𝑇𝑇𝐹 + M𝑇𝑇R

0

Page 14: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 14

2 Millionen Google-Server

Unrealistische Annahme

MTTF = 30 Jahre

~ alle 8 Minuten fällt ein Server aus

Page 15: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 15

Typical first year for a new cluster (~2400 server)

~0.5 overheating (power down most machines in <5 mins)

~1 PDU failure (~500-1000 machines suddenly disappear)

~1 rack-move (~500-1000 machines powered down)

~1 network rewiring (rolling ~5% of machines down over 2-day span)

~20 rack failures (40-80 machines instantly disappear)

~8 network maintenances (4 might cause ~30-minute random connectivity losses)

~3 router failures (have to immediately pull traffic for an hour)

~1000 individual machine failures

...

http://www.odbms.org/download/dean-keynote-ladis2009.pdf

Page 16: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 16

Things will crash.

Deal with it!

Resilient Software Design

Page 17: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 17

Wie machen wir eine Software „resilient“?

Page 18: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 18

Wie machen wir eine Software „resilient“?

Redundanz

Page 19: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 19

Wie machen wir eine Software „resilient“?

Redundanz

Isolation

Page 20: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 20

Wie machen wir eine Software „resilient“?

Redundanz

Isolation

Lose Kopplung

Page 21: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 21

Wie machen wir eine Software „resilient“?

Redundanz

Isolation

Lose Kopplung

Fallback

Page 22: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 22

Wie machen wir eine Software „resilient“?

Redundanz

Isolation

Lose Kopplung

Fallback

Page 23: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 23

ISOLATION

Page 24: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 24

Page 25: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 25

Page 26: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 26

BULKHEADS

Page 27: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 27

Bulkheads im Kleinen:

Methodenaufrufe

Page 28: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 28

Mögliche Probleme?

public int fakultaet(int n) {return (n == 0) ? 1 : n * fakultaet(n - 1);

}

Page 29: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 29

Schon besser…

public int fakultaet(int n) {if (n < 0) {

throw new IllegalArgumentException("n zu klein");}return (n == 0) ? 1 : n * fakultaet(n - 1);

}

Page 30: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 30

public int fakultaet(int n) {if (n < 0) {

throw new IllegalArgumentException("n zu klein");}if (n > 12) {

throw new IllegalArgumentException("n zu groß");}return (n == 0) ? 1 : n * fakultaet(n - 1);

}

Page 31: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 31

8

3

6

7

1 + 2

7

3

3

7

20 % 10 = 0

1 + 6

Zahl Verdoppeln SummierenLU

HN

Alg

ori

thm

us

Page 32: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 32

Validierung der AufrufparameterDatentypen korrekt?

Wertebereiche eingehalten?

Vorbedingungen erfüllt?

!= null

Kreditkartennummer valide

„Freundliche“ RückgabewerteNiemals „null“ zurückliefern

Datenmengen beschränken

Page 33: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 33

Bulkheads im Großen:

Software-Bausteine

Page 34: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 34

3 Bausteine

Page 35: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH

Anwendung mit 3 Bausteinen

35

Page 36: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 36

Deployment auf einem Server

Anwendung mit 3 Bausteinen

Page 37: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 37

Anwendung mit 3 Bausteinen

Baustein wird 4 mal benötigt

Page 38: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 38

Anwendung mit 3 Bausteinen

Nachteile

wird nur 2 mal benötigt

Änderung an erfordert Reploy von

Baustein wird 4 mal benötigt

Page 39: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 39

Unabhängige ArtefakteAnwendung mit 3 Bausteinen

Baustein wird 4 mal benötigt

Page 40: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 40

Unabhängige Artefakte

Flexible Skalierung auf 3 Server

Anwendung mit 3 Bausteinen

Baustein wird 4 mal benötigt

Page 41: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 41

Unabhängige ArtefakteVorteile

Isolierte Entwicklung

Isolierte Fehler

Isoliertes Deployment

Flexible Skalierung auf 3 Server

Page 42: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 42

Unabhängige ArtefakteNachteil

Kommunikation über

Prozess- und Netzwerkgrenzen

Verteilte Datenverarbeitung

Flexible Skalierung auf 3 Server

Page 43: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 43

8 Irrtümer der verteilten Datenverarbeitung

Netzwerk ist ausfallsicher

Latenzzeit = 0

Datendurchsatz ∞

Netzwerk ist sicher

Netzwerktopologie ist stabil

1 Netzwerkadministrator

Kosten des Datentransports = 0

Netzwerk ist homogen

Bill Joy, Tom Lyon, L Peter Deutsch und James Gosling

Page 44: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 44

In Kürze:

Zuverlässigkeit und Konsistenzexistieren nicht mehr

Page 45: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 45

Verhalten und Standorte der Komponenten unseres Systems

verändern sich ständig

Page 46: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 46

Komponenten liefern unzuverlässige Daten oder

verschwinden völlig

Page 47: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 47

Ok, wir brauchen ISOLATION

Aber wie kommen die Teile wieder zusammen?

Page 48: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 48

LOSE KOPPLUNG

Page 49: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 49

LOSE KOPPLUNG

asynchron synchron

Page 50: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 50

Asynchrone KommunikationEntkoppelt Sender und Empfänger

Verhindert Fehlerketten

Sender muss nicht warten

Page 51: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH

Barista

51

Kunde BecherwarteschlangeKassierer

Ausgabe

http://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html

„Starbucks Does Not Use Two-Phase Commit”

Page 52: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 52

Weiche zeitliche Anforderungen

Strict Consistency

Eventual Consistency (engl. „letztendlich“ nicht „eventuell“)

türschloss = geschlossen

letzte_reise = 523km

Page 53: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 53

EmpfängerSender

tuerschloss=offentoggleTuerschloss()

Nicht idempotent

Exactly Once-Kommunikation

notwendig

Page 54: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 54

EmpfängerSender

Idempotent!

At Least Once-Kommunikation

möglich

schliesseTuerschloss() tuerschloss=offen

Page 55: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH

Listener

55

TopicNachricht wird an alle Listener zugestellt

Falls kein „Interessent“ aktiv ist, wird die Nachricht u.U. nicht verarbeitet

Sender Topic

Listener

Listener 26°C

26°C26°C

26°C

Page 56: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH

Listener

56

QueueNachricht wird an einen Listener zugestellt

Es kann sichergestellt werden, dass eine Nachricht genau einmal verarbeitet wird

Sender Queue

Listener

Listener

26°C26°C

Page 57: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 57

??

Page 58: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 58

Java Message Servicenur Java

Komplexe ObjekteQueues und Topics

Verteilte Transaktionen

Page 59: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH

Barista

59

Kassierer coffeeOrderQueue

JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class);jmsTemplate.convertAndSend("coffeeOrderQueue", new CoffeeOrder("Thorsten", "Cappuccino"));

@Componentpublic class Barista {

@JmsListener(destination = "coffeeOrderQueue")public void receiveMessage(CoffeeOrder coffeeOrder) {System.out.println("Received <" + coffeeOrder + ">");

}}

Page 60: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 60

Advanced Message Queuing ProtocolViele Sprachen

Komplexe ObjekteQueues und Topics

Verteilte Transaktionen

Page 61: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 61

Message Queuing Telemetry TransportViele Sprachen

Nur Byte StreamsNur Topics

Für „dünne Leitungen“ und Geräte mit „Batterie“

QoS 0: At most onceQoS 1: At least onceQoS 2: Exactly once

Page 62: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 62

Und welchen Broker?

Page 63: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 63

LOSE KOPPLUNG

asynchron synchron

Page 64: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 64

?

Mit wem kann / soll ich kommunizieren?

nicht erreichbar

Startetgerade

Page 65: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 65

?

nicht erreichbar

Startetgerade

Als Architekt lassen sich alle Probleme mit

„Boxes and Lines“ lösen☺

Page 66: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 66

Verzeichnis-dienst

1. registrieren

2. Dienst finden

3. Dienst nutzen

z.B.:Netflix EurekaApache ZooKeeperCloud Foundry DiscoveryHashicorp Consul…

Page 67: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 67

Verzeichnis-dienst

1. registrieren

2. Dienst finden

3. Dienst nutzen

Als Entwickler brauchen wir etwas mehr

Page 68: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 68

Eureka

1. registrieren

2. Dienst finden

3. Dienst nutzen

@SpringBootApplication@EnableEurekaServerpublic class Application {

public static void main(String[] args) {// ...

}}

Page 69: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 69

Eureka

1. registrieren

2. Dienst finden

3. Dienst nutzen

@SpringBootApplication@EnableEurekaServerpublic class Application {

public static void main(String[] args) {// ...

}}

Page 70: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 70

Eureka

Page 71: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 71

Eureka?

Weitere

Instanz

Page 72: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 72

AlgorithmenSimple Round Robin

Zone Aware Round RobinRandom

Weighted Response Time

Resiliente Lösung:

Clientseitiges

Load-Balancing

Page 73: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 73

@RibbonClient(name = "blauerService")@RestControllerpublic class Application {

@LoadBalanced@BeanRestTemplate restTemplate() {

return new RestTemplate();}

@RequestMapping("/")public String serviceCall() {

return restTemplate().getForObject("http://blauerService/", String.class);}

}

Resiliente Lösung:

Clientseitiges

Load-Balancing

Page 74: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 74

Security?

Page 75: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 75

Security!

Page 76: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 76

„Soll ich mich etwa 2x einloggen?“

Page 77: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 77

„Meine Session wird geteilt ☺“

ExternalSession Store

Page 78: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 78

Netter Nebeneffekt:

Anwendung wird zustandslos!

ExternalSession Store

Page 79: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 79

Redis

@EnableRedisHttpSessionpublic class SpringSessionConfig {

@Beanpublic JedisConnectionFactory connectionFactory() {

return new JedisConnectionFactory();}

}

Page 80: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 80

Redis

Problem:

Doppelte Implementierung

Page 81: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 81

API Gateway

Security

…/blauerKreis/orders…/gruenerStern/customers

Page 82: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 82

Zuul

@EnableZuulProxy@EnableDiscoveryClient@SpringBootApplicationpublic class ZuulProxy {public static void main(String[] args) {SpringApplication.run(ZuulProxy.class, args);

}}

ExternalSession Store Security

Page 83: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 83

FALLBACK

Page 84: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 84

Verzeichnis-dienst

1. registrieren

2. Dienst finden

3. Dienst nutzen

zur Erinnerung

Page 85: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 85

Instanz fällt kurzNACH der Auswahl aus

Page 86: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 86

Circuit Breaker

Page 87: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 87

Circuit Breaker

Page 88: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 88

Circuit Breaker

errorCount = 3

Page 89: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 89

Hystrix

@HystrixCommand(fallbackMethod = "fallback")public String readString() {return remoteServiceCall();

}

public String fallback() {return "Fallback result";

}

Page 90: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 90

Eureka

registrieren

Alternativefinden

Hystrix

Page 91: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 91

API Gateway

Security

…/blauerKreis/orders…/gruenerStern/customers

Page 92: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 92

ZENTRALE DIENSTE

Page 93: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 93

db.url=green.dbserver.de

db.url=blue.dbserver.de

db.url=yellow.dbserver.de

db.url=green.dbserver.de

Wo liegt unsere Konfiguration?

Page 94: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 94

CentralConfiguration

Page 95: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 95

Spring CloudConfig

@SpringBootApplication@EnableConfigServerpublic class ConfigServerApplication {

public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);

}}

Page 96: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 96

Spring CloudConfig

@SpringBootApplication@EnableConfigServerpublic class ConfigServerApplication {

public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);

}}

@Value("${db.url}")private String url;

Page 97: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 97

Resilient Software Design

Patterns?!

Page 98: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Resilient Software Design Patterns© Orientation in Objects GmbH 98

Circuit Breaker

Bulkheads

Discovery Service

Location Transparency

Stateless

Microservice

External Session Store

Parameter Checking

Eventual Consistency

Async Communication

Exactly Once- und At Least Once-Kommunikation

Idempotenz

API Gateway

Central Configuration

Page 99: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]

? ?

??

?Fragen ?

Page 100: Resilient Software Design Patterns...Java Message Service nur Java Komplexe Objekte Queues und Topics Verteilte Transaktionen ... lassen sich alle Probleme mit „oxes and Lines

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]

Vielen Dank für Ihre

Aufmerksamkeit!