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
Lutz Hühnken
April 22, 2015
Programming
0
4
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
The Unreasonable Effectiveness of Events at BOBKonf Berlin 2024
lutzh
1
16
Managing Architecture - LeadDev Berlin - 2023-12-05
lutzh
0
75
Microservices need Microworkflows w-jax Munich 2023
lutzh
0
5
Events, Workflows, Sagas? Keep Your Event-driven Architecture Sane at Developer Week Nuremberg
lutzh
0
4
Events, Workflows, Sagas at KanDDDinsky Berlin 2022
lutzh
0
300
Events! Events Everywhere!
lutzh
0
250
Events First: Resiliente und skalierbare Microservices
lutzh
0
280
Event Storming, DDD, Reactive Systems, and Microservices
lutzh
0
1.3k
Introduction to Event Sourcing and CQRS in Scala - ScalaDays Copenhagen 2.6.2017
lutzh
0
1.9k
Other Decks in Programming
See All in Programming
Anthropic Cookbook のおすすめレシピ
schroneko
7
1.1k
PostmanでAPIの動作確認が楽になった話
h455h1
0
180
見た目から始める生産性向上
ikumatadokoro
9
1.3k
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
560
try! Swift Tokyo 初参加報告LT
hinakko2
0
230
Implementing Design Systems in Swift
seyfoyun
0
370
Ruby Pattern Matching
bkuhlmann
0
930
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
200
Amazon SQSコンシューマー疎結合への旅 - 出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 #3
quiver
0
300
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
1
340
Behind VS Code Extensions for JavaScript / TypeScript Linnting and Formatting
unvalley
5
1.1k
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
960
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
33
6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
18
1.6k
KATA
mclloyd
16
12k
From Idea to $5000 a Month in 5 Months
shpigford
378
45k
Making Projects Easy
brettharned
109
5.5k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
79
43k
Building a Scalable Design System with Sketch
lauravandoore
457
32k
What's in a price? How to price your products and services
michaelherold
238
11k
Designing Experiences People Love
moore
136
23k
The Cult of Friendly URLs
andyhume
74
5.7k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
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!