Akka and AngularJS – Reactive Applications in Practice

Post on 29-Nov-2014

3.754 views 6 download

description

Imagine how you are setting out to implement that awesome idea for a new application. In the back-end you enjoy the horizontal and vertical scalability offered by the Actor model, and its great support for building resilient systems through distribution and supervision hierarchies. In the front-end you love the declarative way of writing rich and interactive web apps that AngularJS gives you. In this presentation we bring these two together, demonstrating how little effort is needed to obtain a responsive user experience with fully consistent and persistent data storage on the server side. See also http://summercamp.trivento.nl/

Transcript of Akka and AngularJS – Reactive Applications in Practice

Dr. Roland Kuhn Akka Tech Lead @rolandkuhn

Akka and AngularJS

Reactive Applications in Practice

Reactive  Applications

The Four Reactive Traits

2

http://reactivemanifesto.org/

Akka !

A fully Reactive toolkit on the JVM

The Actor Model

• fully message-driven: an Actor can react by • sending messages to other Actors • creating Actors • denominating behavior for the next message

• Actors are effectively single-threaded • failures are contained and escalated within the

supervisor hierarchy • scaling up & out through location transparency

4

Persistence Model: Event Sourcing

• based on storing change instead of updating state • persistent Actors generate events: • historic facts that do not change thereafter • storage is append-only log • current Actor state is updated by consuming events

• Actor can revisit the past by replaying events • events contain more business information than

current state snapshot

5

Command Query Responsibility Segregation

6

Client

write-!side

read-!side

Command Reply Query Reply

Events

Command Query Responsibility Segregation

• persistent Actors on write-side generate events • read-side independently consumes event streams • read model is fully decoupled from write model • queries are served from optimal storage: • SQL store • graph database • in-memory live view

• new read model can be generated on demand

7

Spray / Akka HTTP !

An Actor-Based Web Toolkit

Web-Server made Simple

• HTTP requests and responses are Actor messages • powerful routing DSL turns Actor into Web-Server • not a web framework: • just expose Actors as web endpoints • nicely suited for RESTful APIs

9

Important Disclaimer

• I know a lot about Akka, but … • I am not a web developer

10

Gabbler: The Write-Side

11

Gabbler Replayer

Journal

RouterLog

Input

POST

201

Gabbler: The Read-Side

12

Gabbler Replayer

Journal

RouterLog

Input

GET

Replay

200

Gabbler: The Whole Thing

13

Gabbler Replayer

Journal

RouterLog

Input

Further Information

• Code at https://github.com/hseeberger/gabbler • currently a pull request

• See also http://akka.io

14

©Typesafe 2014 – All Rights Reserved