Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015
-
Upload
lutz-huehnken -
Category
Software
-
view
474 -
download
1
Transcript of Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015
![Page 1: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/1.jpg)
Lutz Hühnken - Solution Architect
Twitter - @lutzhuehnken Blog (neu) - http://www.huehnken.de
Von Enterprise zu Reactive
![Page 2: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/2.jpg)
JUGH - Von Enterprise zu Reactive
Reactive „for the rest of us“..
2
Big DataWeb Scale
HFT
TomcatWeb MVCRDBMS
![Page 3: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/3.jpg)
JUGH - Von Enterprise zu Reactive
Was ist Enterprise?
Im Sinne dieses Vortrags:
• Alles, was auf Java EE basiert
• Insbesondere Servlet API basierte Webapps, z.B. auf Tomcat
3
![Page 4: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/4.jpg)
Was ist Reactive?
![Page 5: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/5.jpg)
Behauptet doch jeder von sich…
![Page 6: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/6.jpg)
Alles Akka, oder was?
![Page 7: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/7.jpg)
Echte Fragen …
WAR? Servlet Container?
Library X (nutzt
ThreadLocal)?
RDBMS/ JDBC?
Wie mache ich 2PC?
![Page 8: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/8.jpg)
… drehen sich oft um:
Deployment
Concurrency Model
I/O
Verteilung
![Page 9: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/9.jpg)
The Pragmatic Reactive Manifesto ;)
![Page 10: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/10.jpg)
Threads vs. task level concurrency
![Page 11: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/11.jpg)
JUGH - Von Enterprise zu Reactive
Threads … scheinbar eine gute Idee
• Threads sind (im Gegensatz zu Prozessen) • „leichtgewichtig“ • einfacher zu programmieren (keine Inter-
Prozess-Kommunikation)
11
![Page 12: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/12.jpg)
JUGH - Von Enterprise zu Reactive
Lightweight?
12
Slide from John Rose, Java VM Architect, JFokus, Stockholm, February 2015
![Page 13: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/13.jpg)
JUGH - Von Enterprise zu Reactive
The problem with Threads
13
They discard the most essential and appealing properties of sequential computation: understandability, predictability, and determinism.
Threads, as a model of computation, are wildly nondeterministic, and the job of the programmer becomes one of pruning that nondeterminism.
![Page 14: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/14.jpg)
![Page 15: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/15.jpg)
JUGH - Von Enterprise zu Reactive
Threads
• nicht effizient • Speicherverbrauch • Scheduling / context switch • nicht optimal für NUMA • „contention“
• kein gutes Programmiermodell • „shared mutual state“ ist schwer nachzuvollziehen
15
![Page 16: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/16.jpg)
JUGH - Von Enterprise zu Reactive
Was wäre also besser?
Ziele • Task-Level (sub-thread) concurrency • „share nothing“ • Threads darunter, als
Anzahl Threads ~ Anzahl Kerne
16
![Page 17: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/17.jpg)
JUGH - Von Enterprise zu Reactive
Thread Alternativen (Nachfolger?)
• Green threads / coroutines / fibres • feinere Granularität, aber im Prinzip gleiches
Programmiermodell • Event-loop (e.g. vert.x, Reactor) • sehr lose Kopplung, „Bus“-Architektur vorgegeben
• Aktoren ! • Share-nothing, Flexibel, in der Praxis bewährt
17
![Page 18: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/18.jpg)
JUGH - Von Enterprise zu Reactive
Beispiel: Http Request handling
Java EE: Threads. Servlet API: Thread per Request
18
![Page 19: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/19.jpg)
JUGH - Von Enterprise zu Reactive
Beispiel: Http Request handling
Reactive: Sub-Thread (Play, Akka HTTP, vert.x..)
19
![Page 20: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/20.jpg)
JUGH - Von Enterprise zu Reactive
Konsequenzen
•Wir sind (ohne explizit Aktoren o.ä. zu verwenden) in einem anderen Concurrency-Modell. • ThreadLocal ist jetzt ein Anti-Pattern! Am besten vermeiden, oder es ist zusätzliche Arbeit nötig. • Noch zu klären: Was heißt das eigentlich für I/O?
20
![Page 21: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/21.jpg)
JUGH - Von Enterprise zu Reactive
Reactive Checkliste
• Reactive bringt Sub-Thread-Level Concurrency mit sich. Darauf einstellen.
21
![Page 22: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/22.jpg)
Blocking vs. non-blocking I/O
![Page 23: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/23.jpg)
JUGH - Von Enterprise zu Reactive
High concurrency matters
23
But there’s one thing we can all agree on: At high levels of concurrency (thousands of connections) your server needs to go to asynchronous non-blocking. [..] any part of your server code blocks you’re going to need a thread. And at these levels of concurrency, you can’t go creating threads for every connection.
From https://strongloop.com/strongblog/node-js-is-faster-than-java/
![Page 24: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/24.jpg)
JUGH - Von Enterprise zu Reactive
Blocking I/O
Was wird eigentlich geblockt?
24
![Page 25: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/25.jpg)
JUGH - Von Enterprise zu Reactive
Non-blocking
25
Bei Task-Level (Sub-Thread-Level) Concurrency • Ist jeder Thread für n Tasks zuständig • Das n kann ziemlich groß sein
So einen Thread wollen wir sicher nicht für Blocking I/O verschwenden!
![Page 26: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/26.jpg)
JUGH - Von Enterprise zu Reactive
Aber wenn ich so etwas benötige?
26
try { stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String coffeeName = rs.getString("COF_NAME"); int supplierID = rs.getInt("SUP_ID"); float price = rs.getFloat("PRICE"); int sales = rs.getInt("SALES"); int total = rs.getInt("TOTAL"); System.out.println(coffeeName + "\t" + supplierID + "\t" + price + "\t" + sales +
![Page 27: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/27.jpg)
JUGH - Von Enterprise zu Reactive
Isolieren!
27
vert.x hat „worker verticles“ Play/Akka: Dispatcher-Konfiguration
Slick 3 hat das schon „eingebaut“
![Page 28: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/28.jpg)
JUGH - Von Enterprise zu Reactive
Reactive Checkliste (Fortsetzung)
• Reactive bringt Sub-Thread-Level Concurrency mit sich. Darauf einstellen. • Non-Blocking I/O verwenden. Wenn es
wirklich gar nicht geht: Blocking I/O isolieren.
28
![Page 29: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/29.jpg)
„Distributed Transactions“ vs. Distributed Systems
![Page 30: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/30.jpg)
JUGH - Von Enterprise zu Reactive 30
@Transactional public static class GreetingService {
@Inject private JmsTemplate jmsTemplate;
@PersistenceContext private EntityManager entityManager;
public void createGreeting(String name) { Greeting greeting = new Greeting(name); this.entityManager.persist(greeting); this.jmsTemplate.convertAndSend("greetings", greeting); …
Aber wenn ich so etwas benötige?
![Page 31: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/31.jpg)
JUGH - Von Enterprise zu Reactive 31
![Page 32: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/32.jpg)
JUGH - Von Enterprise zu Reactive
Vermeiden
32
@Transactional public static class GreetingService {
@Inject private JmsTemplate jmsTemplate;
@PersistenceContext private EntityManager entityManager;
public void createGreeting(String name) { Greeting greeting = new Greeting(name); this.entityManager.persist(greeting); this.jmsTemplate.convertAndSend("greetings", greeting); …
Nicht wirklich „all or nothing“, lediglich Abgleich
![Page 33: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/33.jpg)
JUGH - Von Enterprise zu Reactive
Trennen ( = die Schritte trennen)
33
Behauptung: Jeder 2PC kann durch asynchrone Nachrichten ersetzt
werden.
![Page 34: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/34.jpg)
JUGH - Von Enterprise zu Reactive
Life beyond Distributed Transactions
34
In general, application developers simply do not implement large scalable applications assuming distributed transactions. When they attempt to use distributed transactions, the projects founder because the performance costs and fragility make them impractical. [..]
![Page 35: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/35.jpg)
35
Want Almost-Infinite Scaling• More of everything… Year by year, bigger and bigger• If it fits on your machines, multiply by 10, if that fits, multiply by 1000…• Strive to scale almost linearly (N log N for some big log).
Assumptions(Don’t Have to Prove These… Just Plain Believe Them)
Grown-Ups Don’t Use Distributed Transactions•The apps using distributed transactions become too fragile…• Let’s just consider local transactions. ! Multiple disjoint scopes of serializability
Want Scale-Agnostic Apps • Two layers to the application: scale-agnostic and scale-aware• Consider scale-agnostic API
Scale Agnostic Code
Scale-Aware-Code
Application
Upper Layer
Lower Layer
Scale Agnostic API
![Page 36: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/36.jpg)
JUGH - Von Enterprise zu Reactive
2 PC => messaging
36
Item-B Cancellation Tentative Op
Item-A
Restriktionen bzw. Anforderungen
•at-least-once Delivery•idempotente Nachrichten•vorläufige Operationen
![Page 37: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/37.jpg)
JUGH - Von Enterprise zu Reactive
Mögliche Umsetzung: Saga Pattern
37
Tipp: http://kellabyte.com/2012/05/30/clarifying-the-saga-pattern/
![Page 38: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/38.jpg)
JUGH - Von Enterprise zu Reactive 38
Noch ein Tipp: https://speakerdeck.com/caitiem20/applying-the-saga-pattern
Mögliche Umsetzung: Saga Pattern
![Page 39: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/39.jpg)
JUGH - Von Enterprise zu Reactive
Verteilte Transaktionen
39
Verteilte Transaktionen („2PC“) sind eine häufige Quelle für Abbrüche und Contention.
Sie können oft vermieden werden. Generell können lokale Transaktionen und at-least-once Delivery sie ersetzen.
Das Saga-Pattern ist eine praktische Umsetzung von „all-or-nothing“ für verteilte Systeme.
![Page 40: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/40.jpg)
JUGH - Von Enterprise zu Reactive 40
Service A (Reactive)
Service B (Legacy)
Verwerten
![Page 41: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/41.jpg)
JUGH - Von Enterprise zu Reactive
Ausblick / Gedankenspiele
41
Die Datenbanklandschaft ändert sind, wir bewegen uns in Richtung „event sourcing“ und „Immutability“. Das ist interessant für Reaktive Systeme!
„All-or-nothing“ Probleme hängen zusammen mit dem Wunsch, eine globale Wahrheit zu kennen im „Jetzt“. Aber was ist jetzt? Ein Zeitpunkt - oder der Ergebnis einer Folge von Ereignissen? Empfehlung: „The Illusion of Present“ von Jonas Bonér.
![Page 42: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/42.jpg)
JUGH - Von Enterprise zu Reactive
Reactive Checkliste (Fortsetzung)
• Reactive bringt Sub-Thread-Level Concurrency mit sich. Darauf einstellen. • Non-Blocking I/O verwenden. Wenn es
wirklich gar nicht geht: Blocking I/O isolieren. • Keine verteilten Transaktionen verwenden.
Wenn es wirklich gar nicht anders geht: Isolieren.
42
![Page 43: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/43.jpg)
App Servers vs. Standalone
![Page 44: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/44.jpg)
JUGH - Von Enterprise zu Reactive 44
![Page 45: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/45.jpg)
JUGH - Von Enterprise zu Reactive 45
![Page 46: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/46.jpg)
JUGH - Von Enterprise zu Reactive
Java EE Application Servers
46
Die Servlet API wurde für Thread-per-Request und synchrone I/O entwickelt.
Wenn man Application Servers nicht als Container für mehrere Applikationen nutzt - was unterscheidet sie von einer Library?
Erfordert Ops-Änderungen, aber Tools etablieren sich.
![Page 47: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/47.jpg)
JUGH - Von Enterprise zu Reactive
Reactive Checkliste (Fortsetzung)
• Reactive bringt Sub-Thread-Level Concurrency mit sich. Darauf einstellen. • Non-Blocking I/O verwenden. Wenn es
wirklich gar nicht geht: Blocking I/O isolieren. • Keine verteilten Transaktionen verwenden.
Wenn es wirklich gar nicht anders geht: Isolieren. • Keinen App-Server / Servlet-Container
verwenden.
47
![Page 48: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/48.jpg)
Zusammenfassung
![Page 49: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/49.jpg)
JUGH - Von Enterprise zu Reactive
Schlussfolgerung
49
Wenn
• Threads die kleinste Concurrency-Einheit in deinem Code sind, oder
• Du Blocking I/O verwendest (ohne klare Trennung), oder
• Du 2-Phase-Commit verwendest, oder • Du einen Java EE Application Server / Servlet
Container verwendest
dann ist deine Applikation nicht Reactive.
![Page 50: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/50.jpg)
JUGH - Von Enterprise zu Reactive
The Pragmatic Reactive Checklist
50
• Task-level (sub-thread level) concurrency
• Non-blocking I/O • Distributed • Containerless
![Page 51: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/51.jpg)
Reactive Manifesto revisited
![Page 52: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/52.jpg)
Wir haben eigentlich nur über den „elastic“ - Teil gesprochen
![Page 53: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/53.jpg)
führt zu
führt zu
![Page 54: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/54.jpg)
JUGH - Von Enterprise zu Reactive
Reactive - Warum das Ganze?
•Wir haben gesehen: Ich kann auch meine „normale“ Geschäftsanwendung reactive machen, und dabei Kompromisse eingehen.
•Was bringt mir das?
54
![Page 55: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/55.jpg)
JUGH - Von Enterprise zu Reactive
• Heißt nicht nur „web scale“.
• Effizient sein. Moderne Hardware nutzen (Many Core, NUMA)
• Von Innovation profitieren
55
![Page 56: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/56.jpg)
JUGH - Von Enterprise zu Reactive
• Prinzipien der Supervision & Isolation
• Let it crash!
56
![Page 57: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/57.jpg)
JUGH - Von Enterprise zu Reactive
• Spaß!!
•Wirklich. All das ist nicht entwickelt worden, um unser Leben komplizierter zu machen. Sondern einfacher!
•Wie würdest du es mit Menschen lösen..?
57
![Page 58: Von Enterprise zu Reactive bei der JUG Hessen am 3.12.2015](https://reader031.fdocument.pub/reader031/viewer/2022022203/587701c71a28ab890e8b48ad/html5/thumbnails/58.jpg)
Lutz Hühnken - Solution Architect
Twitter - @lutzhuehnken Blog (neu) - http://www.huehnken.de
Danke!