Reactive Applications

Post on 10-May-2015

813 views 0 download

Tags:

Transcript of Reactive Applications

reactive applicationsnew kids for your building blocks

09/2013twitter.com/MikeBild

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

• quick

• hard

• dirty

Reactive

developers

• translating the reactive concepts into code

• use Rx / RxJS for example

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

yeah

why

• unstructured information

• real-time analytics and intelligence

• high user interaction and collaboration

• clusters vs. elasticity

• big-data vs. high-frequency

why

• historical analysis

• triggered finite state machines

• data synchronization

• more and more connected devices

• business domain complexity

working software

• is useful information output that

• fits business domain

• fits non-functional requirements

new challenges

• cause - effect

• time correlation

• information/data correlation

reactive manifesto

• it‘s a concept

• technology agnostic

• pros and cons

• event / message centric

4 building blocks

• Event-Driven

• Scalable

• Resilient

• Responsive and Interactive

react to ...

• events

• time

• load

• failures

• users

how

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

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

• RxJS | JavaScript | NodeJS

• ReactiveCocoa | Objective-C

• RxCpp | C++

• more and more

glorious

• NetFlix

• GitHub for Windows / Mac

• more and more

events

• things that have happened

• events represent state changes

• data structure

• implicit and explicit information

• payload

event-driven

• events

• sources

• analytics & abstracting

• handling

event-driven

• highly decoupled

• ever non-blocking

• reactive from top to bottom

• input - processing - output

• asynchronous Event-Stream(s)

translate into code

• event sources structure

• create and compose

• transform, filter, aggregate, group, combine

scalable

• easy to expand or update on demand

• elastic scale out and scale in

• helps to manage risk

scalable

• location transparent

• message passing style

• abstraction for opportunities

• local context or distributed within same semantic

translate into code

• composing

• scheduling

• tasks

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

translate into code

• state

• resources

• catch errors

• retry

• compensation

responsive

• react to a stimulus

• high user to system interaction

• „always ready“

responsive

• permanent connection between user and system

• collaborative environment

• real-time feedback

translate into code

• throttle, delay time

• analytics

• filter

• transform

design

• isolated / autonomous blocks

• async event-driven message passing

• location transparent

• ever responsive

• explicit failure management

@reactivemanifesto.org

conclusion

What does that mean here?

@reactivemanifesto.org

reactive applications

• Observable Models

• Event Streams

• Stateful Clients

reactive applications

• react from top to buttom to top

• observe data changes

• execute logic

• store state

• real-time update UI