Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Von "Enterprise" zu "Reactive" (JAX 2015)
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Lutz Hühnken
April 22, 2015
Programming
0
27
Von "Enterprise" zu "Reactive" (JAX 2015)
Vortrag "Von Enterprise zu Reactive" von der JAX 2015.
Lutz Hühnken
April 22, 2015
Tweet
Share
More Decks by Lutz Hühnken
See All by Lutz Hühnken
Building a Bank (with DDD, Microservices, and Autonomous Teams)
lutzh
0
77
OOP Munich Night School - EDA is More Than Events - 3.2.2025
lutzh
0
150
Events, Workflows, Sagas: Complex Flows in Distributed Applications (2024-11-12 Software Architecture Gathering, Berlin)
lutzh
0
120
Event-Driven Architecture - 10 Jahre klüger
lutzh
0
180
The Unreasonable Effectiveness of Events at BOBKonf Berlin 2024
lutzh
1
220
Managing Architecture - LeadDev Berlin - 2023-12-05
lutzh
0
160
Microservices need Microworkflows w-jax Munich 2023
lutzh
0
110
Events, Workflows, Sagas? Keep Your Event-driven Architecture Sane at Developer Week Nuremberg
lutzh
0
73
Events, Workflows, Sagas at KanDDDinsky Berlin 2022
lutzh
0
450
Other Decks in Programming
See All in Programming
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
React Native × React Router v7 API通信の共通化で考えるべきこと
suguruooki
0
100
Fluid Templating in TYPO3 14
s2b
0
130
Oxlint JS plugins
kazupon
1
990
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
790
Apache Iceberg V3 and migration to V3
tomtanaka
0
170
並行開発のためのコードレビュー
miyukiw
0
980
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
320
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
94
GraphQLとの向き合い方2022年版
quramy
50
14k
The Curse of the Amulet
leimatthew05
1
8.7k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
260
The agentic SEO stack - context over prompts
schlessera
0
640
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
130
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
140
[SF Ruby Conf 2025] Rails X
palkan
1
760
Test your architecture with Archunit
thirion
1
2.2k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
250
Transcript
Lutz Hühnken | @lutzhuehnken | Typesafe Von „Enterprise“ zu „Reactive“
Von Enterprise zu Reactive @lutzhuehnken Reactive „for the rest of
us“.. Big Data Web Scale HFT Tomcat Web MVC RDBMS
Von Enterprise zu Reactive @lutzhuehnken Was ist Enterprise? Im Sinne
dieses Vortrags: • Alles, was auf Java EE basiert • Insbesondere Servlet API basierte Webapps, z.B. auf Tomcat
Von Enterprise zu Reactive @lutzhuehnken Was ist Reactive?
Von Enterprise zu Reactive @lutzhuehnken Was ist Reactive? Behauptet doch
jeder von sich…
Von Enterprise zu Reactive @lutzhuehnken Was ist Reactive? Alles Akka,
oder was?
Von Enterprise zu Reactive @lutzhuehnken Mal anders: Fragen, die wir
immer wieder hören
Von Enterprise zu Reactive @lutzhuehnken WAR? Servlet Container? Web Layer
Library X (nutzt ThreadLocal) ?
Von Enterprise zu Reactive @lutzhuehnken Kann ich das nutzen mit
RDBMS/ JDBC? Backend Wie mache ich 2PC?
Von Enterprise zu Reactive @lutzhuehnken Thread per Request
Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests
Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests
Effekt: Kleinere Einheit der Nebenläufigkeit (Task level concurrency)
Von Enterprise zu Reactive @lutzhuehnken Kleiner Exkurs: Gilt auch für
Aktoren (Überhaupt: Gemeinsamkeit (einiger) reaktiver Systeme)
Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests
Was heißt das für ThreadLocal?
Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests
Was heißt das für I/O?
Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests
In Tomcat / Servlet Container?
Von Enterprise zu Reactive @lutzhuehnken Konsequenzen (alpha) • Servlet Container
• ThreadLocal • Blocking I/O werden zu Anti-Pattern. Vermeiden!
Von Enterprise zu Reactive @lutzhuehnken Jetzt habe ich aber so
etwas.. 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 + Blocking I/O, Sorgenkind JDBC
Von Enterprise zu Reactive @lutzhuehnken Isolieren! Bei vert.x „Worker Verticle“
Bei Play/Akka: Volle Kontrolle über Dispatcher Nicht nur für JDBC, generell für „blocking“ code
Von Enterprise zu Reactive @lutzhuehnken Konsequenzen (beta) • auf Servlet
Container und ThreadLocal verzichten • Blocking I/O vermeiden. Im Notfall: Isolieren.
Von Enterprise zu Reactive @lutzhuehnken Jetzt habe ich aber so
etwas.. @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); … Verteilte Transaktion
Von Enterprise zu Reactive @lutzhuehnken
Von Enterprise zu Reactive @lutzhuehnken Vermeiden this.entityManager.persist(greeting); this.jmsTemplate.convertAndSend("greetings", greeting); …
Warum nicht separater Abgleich (Reconciliation)? In unserem kleinen Beispiel:
Von Enterprise zu Reactive @lutzhuehnken Trennen Jeder 2 PC kann
durch asynchrones Messaging ausgedrückt werden!
Von Enterprise zu Reactive @lutzhuehnken 2PC => Messaging Kleine Einschränkung
- Voraussetzungen: •tentative operations •at-least-once delivery •idempotent messages Item-B Cancellation Tentative Op Item-A
Von Enterprise zu Reactive @lutzhuehnken Verwerten Service A (Reactive) Service
B (Legacy)
Von Enterprise zu Reactive @lutzhuehnken Konsequenzen (1.0) • auf Servlet
Container und ThreadLocal verzichten • Blocking I/O vermeiden. Im Notfall: Isolieren. • Distributed Tx: Vermeiden, trennen, verwerten
Von Enterprise zu Reactive @lutzhuehnken Warum das Ganze? • Wir
haben gesehen: Ich kann auch meine „normale“ Geschäftsanwendung reactive machen, und dabei Kompromisse eingehen. • Was bringt mir das?
Von Enterprise zu Reactive @lutzhuehnken • Heißt nicht nur „web
scale“. • Effizient sein. Moderne Hardware nutzen (Many Core, NUMA) • Von Innovation profitieren (s. Brian Goetz gestern)
Von Enterprise zu Reactive @lutzhuehnken Nicht von mir! Sondern von
John Rose, Java VM Architect, JFokus, Stockholm, February 2015
Von Enterprise zu Reactive @lutzhuehnken • Prinzipien der Supervision &
Isolation • Let it crash!
Von Enterprise zu Reactive @lutzhuehnken • Spaß!! • Ernsthaft. All
das ist nicht entwickelt worden, um unser Leben komplizierter zu machen. Sondern einfacher! • Wie würdest du es mit Menschen lösen..?
Von Enterprise zu Reactive @lutzhuehnken Vielen Dank
[email protected]
Twitter: @lutzhuehnken
Kommt zum Typesafe-Stand! (In der Nähe der Garderobe) Geht zu den anderen „Reactive“ Vorträgen!