Upload
roland-kuhn
View
3.757
Download
6
Embed Size (px)
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/
Citation preview
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