SlideShare a Scribd company logo
1 of 134
Download to read offline
Akka Persistence
and Eventuate
A CQRS/ES tool comparison
Martin Krasser (@mrt1nz)
Freelance software developer/architect
History
Eventsourced Akka Persistence
Eventuate
7.2012 9.2013 1.2015
Similarities
Basis technologies
Scala
Akka actors
Akka streams
(Pluggable) storage backends
Akka actor
Actor
State
Behavior
Mailbox
transient
non-durable
Akka Persistence
and Eventuate
Persist actor state via event sourcing
Event sourcing
Capture all changes to application
state as sequence of events
Store events in event log (append-
only)
Replay events to recover application
state
Event sourcing
Commands - actions, can fail
Events - immutable facts
Event-sourced actor
Actor
State
Behavior
Mailbox
Command handler
Event handler
Command processing
Event-sourced actor
State
Command handler
Event handler
Event log
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Events
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Events
Events
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Events
Events
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Reply
Event log
Events
Events
State recovery
Event-sourced actor
State
Command handler
Event handler
Event log
State recovery
Event-sourced actor
State
Command handler
Event handler
Event log
Events (replay)
State recovery
Event-sourced actor
State
Command handler
Event handler
Event log
Events (replay)
Akka Persistence
and Eventuate
Separate command processing from
query processing
CQRS
Command Query

Responsibility Segregation
Different data models for command
processing and query processing
CQRS
Write model for command
processing
Read model for query

processing
CQRS
Can be well combined with event
sourcing (CQRS/ES)
CQRS/ES
Write model
Event log
Command Query
Events (r/w) Events (r)
Command side Query side
Read model
Abstractions
Command side Query side
Akka
Persistence
PersistentActor
PersistentView
Source[E,M]
Eventuate EventsourcedActor
EventsourcedView
EventsourcedProcessor
Source[E,M]
*) work in progress
PersistentActor EventsourcedActor
PersistentActor EventsourcedActor
State
PersistentActor EventsourcedActor
Command

handler
PersistentActor EventsourcedActor
Event

handler
PersistentActor EventsourcedActor
Snapshot

handler
Differences
Command side
At a glance
https://twitter.com/mrt1nz/status/573382831889653760
Consistency
Akka Persistence and Eventuate
support strong consistency
Eventuate additionally supports
relaxation to causal consistency
Akka Persistence
Enforces strong consistency on
command side
PersistentActors must be global
singletons
No actor/state replication
Eventuate
EventsourcedActors can be replicated
State replication via reliable,
asynchronous event replication
Replication across locations
(availability zones)
Replication
Location A
Location B
Location C
Replication
Location A
Application state
Location B
Location C
Replication
Events
Events
Location A
Application state
Location B
Location C
Replication
Events
Events
Location A
Application state
Location B
Location C
Replication
Command
Location A
Location B
Location C
Replication
Command
X
Location A
Location B
Location C
Replication
Command
X
Events
Events
Location A
Location B
Location C
Replication
Command
X
X
X
Events
Events
Location A
Location B
Location C
Eventuate
Replicas writeable at all locations =
multi-master
Write-availability during network
partitions
Eventuate
Write conflicts
detection
tracking
automated resolution
interactive resolution
Partition
Location A
Location B
Location C
Partition
Command
Location A
Location B
Location C
Partition
Command
X
Location A
Location B
Location C
Partition
Command
X
Events
Location A
Location B
Location C
Partition
Command
X
XEvents
Location A
Location B
Location C
Partition
Command
Command
X
XEvents
Location A
Location B
Location C
Partition
Command
Command
X
X
Y
Events
Location A
Location B
Location C
Partition
Command
Command
X
X
Y
Events
Location A
Location B
Location C
Partition
Command
Command
X
X
Y
EventsEvents
Events
Location A
Location B
Location C
Conflict
XY
XY
XY
Location A
Location B
Location C
Resolution
XY
XY
XY
Interactive
resolution
XY => Z
Location A
Location B
Location C
Resolution
XY
XY
Interactive
resolution
XY => Z
Z
Location A
Location B
Location C
Resolution
XY
XY
Interactive
resolution
XY => Z
Z
Events
Events
Location A
Location B
Location C
Resolution
Interactive
resolution
XY => Z
Z
Z
Z
Events
Events
Location A
Location B
Location C
Eventuate
Strong consistency within location*)
Causal consistency across locations
Causality is tracked with vector
clocks
*) relaxation to causal consistency also possible within location
Causal consistency
example
Distributed chat application
FIFO reliable broadcast vs.
Causal reliable broadcast
Inspired by ACM article “Don’t Settle
for Eventual Consistency”
http://queue.acm.org/detail.cfm?
id=2610533
Causal consistency
example
FIFO rel. broadcast
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
Alice
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
DC1
DC2
DC3
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
DC1
DC2
DC3
Bob
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
DC1
DC2
DC3
FIFO rel. broadcast
Causality violation!
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
Retry
Causality violation!
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
Causality

