introduction to reactive

Post on 30-Nov-2014

259 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

The slides from the first Boston Reactive Software Meetup: Introduction to Reactive

TRANSCRIPT

Boston Reactive Software Meetup

Presented by !

Steven Pember Principal Consultant , Technical Architect at Cantina

David Fox Principal Consultant , Technical Architect at Cantina

Introduction to Reactive

!2

!3

What is Reactive?

!4

What is Reactive?A buzzword

!5

What is Reactive?A popular (comp) science buzzword

!6

Written by Jonas Bonér with contributions by Erik Meijer, Martin Odersky, Greg Young, Martin Thompson, Roland Kuhn, James Ward and Guillaume Bort.

The Reactive Manifesto

!7

1. WAY more traffic than just a few years ago

2. Users expect immediate response

3. Need 100% uptime

4. Large amounts of data

5. Need better models of concurrency

6. Old models like servlet showing their age

tl;dr

!8

These are the traits they use to describe this class of software.

The Four Traits

!9

Note how they play off one another to form a cohesive whole

The Four Traits

!10

There should really be a couple more traits…

The Missing Traits

changeable

!11

There should really be a couple more traits…

The Missing Traits

changeable

managable

not just from Typesafe!

Reactive Technologies

!12

!13

These are all “Reactive” technologies

!14

These are all “Reactive” technologiesReactive isn’t about particular technologies,

it’s a holistic view of application architecture to support the needs of the current generation of applications

!15

As developers, we need to see the whole picture of the application, from the front-end to the back-end. It’s

not enough to just use a “reactive framework”.

HTTP for Akka Actors

Spray Framework

!16

!17

• De-facto Actor implementation for Scala

• Replaced Scala’s actor implementation

• Team wanted to keep Scala smaller

• Better as a separate framework

• Used as basis of Play and Spray and many

other frameworks

Akka

!18

• Invented in 1973 by Carl Hewitt, Peter

Bishop, and Richard Steiger at MIT's AI lab

• A design pattern for concurrency

• Encapsulates state and behavior

• Alleviates the need for locks

• Allows work to be scheduled fairly

Actor Model

!19

How do actors work?

!20

Message is placed into the actor’s mailbox

Actor Receives Message

!21

The actor system’s scheduler schedules the actor to run in a thread. !

The actor processes a message according to its behavior

Actor Scheduled

!22

The actor state is modified. !

The scheduler will continue to fairly schedule the actor to run while its mailbox has messages.

Execution Complete

!23

Akka’s actors also have supervision strategies for failure

!24

• By default, when an actor crashes, it will simply be restarted by the system !

• Other strategies can be employed such as: • Resume keeping state • Resume clearing state • Terminate the actor permanently • Escalate, failing the supervising actor

Supervision

!25

• Finite state machine mixin • Typed actor proxy for integration with non-

actor-based code • Location transparency / clustering • Support for event/command sourcing

Other Features

!26

What Are the Drawbacks?• Programming with actors is more difficult • Type safety is lost • Not as easy to compose

!27

• Synchronization constructs/patterns

• Allow use of values which will be eventually

available at a later point in time

• Terms sometimes used interchangeably

• A promise is a container to write a value to

• A future is a handle used to read that value

Promises & Futures

Live coding demo

Spray Framework

!28

!29

Cantina is a digital agency that plans, designs and builds connected experiences

and product innovations.

top related