reactive applications

29
reactive applications new kids for your building blocks 09/2013 twitter.com/MikeBild

Upload: mbild

Post on 10-May-2015

813 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Reactive Applications

reactive applicationsnew kids for your building blocks

09/2013twitter.com/MikeBild

Page 2: Reactive Applications

la, la, la, la, la, la tonight

• quick

• hard

• dirty

Reactive

Page 3: Reactive Applications

developers

• translating the reactive concepts into code

• use Rx / RxJS for example

• https://gist.github.com/MikeBild/6725003

yeah

Page 4: Reactive Applications

why

• unstructured information

• real-time analytics and intelligence

• high user interaction and collaboration

• clusters vs. elasticity

• big-data vs. high-frequency

Page 5: Reactive Applications

why

• historical analysis

• triggered finite state machines

• data synchronization

• more and more connected devices

• business domain complexity

Page 6: Reactive Applications

working software

• is useful information output that

• fits business domain

• fits non-functional requirements

Page 7: Reactive Applications

new challenges

• cause - effect

• time correlation

• information/data correlation

Page 8: Reactive Applications

reactive manifesto

• it‘s a concept

• technology agnostic

• pros and cons

• event / message centric

Page 9: Reactive Applications

4 building blocks

• Event-Driven

• Scalable

• Resilient

• Responsive and Interactive

Page 10: Reactive Applications

react to ...

• events

• time

• load

• failures

• users

Page 11: Reactive Applications

how

• RxJava | Java, Clojure, Scala, Groovy, JRuby

• Rx.NET | C#, F#, VB

• RxJS | JavaScript | NodeJS

• ReactiveCocoa | Objective-C

• RxCpp | C++

• more and more

Page 12: Reactive Applications

glorious

• NetFlix

• GitHub for Windows / Mac

• more and more

Page 13: Reactive Applications

events

• things that have happened

• events represent state changes

• data structure

• implicit and explicit information

• payload

Page 14: Reactive Applications

event-driven

• events

• sources

• analytics & abstracting

• handling

Page 15: Reactive Applications

event-driven

• highly decoupled

• ever non-blocking

• reactive from top to bottom

• input - processing - output

• asynchronous Event-Stream(s)

Page 16: Reactive Applications

translate into code

• event sources structure

• create and compose

• transform, filter, aggregate, group, combine

Page 17: Reactive Applications

scalable

• easy to expand or update on demand

• elastic scale out and scale in

• helps to manage risk

Page 18: Reactive Applications

scalable

• location transparent

• message passing style

• abstraction for opportunities

• local context or distributed within same semantic

Page 19: Reactive Applications

translate into code

• composing

• scheduling

• tasks

Page 20: Reactive Applications

resilient

• no downtime - be stale or compensate

• failures/errors as a first class construct

• failures are business decisions

• react to manage failures

• monitor what possible

Page 21: Reactive Applications

translate into code

• state

• resources

• catch errors

• retry

• compensation

Page 22: Reactive Applications

responsive

• react to a stimulus

• high user to system interaction

• „always ready“

Page 23: Reactive Applications

responsive

• permanent connection between user and system

• collaborative environment

• real-time feedback

Page 24: Reactive Applications

translate into code

• throttle, delay time

• analytics

• filter

• transform

Page 25: Reactive Applications

design

• isolated / autonomous blocks

• async event-driven message passing

• location transparent

• ever responsive

• explicit failure management

@reactivemanifesto.org

Page 26: Reactive Applications

conclusion

What does that mean here?

@reactivemanifesto.org

Page 27: Reactive Applications

reactive applications

• Observable Models

• Event Streams

• Stateful Clients

Page 28: Reactive Applications

reactive applications

• react from top to buttom to top

• observe data changes

• execute logic

• store state

• real-time update UI