building reactive apps

33
© 2013 Typesafe Inc. | All rights reserved | 1 Building Reactive Applications James Ward www.jamesward.com @_JamesWard

Upload: james-ward

Post on 10-May-2015

880 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 1

Building Reactive Applications

James Wardwww.jamesward.com@_JamesWard

Page 2: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 2

Agenda

• Intro to Reactive• The Typesafe Platform– Typesafe Activator– Play Framework– Akka– Scala– Tools• Questions

Page 3: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 3

Software is becoming Reactive

Page 4: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 4

Tenets of Reactive Software

Page 5: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 5

ReactiveManifesto.org

Page 6: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 6

The Typesafe Reactive Platform

Page 7: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 7

Prod

uctiv

ity

Performance

Page 8: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 9

Go Reactive with Typesafe Activator

Page 9: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 10

Page 10: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 12

Play FrameworkThe High Velocity Web Framework For Java and Scala

Page 11: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 13

Page 12: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 14

Page 13: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 15

Page 14: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 17

Akka

Page 15: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 18

Page 16: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 19

Actors

• Event-driven• Managed concurrency• Resilience & supervision• Scales up & out• Non-request based lifecycle

Page 17: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 21

Scala

Page 18: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 22

Page 19: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 23

Go Reactive!

Page 20: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 24

Reactive Web / Mobile Apps

• Reactive Request– Async & Non-Blocking Request & Response• Reactive Composition– Reactive Request + Reactive Request + ...• Reactive Push– Stream Producer• 2-way Reactive = Bi-Directional Reactive Push• Reactive UIs– Interactive, Data Synchronization, Real-time Collaboration

Page 21: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 25

Actors

• event-driven• managed concurrency• resilience & supervision• non-request based lifecycle

Page 22: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 26

Request/Response: Traditional vs. Reactive

def getTweets = Action { Ok(WS.get("http://twitter.com/"))}

Client Server Serviceblocking blocking

def getTweets = Action { Async { Ok(WS.get("http://twitter.com/"))}}

Client Server Servicenon-blocking

non-blocking

Page 23: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 28

Streaming: Traditional vs. Reactive

// comet style pollingdef getNewTweets = Action { Ok(queuedEvents)}

Client Server Serviceblocking blocking

def streamTweets = Action { Ok.stream(eventProducer)}

Client Server Servicenon-blocking

non-blocking

Page 24: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 29

2-way Reactive

ProducerConsumer

ConsumerProducer

non-blocking

non-blocking

Page 25: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 31

Tools

Page 26: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 32

Tooling

Page 27: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 33

Testing

• JUnit• ScalaTest• Specs2•Gatling

Page 28: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 34

Build Infrastructure

• sbt, Maven, Gradle• Jenkins, Bamboo• TDD, CI, CD

Page 29: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 35

Deployment

• Containerless• Play–Stateless• Canary Deployments• Rolling Upgrades• Schema Evolutions

• Akka–Clustering in 2.2 with Segmented Upgrades

Page 30: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 36

Monitoring

• Typesafe Console• New Relic• Takipi• AppDynamics

Page 31: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 37

Reactive Scales

Page 32: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 38

Page 33: Building Reactive Apps

© 2013 Typesafe Inc. | All rights reserved | 39

Go Reactive!