Reactieve applicaties; klaar voor de toekomst
Upcoming SlideShare
Loading in...5
×
 

Reactieve applicaties; klaar voor de toekomst

on

  • 385 views

 

Statistics

Views

Total Views
385
Views on SlideShare
314
Embed Views
71

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 71

http://www.nljug.org 71

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • low-level primitives (locking, threading) are part of infrastructureApplication code doesn’t expose “real infrastructure”Loose coupling between components

Reactieve applicaties; klaar voor de toekomst Reactieve applicaties; klaar voor de toekomst Presentation Transcript

  • Reactieve applicaties Klaar voor de toekomst JFall 2013 Allard Buijze – allard.buijze@trifork.nl
  • Allard Buijze Software Architect bij Trifork (Amsterdam) Organsatoren van GOTO & QCON 15 jaar web development ervaring Gelooft sterk in DDD en CQRS Ontwikkelaar en initiatiefnemer van Axon Framework Java Framework voor schaalbaarheid en performance www.axonframework.org
  • Een kleine terugblik… 1990 0,3% van Nederland had internettoegang 0.001 PB / Maand data-transfer 2000 40% internettoegang 86 PB / Maand 2012 93% internettoegang > 30 000 PB / Maand Waarvan 885 PB / Maand mobiel
  • Layered architecture
  • In de jaren 70… Bron: wikipedia.org
  • In de jaren 70… Bron: vintagecomputer.net
  • Het web in 2013… en verder…
  • Het web in 2013… en verder…
  • Het web in 2013… en verder…
  • Niet meer alleen Google en Twitter…
  • Reactive Merriam Webster: Readily responsive to a stimulus
  • De kwaliteiten van een reactieve applicatie Responsive Scalable Reactive EventDriven Resilient
  • Responsive Scalable Reactive EventDriven Resilient
  • Normaal... A C getState() state B
  • De “Event Driven” manier A D C event E pub-sub event B
  • Event Driven – Amdahl’s Law The speedup of a program using multiple processors in parallel computing is limited by the sequential fraction of the program.
  • Procedural – Not parallelizable... public void doMyBusinessLogic() { doSomethingInternally(); externalComponent1.doSomethingRelated(); externalComponent2.doSomethingElse(); return someResult; }
  • Procedural – Parallelizable, but ugly... public void doMyBusinessLogic() { doSomethingInternally(); threadPool.execute(new Runnable() { ... externalComponent1.doSomethingRelated()}); threadPool.execute(new Runnable() { ... externalComponent2.doSomethingElse()}); return someResult; }
  • Parallelizable... public void doMyBusinessLogic() { doSomethingInternally(); eventPublisher.publish(aNotification()); return someResult; } public void handler(Notification n) { doSomethingRelated(); }
  • Separation of concerns Business logica C Infrastructuur - Locking - Threading - Netwerk / IO event pub-sub Geen harde No dependency afhankelijkheden Business logica event B
  • De kwaliteiten van een reactieve applicatie Responsive Scalable Reactive EventDriven Resilient
  • Scalable Merriam Webster: “capable of being easily expanded or upgraded on demand”
  • Elasticiteit
  • Location transparency SomeServiceInterface service = new RemoteService(...) result = service.callSomeMethod(); Doet zich voor als lokale aanroep...
  • Location transparency – embrace the network service.someMethod(someParameter, new Callback() { public void onResult(Result result) { // do stuff with result } public void onError(Exception e) { // handle failure } });
  • Events – Inherently location transparent D C event E pub-sub event B
  • De kwaliteiten van een reactieve applicatie Responsive Scalable Reactive EventDriven Resilient
  • Resilient Merriam Webster: • the ability of a substance or object to spring back into shape • the capacity to recover quickly from difficulties
  • Voorbeelden genoeg… “Barclays Bank System Crashes” (2012) “Lloyds' banking systems failure hits 22m retail customers” (2012) “Failure of American Airlines reservations system grounds all flights” (2013)
  • Observeer componenten D C event pub-sub event ! E ! B
  • Stability patterns Bulkhead Circuit breaker Timeouts Decoupling middleware Handshaking Test Harness Let it crash!
  • Stability patterns – Bulkhead
  • Stability patterns – Bulkhead
  • Bulkhead in software A ! C event pub-sub event B
  • Bulkhead in software A C event pub-sub event B
  • Bulkhead in software A C event pub-sub event B
  • Circuitbreaker
  • Stability patterns – Circuitbreaker A C checkStatus() doSomething() ! B
  • Stability patterns Bulkhead Circuit breaker Timeouts Decoupling middleware Handshaking Test Harness Let it crash!
  • De kwaliteiten van een reactieve applicatie Responsive Scalable Reactive EventDriven Resilient
  • Responsive Merriam Webster: “quick to respond or react appropriately"
  • Responsive is...
  • Responsive is...  Real-time  Engaging  Rich  Collaborative
  • Dus niet....
  • Dus wel...
  • Observable models... subscribe() notify() Stateful Client Server
  • Als we toch al events hebben... pub-sub Stateful Client Server
  • # voorkomens  # voorkomens  Latency.... latency  latency 
  • Capacity planning – Hoe groot moet een queue zijn? Zo “kort” mogelijk? Lekker “lang”? Onbeperkt? Reken het uit, of meet het! Pn n (1 ) Wq Ws 1
  • # requests  Capacity planning Tijd 
  • De kwaliteiten van een reactieve applicatie Responsive Scalable Reactive EventDriven Resilient
  • En hoe? Tools en hulpmiddelen voor Reactive Applications
  • Tools en Frameworks Akka – Actor Model Axon Framework – CQRS / EDA Spring Reactor – Async message processing WebSockets (JSR-356) – Full duplex communicatie over http(s) Lambda Expressions Method references – Voorkom “callback hell”
  • Latency Responsive Axon Framework Event Driven Resilience Location transparency Actor model Capacity planning Queues Event Driven Architecture Collaborative Embrace the network Stability patterns Amdahl Real-time Akka Engaging Circuit breaker Back pressure Asynchronous Responsive Lambda’s Bulkhead pattern WebSockets Little’s Law Spring Reactor
  • reactivemanifesto.org
  • Vragen? Meer informatie: www.reactivemanifesto.org www.axonframework.org allard.buijze@trifork.nl