check
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Causality

check
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Causality

check
Causality

check
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
Causality

check
DC1
DC2
DC3
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
Retry
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
- Alice: Whew, found it upstairs
Retry
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
- Bob: I’m glad to hear that
- Alice: Whew, found it upstairs
Retry
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Alice: Whew, found it upstairs
Causal re-ordering
DC1
DC2
DC3
Causal rel. broadcast
Causal consistency
Causally related events are
delivered in same order at all
locations
Concurrent events can be delivered
in any order at different locations
Differences
Event log
“Local”
event log
Eventuate
- LevelDB
- Cassandra
Location A
Location B
Location C
“Local”
event log
“Replicated”
event log
Eventuate
- LevelDB
- Cassandra
Location A
Location B
Location C
- LevelDB
- Cassandra
EventsEvents
Events
Local event log
Storage order consistent with

causal order
Given the potential causality
relation ➞ of events
Local event logs are linear
extensions of ➞
Replicated event log
Same causal event storage order 

at different locations
Different total event storage order 

at different locations
Akka Persistence
- LevelDB
- Cassandra
- EventStore
- MongoDB
- Kafka
- …
Location A
Location B
Location C
Differences
Event collaboration
Akka Persistence
PA
PA
PA
PA
Event log:
private for writing
shared for reading
(query side)
Eventuate
EA
EA
EA
Event log:
shared for writing
shared for reading
EA
Event routing
EA
EA
EA
Event routing
EA
EA
EA
e1
Event routing
EA
EA
EA
e1
e1
Event routing
EA
EA
EA
e1
e1
All
Topic
Aggregate id
…
Event routing
EA
EA
EA
e1
e1
EAEA
e1
EA
e1
Location A
Location B
Location C
Event collaboration
State replication
Service interaction
Event collaboration
S2
S1
S1
S3
Location A
Location B
Location C
Event collaboration
S2
S1
e1
S1
S3
Location A
Location B
Location C
Event collaboration
S2
S1
e1
S1
e1
S3
Location A
Location B
Location C
Event collaboration
S2
S1
e1
e1
S1
e1
S3
e1
Location A
Location B
Location C
Event collaboration
S2
S1
e1
e1
S1
e1
S3
e1
Location A
Location B
Location C
e2
Event collaboration
S2
S1
e1
e1
S1
e1
S3
e1
Location A
Location B
Location C
e2
e2
Event collaboration
Reliable, distributed and partition-
tolerant business processes
Event-driven (micro-)service
architectures
Event collaboration
Reliable event delivery
Causal event delivery
De-duplicated event stream
Differences
Query side
Akka Persistence 2.3
PA
PA
PV
PV
PV
PersistentViews on single PersistentActor

(default)
Akka Persistence 2.4
PA
PA
S
S
S
Stream Sources for multiple PersistentActors

(requires storage plugin support)
Eventuate
EV
EV
EventsourcedViews on multiple EventsourcedActors

(default, shared local log)
EA
EA
EA
Eventuate
EV
EV
EventsourcedViews on multiple EventsourcedActors

(default, shared replicated log)
EA
EA
EA
EA
EAEA
Location A
Location B
Location C
Consistency in CQRS
Eventual
consistency
Causal
consistency
Akka
Persistence
usually per PA
(plugin-specific)
Eventuate
Causal consistency
Single EA/EV: default
Across EA/EV: conditional requests
Example scenario
Update a write model (EA)
Query a read model (EV)
Query result should include effect
that was caused by the update
Conditional request
EA
Location A
EV
Location B
Conditional request
EA
Location A
EV
Location B
cmd
Conditional request
EA
Location A
EV
Location B
evt
cmd
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd
vts = vector timestamp (a “condition”)
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd reply(vts)
vts = vector timestamp (a “condition”)
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
delay
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
delay
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
delay
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
deliver
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
reply
deliver
Akka Distributed Data
and Eventuate
CRDTs
CRDTs
Conflict-free Replicated Data Types
Automated resolution of write conflicts
CRDTs
Akka distributed data: CvRDTs

