Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
From C to Q,
one Event at a time
1
Lorenzo Nicora
OpenCredo
Event Sourcing illustrated
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
Lorenzo Nicora
@nicusX
lorenzo.nicora@opencredo.com
https://opencredo.com/author/lorenzo/
Senior Consultant @ OpenCredo
• Microservices
• Cloud
• Event-driven, Event Sourcing, Reactive
• Java, Spring, Akka…
2
3
Concepts from DDD
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
Aggregate
Event Sourcing,CQRS => DDD/
State: f(t)
Domain Event
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 4
Once upon a time…
Everything was Synchronous
Request <-> Response
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 5
Scaling out…
Updates —> Locks —> Contention!
<— Block! <—
-> Distributed

still Synchronous
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 6
Let’s go Asynchronous
-> Distributed & Message-driven
Request/Response ACID Transactions
• Distributed: Propagation takes time
• Async: No global order strictly guaranteed
Updates applied in the wrong order
=> Inconsistent state!
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 7
Command Sourcing
💡
• Append Only —> No Contention, No Update
• Build State from Commands history
K/V Store
Distributed
Command
“Submit this Order! (Please)”
-> A request (imperative sentence)
-> May fail, be rejected
-> May affect multiple Aggregates
8
Commands
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
✉
Rebuild Aggregate State 

from Commands
9
Events
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
Event
“Order submitted”
-> Statement of facts (past tense)
-> Never fails
-> Can’t be changed
-> May be designed 

to affect a single Aggregate
✉
Rebuild Aggregate State 

from Events
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 10
Command > Event Sourcing
💡
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 11
Commands to Events
X
Y
Z
?
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 12
(Business) Consistency
(ACID) Transactions
Eventual (Business) Consistency
Guess —> Compensate—> Apologies
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 13
e.g. Saga
Stateful
Out of band
Corrective Action

(Command / Event)
Saga
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
–Greg Young
“Accountants don’t use pencils.
They use pens”
Corrective Actions
14
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 15
Benefits of Event Sourcing
History
(for free)
Rebuild State 

at a point in Time
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 16
Benefits of Event Sourcing
Easier

Eventual Business Consistency
—> Corrective Events
Robust to data corruption
(bugs, malicious, fat fingers…)
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 17
Benefits of Event Sourcing
Horizontal Scalability
&

Low Latency writes
-> Distributed systems & data store
—> Append-only Log
—> Asynchronous processing
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
18
Commands to Events
Stateful: Events depends 0n current State
Stateless: Validate, split by Aggregate…
Depends on
Business
Domain
x Point of synchronisation

? Out-of-order commands (IoT, Mobile)
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 19
Thinking fast or slow
Stateless:

Think fast,
Write fast,
More thinking later
Stateful:

Think slow…(rebuild state),
Write fast,
Less thinking later
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
What about reads?
20
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 21
Retrieving the State
How do I retrieve the State?
“Get details of Order ‘AB123’”
❔
not very efficient, but…
…may work
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 22
Querying (Searching) the State
❓ How do query the State?
“Get all Orders delivered to ‘SE1 0NZ’”
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 23
CQRS
Command
Query
Responsibility
Segregation
💡
Separate
• Code
• muService
• Datastore
-> Update
-—> Retrieve
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 24
Not a new idea
Specialised
Downstream
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 25
CQRS and Event Sourcing
for low-latency writes
Event Sourcing => CQRS
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 26
Materialised Views
• In Memory

K/V Store

Graph DB

RDBMS

• Rebuildable

from Events
💡
a.k.a.
Read-optimised Views
Read Views
Projections…
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 27
Materialised Views
* Views are optimised for 

specific query use cases
—> multiple Views from same Events
* May be updated asynchronously
+ low latency writes, scalability
- delayed
+ may reorder Events
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 28
Materialised Views
The Event Log
is your Source of Truth
* Easy to evolve or fix
—> change or fix logic;
rebuild view from events
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 29
Indexes
• Search Engines

K/V Stores

Graph DB
+ Optimised for querying (less for retrieving)
+ Reduced delay of State
💡
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 30
Hybrid solutions: e.g. Snapshots
+ Speed up rebuilding the State
+ Use recent Events to rebuild up-to-date
💡 Long delayed
Distributed + Asynchronous system

Distributed ACID Transactions (2PC)
31
No Global Current State
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
AS
S
A
B
Information propagates 

at a finite speed
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 32
Lesson

from the Trenches
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 33
Lesson Learned #1
If you put data in…
…you will eventually

have to get them out!
The “Query” side 

is not secondary
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 34
Lessons Learned #2
In old days:

normalising one DB 