(convergent or state-based)
Eventuate: CmRDTs

(commutative or operation-based)
CRDTs
CvRDTs CmRDTs
Message
payload
Current state Operations
Communication
middleware
No guarantees
Reliable
broadcast
(idempotent)
Change
history
CvRDT intern Persistent log
Specification
“A comprehensive study of
Convergent and Commutative
Replicated Data Types”
http://hal.upmc.fr/docs/00/55/55/88/
PDF/techreport.pdf
Akka CvRDTs
10 implemented from specification

(incl. counters, registers, sets, maps)
In-memory only (non-durable)
Custom data types can be defined
Eventuate CmRDTs
4 implemented from specification

(Counter, MV/LWW-register, OR-Set)
Durable via event sourcing
Eventuate CRDT framework
Documentation
http://rbmhtechnology.github.io/eventuate/
http://doc.akka.io/docs/akka/2.4.0/scala/
persistence.html
http://doc.akka.io/docs/akka/2.4.0/scala/
persistence-query.html
http://doc.akka.io/docs/akka/2.4.0/scala/
distributed-data.html
Thank you!

More Related Content

Viewers also liked

CQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaCQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaBharadwaj N
 
Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014Björn Antonsson
 
Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Evan Chan
 
Akka persistence webinar
Akka persistence webinarAkka persistence webinar
Akka persistence webinarpatriknw
 
An Introduction to Akka http
An Introduction to Akka httpAn Introduction to Akka http
An Introduction to Akka httpKnoldus Inc.
 
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...Jonas Bonér
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPRafal Gancarz
 
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesUnderstanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesLightbend
 
Akka and the Zen of Reactive System Design
Akka and the Zen of Reactive System DesignAkka and the Zen of Reactive System Design
Akka and the Zen of Reactive System DesignLightbend
 
Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)Jonas Bonér
 
Akka Finite State Machine
Akka Finite State MachineAkka Finite State Machine
Akka Finite State MachineKnoldus Inc.
 
Prolog Visualizer
Prolog VisualizerProlog Visualizer
Prolog VisualizerZhixuan Lai
 
Microservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with TechnologyMicroservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with TechnologyLegacy Typesafe (now Lightbend)
 
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...Chris Richardson
 
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)Steve Upton
 
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015Yanik Berube
 
A csodák logikája
A csodák logikájaA csodák logikája
A csodák logikájaszkbl
 
Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion   akka persistence, cqrs%2 fes y otras siglas del montónCodemotion   akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion akka persistence, cqrs%2 fes y otras siglas del montónJavier Santos Paniego
 

Viewers also liked (20)

CQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaCQRS + ES with Scala and Akka
CQRS + ES with Scala and Akka
 
Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014
 
Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015
 
Akka persistence webinar
Akka persistence webinarAkka persistence webinar
Akka persistence webinar
 
An Introduction to Akka http
An Introduction to Akka httpAn Introduction to Akka http
An Introduction to Akka http
 
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
 
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesUnderstanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
 
Akka and the Zen of Reactive System Design
Akka and the Zen of Reactive System DesignAkka and the Zen of Reactive System Design
Akka and the Zen of Reactive System Design
 
Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)
 
Akka Finite State Machine
Akka Finite State MachineAkka Finite State Machine
Akka Finite State Machine
 
Prolog Visualizer
Prolog VisualizerProlog Visualizer
Prolog Visualizer
 
Microservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with TechnologyMicroservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with Technology
 
Fluent-bit
Fluent-bitFluent-bit
Fluent-bit
 
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
 
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
 
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
 
scalaphx-akka-http
scalaphx-akka-httpscalaphx-akka-http
scalaphx-akka-http
 
A csodák logikája
A csodák logikájaA csodák logikája
A csodák logikája
 
Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion   akka persistence, cqrs%2 fes y otras siglas del montónCodemotion   akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
 

Recently uploaded

Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 

Recently uploaded (20)

Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 

Akka Persistence and Eventuate