to support as many queries as possible
With CQRS (also No SQL in general) 

multiple denormalised “data stores”

optimised for different queries
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 35
Lessons Learned #3
Centralised Event Store

= Event-sourced monolith
Each microservice owns its state

(Event Store)
Microservices:
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
+++ Summing up +++
36
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 37
ES/CQRS Optimal Use Cases
• High Volume, Low Latency writes
• Out-of-order Commands (IoT, Mobile)
Event Sourcing + CQRS 😋
Domain: stateless Command-> Event
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 38
ES/CQRS Drawbacks
x No “One-Size-Fits-All”

—> Multiple “Q” implementations
x Delayed reads
x No ACID Transactions
x Additional complexity (!!!)
🙁
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 39
ES/CQRS Benefits
+ No “One-Size-Fits-All”
—> “Q” optimised per use cases
+ Distributed systems (Microservices)
+ Eventual (Business) Consistency
+ History, Temporal queries
+ Robust to data corruption
😀
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
That’s all, Folks!
40
Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX
??? Questions ???
41
Thanks.
⏳

More Related Content

PDF
From C to Q, one event at the time: Event sourcing illustrated [Voxxed Ticino...
PDF
Event sourcing for IoT and mobile - JAX London 2017
PDF
A visual introduction to Event Sourcing and CQRS
PDF
Event Sourcing in an Eventually Consistent World
PDF
Write fast, think later - Event sourcing for IoT and Mobile
PDF
How bitcoin and blockchains really work
PDF
Reactive Principles and Microservices
PDF
DDD patterns that were not in the book
From C to Q, one event at the time: Event sourcing illustrated [Voxxed Ticino...
Event sourcing for IoT and mobile - JAX London 2017
A visual introduction to Event Sourcing and CQRS
Event Sourcing in an Eventually Consistent World
Write fast, think later - Event sourcing for IoT and Mobile
How bitcoin and blockchains really work
Reactive Principles and Microservices
DDD patterns that were not in the book

Viewers also liked (20)

PDF
Transactions redefined
PDF
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
PDF
CQRS and Event Sourcing in a Symfony application
PDF
Techniques d'accélération des pages web
PDF
Get Soaked - An In Depth Look At PHP Streams
PDF
Diving deep into twig
ODP
Elastic Searching With PHP
PDF
Automation using-phing
ODP
PHP5.5 is Here
PPTX
Electrify your code with PHP Generators
PDF
The quest for global design principles (SymfonyLive Berlin 2015)
PDF
Top tips my_sql_performance
PDF
Mocking Demystified
PDF
Why elasticsearch rocks!
PDF
Understanding Craftsmanship SwanseaCon2015
PDF
Writing infinite scalability web applications with PHP and PostgreSQL
PDF
Si le tdd est mort alors pratiquons une autopsie mix-it 2015
PDF
L'ABC du BDD (Behavior Driven Development)
PDF
TDD with PhpSpec - Lone Star PHP 2016
PDF
Behat 3.0 meetup (March)
Transactions redefined
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
CQRS and Event Sourcing in a Symfony application
Techniques d'accélération des pages web
Get Soaked - An In Depth Look At PHP Streams
Diving deep into twig
Elastic Searching With PHP
Automation using-phing
PHP5.5 is Here
Electrify your code with PHP Generators
The quest for global design principles (SymfonyLive Berlin 2015)
Top tips my_sql_performance
Mocking Demystified
Why elasticsearch rocks!
Understanding Craftsmanship SwanseaCon2015
Writing infinite scalability web applications with PHP and PostgreSQL
Si le tdd est mort alors pratiquons une autopsie mix-it 2015
L'ABC du BDD (Behavior Driven Development)
TDD with PhpSpec - Lone Star PHP 2016
Behat 3.0 meetup (March)
Ad

Similar to From C to Q one event at a time: Event Sourcing illustrated (20)

PPTX
Purple seven-ntxissacsc5 walcutt
PDF
A Visual Introduction to Event Sourcing and CQRS by Lorenzo Nicora
PDF
An Introduction to event sourcing and CQRS
PPTX
.NET Fest 2017. Денис Резник. Исполнение Запроса в SQL Server. Ожидание - Реа...
PDF
Managing the network of networks
PDF
ETW - Monitor Anything, Anytime, Anywhere (NDC Oslo 2017)
PPTX
Ntxissacsc5 blue 5-holistic approach to cybersecurity-abu_sadeq
PPTX
Sizing MongoDB Clusters
PDF
MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...
PPTX
Cisco and Splunk: Under the Hood of Cisco IT Breakout Session
PPTX
Ntxissacsc5 purple 5-insider threat-_andy_thompson
PDF
Ontology of citizen science @ Siena 2016 11 24
PPTX
Sizing Your MongoDB Cluster
PPTX
Ntxissacsc5 blue 4-the-attack_life_cycle_erich_mueller
PPTX
Ntxissacsc5 yellow 1-beginnerslinux bill-petersen
PDF
Scylla Summit 2022: Stream Processing with ScyllaDB
PPTX
UKSG webinar: Blockchain in research and education with Martin Hamilton, Jisc
PDF
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
PPTX
Ntxissacsc5 blue 2-herding cats and security tools-harold_toomey
PDF
DNSSEC Deployment for .VN and share information of DNSSEC's plan in 2017
Purple seven-ntxissacsc5 walcutt
A Visual Introduction to Event Sourcing and CQRS by Lorenzo Nicora
An Introduction to event sourcing and CQRS
.NET Fest 2017. Денис Резник. Исполнение Запроса в SQL Server. Ожидание - Реа...
Managing the network of networks
ETW - Monitor Anything, Anytime, Anywhere (NDC Oslo 2017)
Ntxissacsc5 blue 5-holistic approach to cybersecurity-abu_sadeq
Sizing MongoDB Clusters
MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...
Cisco and Splunk: Under the Hood of Cisco IT Breakout Session
Ntxissacsc5 purple 5-insider threat-_andy_thompson
Ontology of citizen science @ Siena 2016 11 24
Sizing Your MongoDB Cluster
Ntxissacsc5 blue 4-the-attack_life_cycle_erich_mueller
Ntxissacsc5 yellow 1-beginnerslinux bill-petersen
Scylla Summit 2022: Stream Processing with ScyllaDB
UKSG webinar: Blockchain in research and education with Martin Hamilton, Jisc
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
Ntxissacsc5 blue 2-herding cats and security tools-harold_toomey
DNSSEC Deployment for .VN and share information of DNSSEC's plan in 2017
Ad

Recently uploaded (20)

PDF
Microsoft Office 365 Crack Download Free
PDF
Topaz Photo AI Crack New Download (Latest 2025)
PDF
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
PDF
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
PPTX
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
PDF
BoxLang Dynamic AWS Lambda - Japan Edition
PDF
Practical Indispensable Project Management Tips for Delivering Successful Exp...
PPTX
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
PDF
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PDF
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
DOC
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
PPTX
Matchmaking for JVMs: How to Pick the Perfect GC Partner
PPTX
Tech Workshop Escape Room Tech Workshop
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PDF
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
PDF
iTop VPN Crack Latest Version Full Key 2025
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PPTX
Python is a high-level, interpreted programming language
Microsoft Office 365 Crack Download Free
Topaz Photo AI Crack New Download (Latest 2025)
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
BoxLang Dynamic AWS Lambda - Japan Edition
Practical Indispensable Project Management Tips for Delivering Successful Exp...
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
Matchmaking for JVMs: How to Pick the Perfect GC Partner
Tech Workshop Escape Room Tech Workshop
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
How to Use SharePoint as an ISO-Compliant Document Management System
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
iTop VPN Crack Latest Version Full Key 2025
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
Python is a high-level, interpreted programming language

From C to Q one event at a time: Event Sourcing illustrated

  • 1. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX From C to Q, one Event at a time 1 Lorenzo Nicora OpenCredo Event Sourcing illustrated
  • 2. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX Lorenzo Nicora @nicusX lorenzo.nicora@opencredo.com https://opencredo.com/author/lorenzo/ Senior Consultant @ OpenCredo • Microservices • Cloud • Event-driven, Event Sourcing, Reactive • Java, Spring, Akka… 2
  • 3. 3 Concepts from DDD Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX Aggregate Event Sourcing,CQRS => DDD/ State: f(t) Domain Event
  • 4. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 4 Once upon a time… Everything was Synchronous Request <-> Response
  • 5. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 5 Scaling out… Updates —> Locks —> Contention! <— Block! <— -> Distributed
 still Synchronous
  • 6. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 6 Let’s go Asynchronous -> Distributed & Message-driven Request/Response ACID Transactions • Distributed: Propagation takes time • Async: No global order strictly guaranteed Updates applied in the wrong order => Inconsistent state!
  • 7. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 7 Command Sourcing 💡 • Append Only —> No Contention, No Update • Build State from Commands history K/V Store Distributed
  • 8. Command “Submit this Order! (Please)” -> A request (imperative sentence) -> May fail, be rejected -> May affect multiple Aggregates 8 Commands Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX ✉ Rebuild Aggregate State 
 from Commands
  • 9. 9 Events Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX Event “Order submitted” -> Statement of facts (past tense) -> Never fails -> Can’t be changed -> May be designed 
 to affect a single Aggregate ✉ Rebuild Aggregate State 
 from Events
  • 10. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 10 Command > Event Sourcing 💡
  • 11. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 11 Commands to Events X Y Z ?
  • 12. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 12 (Business) Consistency (ACID) Transactions Eventual (Business) Consistency Guess —> Compensate—> Apologies
  • 13. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 13 e.g. Saga Stateful Out of band Corrective Action
 (Command / Event) Saga
  • 14. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX –Greg Young “Accountants don’t use pencils. They use pens” Corrective Actions 14
  • 15. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 15 Benefits of Event Sourcing History (for free) Rebuild State 
 at a point in Time
  • 16. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 16 Benefits of Event Sourcing Easier
 Eventual Business Consistency —> Corrective Events Robust to data corruption (bugs, malicious, fat fingers…)
  • 17. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 17 Benefits of Event Sourcing Horizontal Scalability &
 Low Latency writes -> Distributed systems & data store —> Append-only Log —> Asynchronous processing
  • 18. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 18 Commands to Events Stateful: Events depends 0n current State Stateless: Validate, split by Aggregate… Depends on Business Domain x Point of synchronisation
 ? Out-of-order commands (IoT, Mobile)
  • 19. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 19 Thinking fast or slow Stateless:
 Think fast, Write fast, More thinking later Stateful:
 Think slow…(rebuild state), Write fast, Less thinking later
  • 20. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX What about reads? 20
  • 21. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 21 Retrieving the State How do I retrieve the State? “Get details of Order ‘AB123’” ❔ not very efficient, but… …may work
  • 22. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 22 Querying (Searching) the State ❓ How do query the State? “Get all Orders delivered to ‘SE1 0NZ’”
  • 23. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 23 CQRS Command Query Responsibility Segregation 💡 Separate • Code • muService • Datastore -> Update -—> Retrieve
  • 24. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 24 Not a new idea Specialised Downstream
  • 25. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 25 CQRS and Event Sourcing for low-latency writes Event Sourcing => CQRS
  • 26. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 26 Materialised Views • In Memory
 K/V Store
 Graph DB
 RDBMS
 • Rebuildable
 from Events 💡 a.k.a. Read-optimised Views Read Views Projections…
  • 27. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 27 Materialised Views * Views are optimised for 
 specific query use cases —> multiple Views from same Events * May be updated asynchronously + low latency writes, scalability - delayed + may reorder Events
  • 28. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 28 Materialised Views The Event Log is your Source of Truth * Easy to evolve or fix —> change or fix logic; rebuild view from events
  • 29. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 29 Indexes • Search Engines
 K/V Stores
 Graph DB + Optimised for querying (less for retrieving) + Reduced delay of State 💡
  • 30. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 30 Hybrid solutions: e.g. Snapshots + Speed up rebuilding the State + Use recent Events to rebuild up-to-date 💡 Long delayed
  • 31. Distributed + Asynchronous system
 Distributed ACID Transactions (2PC) 31 No Global Current State Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX AS S A B Information propagates 
 at a finite speed
  • 32. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 32 Lesson
 from the Trenches
  • 33. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 33 Lesson Learned #1 If you put data in… …you will eventually
 have to get them out! The “Query” side 
 is not secondary
  • 34. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 34 Lessons Learned #2 In old days:
 normalising one DB 
 to support as many queries as possible With CQRS (also No SQL in general) 
 multiple denormalised “data stores”
 optimised for different queries
  • 35. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 35 Lessons Learned #3 Centralised Event Store
 = Event-sourced monolith Each microservice owns its state
 (Event Store) Microservices:
  • 36. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX +++ Summing up +++ 36
  • 37. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 37 ES/CQRS Optimal Use Cases • High Volume, Low Latency writes • Out-of-order Commands (IoT, Mobile) Event Sourcing + CQRS 😋 Domain: stateless Command-> Event
  • 38. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 38 ES/CQRS Drawbacks x No “One-Size-Fits-All”
 —> Multiple “Q” implementations x Delayed reads x No ACID Transactions x Additional complexity (!!!) 🙁
  • 39. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX 39 ES/CQRS Benefits + No “One-Size-Fits-All” —> “Q” optimised per use cases + Distributed systems (Microservices) + Eventual (Business) Consistency + History, Temporal queries + Robust to data corruption 😀
  • 40. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX That’s all, Folks! 40
  • 41. Voxxed Days Bristol 2017 Lorenzo Nicora - @nicusX ??? Questions ??? 41 Thanks. ⏳