SlideShare a Scribd company logo
1 of 165
Download to read offline
How Events
Are Reshaping
Modern Systems
Jonas Bonér
@jboner
Why Events?
1. Events drive autonomy
2. Events help reduce risk
3. Events help you move faster
4. Events Increase Loose coupling
5. Events increase stability
6. Events increase scalability
7. Events increase resilience
8. Events increase traceability
9. Events allow for time-travel
Why Should you care?
1. Cloud and multicore architectures
2. Microservices and distributed systems
3. Data-centric applications
4. “We want more, of everything, and we
want it now.” - Your Customers
Why Now?
1. Cloud and multicore architectures
2. Microservices and distributed systems
3. Data-centric applications
4. “We want more, of everything, and we
want it now.” - Your Customers
Do Not Settle For
Microliths
Do Not Settle For
Microliths
“Event-Driven Architecture (EDA) is a design paradigm
in which a software component executes in response
to receiving one or more event notifications.”
- Gartner
Event Driven
Architecture
To The Rescue
What is an
Event?
Event
“Something that happens.”
- Merriam Webster
The Nature of Events
✴Events represent Facts of information
➡ Facts are immutable
➡ Facts Accrue - Knowledge can only grow
The Nature of Events
✴Events represent Facts of information
➡ Facts are immutable
➡ Facts Accrue - Knowledge can only grow
✴ Events/Facts can be disregarded/Ignored
The Nature of Events
✴Events represent Facts of information
➡ Facts are immutable
➡ Facts Accrue - Knowledge can only grow
✴ Events/Facts can be disregarded/Ignored
✴ Events/Facts Can not be retracted (once accepted)
The Nature of Events
✴Events represent Facts of information
➡ Facts are immutable
➡ Facts Accrue - Knowledge can only grow
✴ Events/Facts can be disregarded/Ignored
✴ Events/Facts Can not be retracted (once accepted)
✴ Events/Facts Can not be deleted (once accepted)
➡ Might be needed for legal or moral reasons
The Nature of Events
✴Events represent Facts of information
➡ Facts are immutable
➡ Facts Accrue - Knowledge can only grow
✴ Events/Facts can be disregarded/Ignored
✴ Events/Facts Can not be retracted (once accepted)
✴ Events/Facts Can not be deleted (once accepted)
➡ Might be needed for legal or moral reasons
✴ Events/Facts (new) can invalidate existing Facts
The Nature of Events
Event Loop
What Makes Event Tick
✴ Queue + anonymous Callbacks
✴ The Hollywood principle
✴ At-Most-Once delivery guarantees
✴ Local context only
✴ Sync or AsynC
✴ Limited and quite powerless
The Event Loop
✴ Queue + anonymous Callbacks
✴ The Hollywood principle
✴ At-Most-Once delivery guarantees
✴ Local context only
✴ Sync or AsynC
✴ Limited and quite powerless
The Event Loop
*
* Too limited as a general model of computation, and programming model for modern distributed systems. But is a useful building block.
✴ Ephemeral and anonymous
✴ No sane failure model
Error Channel - console.log(‘4/0=err’, err)
✴ No composition
Signature: Input => Side-effect - (Any => Unit)
✴ Hard to Debug
✴ Hard to reason about
✴ Leads to Callback hell
The Problem With
Event Callbacks
https://techbrunch.gousto.co.uk/2016/04/22/callback-hell/
✴Patterns
Observer, Pub-Sub, Broadcast, …
✴Futures & PRomises
✴Dataflow Variables
✴Stream Processing
✴ Event-driven Microservices
✴ FaaS
We Need High Level
Abstractions
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Network Boundary
Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Network Boundary
Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Network Boundary
Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Network Boundary
Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Network Boundary
Event 1Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Local Event Loop
Network Boundary
Event 1Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Local Event Loop
Distribution Fabric
Network Boundary
Event 1Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Local Event Loop
Distribution Fabric Distribution Fabric
Network Boundary
Message Passing
Event 1Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Local Event Loop
Distribution Fabric
Local Event Loop
Distribution Fabric
Network Boundary
Message Passing
Event 1Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Local Event Loop
Distribution Fabric
Local Event Loop
Distribution Fabric
Network Boundary
Message Passing
Event 1Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Local Event Loop
Distribution Fabric
Local Event Loop
Distribution Fabric
Network Boundary
Message Passing
Event 1 Event 1Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Local Event Loop
Distribution Fabric
Local Event Loop
Distribution Fabric
Network Boundary
Message Passing
Event 1 Event 1
Reactive Systems is doing the heavy lifting
Ladder of
abstraction
Unified Event Driven Abstractions
Powered By
Message Driven Fabric
Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…)
Local Event Loop
Distribution Fabric
Local Event Loop
Distribution Fabric
Network Boundary
Message Passing
Event 1 Event 1
Reactive Systems is doing the heavy lifting
Ladder of
abstraction Reactive Programming
1. REceive and react to facts (or not), that
are coming its way
2. Publish new facts (as events) to the rest
of the world
3. Invert the control flow to minimize
coupling and increase autonomy
Event Driven
Services
Mutable State
Needs To Be
Contained
And Non Observable
Publish Facts
To Outside World
Event
Stream
Event
Stream
Use The
as the integration fabric
Event Driven
Services
Event Driven
Services
Event Driven
Services
Command
Event Driven
Services
Command
Event Driven
Services
Command
Event Driven
Services
Command
Event
Event Stream
Event Driven
Services
Command
Event
EventEvent
Event Stream
Event Driven
Services
Command
Event
EventEvent
Event Stream
Event Driven
Services
Command
Event
EventEvent
Event Stream
Event Driven
Services
Command
Event
EventEvent
Event Stream
Event Driven
Services
Command
Event
EventEvent
Event Stream
Event Driven
Services
Eventual
Consistency
Command
Event
EventEvent
Event Stream
Event Driven
Services
Eventual
Consistency
Command
Event
EventEvent
Event Stream
Eventual
Consistency
Eventual
Consistency
No One Wants
It’s a necessery evil
But Relax
It Is How The
World Works
Information
Has Latency
Information Is Always
From the Past
Welcome To The Wild Ocean Of
Non Determinism
Distributed Systems
“In a system which cannot count on
distributed transactions, the
management of uncertainty must be
implemented in the business logic.”
- Pat Helland
Life Beyond Distributed Transactions - An Apostate’s Opinion, Pat Helland (2007)
We Need To Model
Uncertainty
Exploit
Reality
Exploit
Reality
We need to
In our design
Events Can Lead To Greater
Certainty
Events Can Help Us Craft
Autonomous Islands
Of Determinism
What does it mean to be
Automonous?
From greek: Auto-nomos
✴ Auto meaning self
✴ Nomos meaning Law
Autonomy
Promise
Theory
Promise
Theory
Let
Lead the way
✴Impositions diverge
into unpredictable outcomes
from definite beginnings
Distributed information
Decreased certainty
Convergence
vs.
Divergence
of information
✴Promises converge
towards a definite outcome
from unpredictable beginnings
Local information
Improved certainty
“Autonomy makes information local,
leading to greater certainty and stability.”
“An autonomus component can only
promise its own behavior.”
- Mark Burgess
In Search of Certainty, Thinking in Promises - Mark Burgess
Benefits of Thinking in Promises
✴ If a service only promises its own behavior
Then all information needed to
➡ Resolve a conflict
➡ Repair under failure
➡ Is available within the service itself
Benefits of Thinking in Promises
✴ If a service only promises its own behavior
Then all information needed to
➡ Resolve a conflict
➡ Repair under failure
➡ Is available within the service itself
✴ Promises remove the need for needless
1. Communication
2. Coordination
3. Consensus
Benefits of Thinking in Promises
“The first principle of successful
scalability is to batter the consistency
mechanisms down to a minimum.”
- James Hamilton
As transcribed in: Toward a Cloud Computing Research Agenda. SIGACT News, 40(2):68–80, June 2009.
Events First Design
Drives Autonomy
Events First
Domain Driven
Design
“When you start modeling events, it
forces you to think about the behavior
of the system. As opposed to thinking
about the structure of the system.”
- Greg Young
A Decade of DDD, CQRS, Event Sourcing, Greg Young (Presentation from 2016)
✴ Don’t focus on the things
The Nouns
The Domain Objects
✴ Focus on what happens
The Verbs
The Events
Mine the
Facts
Event Storming
Event Driven Design
✴ IntentS
➡ Communication
➡ Conversations
➡ Expectations
➡ Contracts
➡ Control Transfer
Event Driven Design
✴ IntentS
➡ Communication
➡ Conversations
➡ Expectations
➡ Contracts
➡ Control Transfer
Event Driven Design
✴ Facts
➡ State
➡ History
➡ Causality
➡ Notifications
➡ State Transfer
✴ IntentS
➡ Communication
➡ Conversations
➡ Expectations
➡ Contracts
➡ Control Transfer
Event Driven Design
✴ Facts
➡ State
➡ History
➡ Causality
➡ Notifications
➡ State Transfer
Commands
✴ IntentS
➡ Communication
➡ Conversations
➡ Expectations
➡ Contracts
➡ Control Transfer
Event Driven Design
✴ Facts
➡ State
➡ History
➡ Causality
➡ Notifications
➡ State Transfer
Commands Events
Event Driven Design
✴Commands
➡ Object form of method/Action request
➡ Imperative: CreateOrder, ShipProduct
Event Driven Design
✴Commands
➡ Object form of method/Action request
➡ Imperative: CreateOrder, ShipProduct
✴Reactions
➡ Represents side-effects
Event Driven Design
✴Commands
➡ Object form of method/Action request
➡ Imperative: CreateOrder, ShipProduct
✴Reactions
➡ Represents side-effects
✴Events
➡ Represents something that has happened
➡ Past-tense: OrderCreated, ProductShipped
Event Driven Design
Commands Eventsvs
Commands Eventsvs
1. All about intent 1. Intentless
Commands Eventsvs
1. All about intent
2. Directed
1. Intentless
2. Anonymous
Commands Eventsvs
1. All about intent
2. Directed
3. Single addressable
destination
1. Intentless
2. Anonymous
3. Just happens - for
others (0-N) to observe
Commands Eventsvs
1. All about intent
2. Directed
3. Single addressable
destination
4. Models personal
communication
1. Intentless
2. Anonymous
3. Just happens - for
others (0-N) to observe
4. Models broadcast
(speakers corner)
Commands Eventsvs
1. All about intent
2. Directed
3. Single addressable
destination
4. Models personal
communication
5. Distributed focus
1. Intentless
2. Anonymous
3. Just happens - for
others (0-N) to observe
4. Models broadcast
(speakers corner)
5. Local focus
Commands Eventsvs
1. All about intent
2. Directed
3. Single addressable
destination
4. Models personal
communication
5. Distributed focus
6. Command & Control
1. Intentless
2. Anonymous
3. Just happens - for
others (0-N) to observe
4. Models broadcast
(speakers corner)
5. Local focus
6. Autonomy
Let the Events Define the
Bounded Context
Principles For
Promise Theory Driven
Protocol Design
1. Convergency
Promises should reach a desired state,
a stable outcome - idempotent behavior
Principles For
Promise Theory Driven
Protocol Design
1. Convergency
Promises should reach a desired state,
a stable outcome - idempotent behavior
2. Embracing Failure
Expect things to go wrong
Promises may or may not be kept
Principles For
Promise Theory Driven
Protocol Design
1. Convergency
Promises should reach a desired state,
a stable outcome - idempotent behavior
2. Embracing Failure
Expect things to go wrong
Promises may or may not be kept
3. Autonomy
You can’t rely on other services
Principles For
Promise Theory Driven
Protocol Design
✴ Maintains Integrity & consistency
✴ Is our Unit of Consistency
✴ Is our Unit of Failure
✴ Is our Unit of Determinism
✴ Is fully Autonomous
The Aggregate
Enough Talk
Show Me The
Code
Sample in Java: https://gist.github.com/jboner/4361c710d2e2386be8bddc39edb0528a
Sample in Scala: https://gist.github.com/jboner/dea4aa819e127d543d684208d74081b5
Enough Talk
Show Me The
Code
Sample in Java: https://gist.github.com/jboner/4361c710d2e2386be8bddc39edb0528a
Sample in Scala: https://gist.github.com/jboner/dea4aa819e127d543d684208d74081b5
Are we done now?
Are we done now?
Perhaps. We have come a long way.
Are we done now?
Perhaps. We have come a long way.
But events can also be used for:
Are we done now?
Perhaps. We have come a long way.
But events can also be used for:
➡ Persistence
Are we done now?
Perhaps. We have come a long way.
But events can also be used for:
➡ Persistence
➡ Managing time
Event Based
Persistence
“Update-in-place strikes systems
designers as a cardinal sin: it violates
traditional accounting practices that have
been observed for hundreds of years.”
- jim Gray
The Transaction Concept, Jim Gray (1981)
Event Logging
The Bedrock
Event Sourcing
A Cure For the Cardinal Sin
“The truth is the log.
The database is a cache
of a subset of the log.”
- Pat Helland
Immutability Changes Everything, Pat Helland (2015)
Event
Sourced
Services
Happy Path
Event
Sourced
Services
Happy Path
Event
Sourced
Services
1) Receive and verify Command
(“ApprovePayment”)
Happy Path
Event
Sourced
Services
2) Create new Event
(“PaymentApproved”)
1) Receive and verify Command
(“ApprovePayment”)
Happy Path
Event
Sourced
Services
2) Create new Event
(“PaymentApproved”)
1) Receive and verify Command
(“ApprovePayment”)
3) Append Event
to Event Log
Happy Path
Event
Sourced
Services
2) Create new Event
(“PaymentApproved”)
1) Receive and verify Command
(“ApprovePayment”)
3) Append Event
to Event Log
4) Update internal
component state
Happy Path
Event
Sourced
Services
5) Run side-effects
(approve the payment)
2) Create new Event
(“PaymentApproved”)
1) Receive and verify Command
(“ApprovePayment”)
3) Append Event
to Event Log
4) Update internal
component state
SAD Path - recovering from failure
Happy Path
Event
Sourced
Services
5) Run side-effects
(approve the payment)
2) Create new Event
(“PaymentApproved”)
1) Receive and verify Command
(“ApprovePayment”)
3) Append Event
to Event Log
4) Update internal
component state
SAD Path - recovering from failure
Happy Path
Event
Sourced
Services
5) Run side-effects
(approve the payment)
2) Create new Event
(“PaymentApproved”)
1) Receive and verify Command
(“ApprovePayment”)
3) Append Event
to Event Log
4) Update internal
component state
1) Rehydrate Events
from Event Log
SAD Path - recovering from failure
Happy Path
Event
Sourced
Services
5) Run side-effects
(approve the payment)
2) Create new Event
(“PaymentApproved”)
1) Receive and verify Command
(“ApprovePayment”)
3) Append Event
to Event Log
4) Update internal
component state
1) Rehydrate Events
from Event Log
2) Update internal
component state
SAD Path - recovering from failure
Happy Path
Event
Sourced
Services
5) Run side-effects
(approve the payment)
2) Create new Event
(“PaymentApproved”)
1) Receive and verify Command
(“ApprovePayment”)
3) Append Event
to Event Log
4) Update internal
component state
1) Rehydrate Events
from Event Log
2) Update internal
component state
Memory Image
Event Sourcing
✴ One single Source of Truth with All history
✴ Allows for Memory Image - durable in-memory state
✴ Avoids the Object-relational mismatch
✴ Allows others to Subscribe to state changes
✴ Mechanical sympathy (Single Writer Principle etc.)
✴ Unfamiliar model
✴ Versioning of events
✴ Deletion of events (legal or moral reasons)
Disadvantages
Of Using Event Sourcing
EventsAllow Us To Manage
Time
“Modeling events forces you to have a temporal
focus on what’s going on in the system.
Time becomes a crucial factor of the system.”
- Greg Young
A Decade of DDD, CQRS, Event Sourcing, Greg Young (Presentation from 2016)
But, What is Time
Really?
Causality
How We Make Sense Of The World
Time Is the Succession Of
Causally Related Events
✴ Event is a snapshot in time
✴ Event ID is an index for time
✴ Event Log is our full history
The database of Our past
The path to Our present
Event Sourcing
Allows Us To
Model Time
Event Sourcing
Allows For
Time Travel
Event Sourcing
Allows For
Time Travel
Event Sourcing
Allows For
Time Travel
✴Replay the log for historic debugging
✴Replay the log for auditing & traceability
✴Replay the log on failure
✴Replay the log for replication
“The future is a function of the past.”
- A. P. Robertson
“The (local) present is a merge function
of multiple concurrent pasts.”
- me
val newLocalPresent = observedPasts.
foldLeft(oldLocalPresent) { _ merge _ }
We need to explicitly model the
local present as
facts derived from the
merging of multiple
concurrent pasts
We Can Even Fork the Past
...Or Join Two Distinct Pasts
Let Make Our Demo
Event Sourced
Untangle Your
Read and Write Models
With CQRS
CQRS
CQRS
CQRS
Write Side Model
Commands
CQRS
Write Side Model
Write to Event Log
Commands
CQRS
Write Side Model
Events
Write to Event Log
Commands
CQRS
Write Side Model
Events
Events
Write to Event Log
Commands
CQRS
Read Side Model
Write Side Model
Events
Events
Read Data Store
Write to Event Log
Commands
CQRS
Read Side Model
Write Side Model
Events
Queries
Events
Read Data Store
Write to Event Log
Commands
CQRS
Read Side Model
Write Side Model
Events
Queries
Events
Read Data Store
Write to Event Log
Eventual
Consistency
Commands
✴ Temporal Decoupling
✴ Increased Resilience
✴ Increased Scalability
✴ Allows for Multiple Event subscribers
✴ Allows for Polyglot Persistence
Advantages
Of Using CQRS
✴ More infrastructure to manage
✴ 2 data models (or more) to maintain
✴ Eventual Consistency
Disadvantages
Of Using CQRS
Key Takeaways
Key Takeaways
Event driven design helps you to:
✴ Design autonomous services
✴ Move Faster towards a Reactive architecture
✴ reduce risk when modernizing applications
✴ Balance Certainty and Uncertainty
Key Takeaways
Event driven design helps you to:
✴ Design autonomous services
✴ Move Faster towards a Reactive architecture
✴ reduce risk when modernizing applications
✴ Balance Certainty and Uncertainty
Event Logging allows you to:
✴ take control of your system’s history
✴ time-travel
✴ Balance Strong and eventual consistency
Learn More
Download my latest book for free at:
bit.ly/reactive-microsystems

More Related Content

What's hot

Etsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureEtsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureDan McKinley
 
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...Nicolas Fränkel
 
NoSQL Databases
NoSQL DatabasesNoSQL Databases
NoSQL DatabasesBADR
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 
Handling Billions of Edges in a Graph Database
Handling Billions of Edges in a Graph DatabaseHandling Billions of Edges in a Graph Database
Handling Billions of Edges in a Graph DatabaseArangoDB Database
 
Introduction to NOSQL databases
Introduction to NOSQL databasesIntroduction to NOSQL databases
Introduction to NOSQL databasesAshwani Kumar
 
Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL DatabasesDerek Stainer
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & FeaturesDataStax Academy
 
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...Simplilearn
 
Raspberry Pi - Lecture 3 Embedded Communication Protocols
Raspberry Pi - Lecture 3 Embedded Communication ProtocolsRaspberry Pi - Lecture 3 Embedded Communication Protocols
Raspberry Pi - Lecture 3 Embedded Communication ProtocolsMohamed Abdallah
 
Type Theory and Practical Application
Type Theory and Practical ApplicationType Theory and Practical Application
Type Theory and Practical ApplicationJack Fox
 
A pattern language for microservices (#gluecon #gluecon2016)
A pattern language for microservices (#gluecon #gluecon2016)A pattern language for microservices (#gluecon #gluecon2016)
A pattern language for microservices (#gluecon #gluecon2016)Chris Richardson
 
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeSIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeElectronic Arts / DICE
 
Tech Talk - Overview of Dash framework for building dashboards
Tech Talk - Overview of Dash framework for building dashboardsTech Talk - Overview of Dash framework for building dashboards
Tech Talk - Overview of Dash framework for building dashboardsAppsilon Data Science
 
DNS Security Presentation ISSA
DNS Security Presentation ISSADNS Security Presentation ISSA
DNS Security Presentation ISSASrikrupa Srivatsan
 

What's hot (20)

Etsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureEtsy Activity Feeds Architecture
Etsy Activity Feeds Architecture
 
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
 
Infinispan for Dummies
Infinispan for DummiesInfinispan for Dummies
Infinispan for Dummies
 
NoSQL Databases
NoSQL DatabasesNoSQL Databases
NoSQL Databases
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
Handling Billions of Edges in a Graph Database
Handling Billions of Edges in a Graph DatabaseHandling Billions of Edges in a Graph Database
Handling Billions of Edges in a Graph Database
 
Introduction to NOSQL databases
Introduction to NOSQL databasesIntroduction to NOSQL databases
Introduction to NOSQL databases
 
NoSQL
NoSQLNoSQL
NoSQL
 
Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL Databases
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & Features
 
Graph database
Graph database Graph database
Graph database
 
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
Apache Spark Architecture | Apache Spark Architecture Explained | Apache Spar...
 
Nosql data models
Nosql data modelsNosql data models
Nosql data models
 
Raspberry Pi - Lecture 3 Embedded Communication Protocols
Raspberry Pi - Lecture 3 Embedded Communication ProtocolsRaspberry Pi - Lecture 3 Embedded Communication Protocols
Raspberry Pi - Lecture 3 Embedded Communication Protocols
 
Type Theory and Practical Application
Type Theory and Practical ApplicationType Theory and Practical Application
Type Theory and Practical Application
 
Apache Spark Architecture
Apache Spark ArchitectureApache Spark Architecture
Apache Spark Architecture
 
A pattern language for microservices (#gluecon #gluecon2016)
A pattern language for microservices (#gluecon #gluecon2016)A pattern language for microservices (#gluecon #gluecon2016)
A pattern language for microservices (#gluecon #gluecon2016)
 
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeSIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
 
Tech Talk - Overview of Dash framework for building dashboards
Tech Talk - Overview of Dash framework for building dashboardsTech Talk - Overview of Dash framework for building dashboards
Tech Talk - Overview of Dash framework for building dashboards
 
DNS Security Presentation ISSA
DNS Security Presentation ISSADNS Security Presentation ISSA
DNS Security Presentation ISSA
 

Similar to How Events Are Reshaping Modern Systems

Designing Events-first Microservices
Designing Events-first MicroservicesDesigning Events-first Microservices
Designing Events-first MicroservicesJonas Bonér
 
Designing Events-First Microservices
Designing Events-First MicroservicesDesigning Events-First Microservices
Designing Events-First MicroservicesC4Media
 
How Events Are Reshaping Modern Systems
How Events Are Reshaping Modern SystemsHow Events Are Reshaping Modern Systems
How Events Are Reshaping Modern SystemsC4Media
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Rundeck
 
Designing Events-first Microservices
Designing Events-first MicroservicesDesigning Events-first Microservices
Designing Events-first MicroservicesJ On The Beach
 
Vldb 2010 event processing tutorial
Vldb 2010 event processing tutorialVldb 2010 event processing tutorial
Vldb 2010 event processing tutorialOpher Etzion
 
Deconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven DesignDeconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven DesignVMware Tanzu
 
Designing Events-First Microservices For A Cloud Native World
Designing Events-First Microservices For A Cloud Native WorldDesigning Events-First Microservices For A Cloud Native World
Designing Events-First Microservices For A Cloud Native WorldLightbend
 
The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management Rundeck
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Rundeck
 
Aaai 2011 event processing tutorial
Aaai 2011 event processing tutorialAaai 2011 event processing tutorial
Aaai 2011 event processing tutorialOpher Etzion
 
Picos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting ThingsPicos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting ThingsPhil Windley
 
Event Driven Streaming Analytics - Demostration on Architecture of IoT
Event Driven Streaming Analytics - Demostration on Architecture of IoTEvent Driven Streaming Analytics - Demostration on Architecture of IoT
Event Driven Streaming Analytics - Demostration on Architecture of IoTLei Xu
 
apidays LIVE Australia - Events are Cool Again! by Nelson Petracek
apidays LIVE Australia -  Events are Cool Again! by Nelson Petracekapidays LIVE Australia -  Events are Cool Again! by Nelson Petracek
apidays LIVE Australia - Events are Cool Again! by Nelson Petracekapidays
 
Impactofthecloudforitmanagersisb204guest
Impactofthecloudforitmanagersisb204guestImpactofthecloudforitmanagersisb204guest
Impactofthecloudforitmanagersisb204guestManuel_Jesus
 
Impact Of The Cloud For IT Managers
Impact Of The Cloud For IT ManagersImpact Of The Cloud For IT Managers
Impact Of The Cloud For IT ManagersSimon Guest
 
Demystifyingthecloudprc02guest
Demystifyingthecloudprc02guestDemystifyingthecloudprc02guest
Demystifyingthecloudprc02guestManuel_Jesus
 
Demystifying The Cloud
Demystifying The CloudDemystifying The Cloud
Demystifying The CloudSimon Guest
 
Event Sourcing in less than 20 minutes - With Akka and Java 8
Event Sourcing in less than 20 minutes - With Akka and Java 8Event Sourcing in less than 20 minutes - With Akka and Java 8
Event Sourcing in less than 20 minutes - With Akka and Java 8J On The Beach
 
Eda on the azure services platform
Eda on the azure services platformEda on the azure services platform
Eda on the azure services platformYves Goeleven
 

Similar to How Events Are Reshaping Modern Systems (20)

Designing Events-first Microservices
Designing Events-first MicroservicesDesigning Events-first Microservices
Designing Events-first Microservices
 
Designing Events-First Microservices
Designing Events-First MicroservicesDesigning Events-First Microservices
Designing Events-First Microservices
 
How Events Are Reshaping Modern Systems
How Events Are Reshaping Modern SystemsHow Events Are Reshaping Modern Systems
How Events Are Reshaping Modern Systems
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE
 
Designing Events-first Microservices
Designing Events-first MicroservicesDesigning Events-first Microservices
Designing Events-first Microservices
 
Vldb 2010 event processing tutorial
Vldb 2010 event processing tutorialVldb 2010 event processing tutorial
Vldb 2010 event processing tutorial
 
Deconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven DesignDeconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven Design
 
Designing Events-First Microservices For A Cloud Native World
Designing Events-First Microservices For A Cloud Native WorldDesigning Events-First Microservices For A Cloud Native World
Designing Events-First Microservices For A Cloud Native World
 
The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE
 
Aaai 2011 event processing tutorial
Aaai 2011 event processing tutorialAaai 2011 event processing tutorial
Aaai 2011 event processing tutorial
 
Picos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting ThingsPicos, CloudOS, and Connecting Things
Picos, CloudOS, and Connecting Things
 
Event Driven Streaming Analytics - Demostration on Architecture of IoT
Event Driven Streaming Analytics - Demostration on Architecture of IoTEvent Driven Streaming Analytics - Demostration on Architecture of IoT
Event Driven Streaming Analytics - Demostration on Architecture of IoT
 
apidays LIVE Australia - Events are Cool Again! by Nelson Petracek
apidays LIVE Australia -  Events are Cool Again! by Nelson Petracekapidays LIVE Australia -  Events are Cool Again! by Nelson Petracek
apidays LIVE Australia - Events are Cool Again! by Nelson Petracek
 
Impactofthecloudforitmanagersisb204guest
Impactofthecloudforitmanagersisb204guestImpactofthecloudforitmanagersisb204guest
Impactofthecloudforitmanagersisb204guest
 
Impact Of The Cloud For IT Managers
Impact Of The Cloud For IT ManagersImpact Of The Cloud For IT Managers
Impact Of The Cloud For IT Managers
 
Demystifyingthecloudprc02guest
Demystifyingthecloudprc02guestDemystifyingthecloudprc02guest
Demystifyingthecloudprc02guest
 
Demystifying The Cloud
Demystifying The CloudDemystifying The Cloud
Demystifying The Cloud
 
Event Sourcing in less than 20 minutes - With Akka and Java 8
Event Sourcing in less than 20 minutes - With Akka and Java 8Event Sourcing in less than 20 minutes - With Akka and Java 8
Event Sourcing in less than 20 minutes - With Akka and Java 8
 
Eda on the azure services platform
Eda on the azure services platformEda on the azure services platform
Eda on the azure services platform
 

More from Jonas Bonér

We are drowning in complexity—can we do better?
We are drowning in complexity—can we do better?We are drowning in complexity—can we do better?
We are drowning in complexity—can we do better?Jonas Bonér
 
Kalix: Tackling the The Cloud to Edge Continuum
Kalix: Tackling the The Cloud to Edge ContinuumKalix: Tackling the The Cloud to Edge Continuum
Kalix: Tackling the The Cloud to Edge ContinuumJonas Bonér
 
The Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native ApplicationsThe Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native ApplicationsJonas Bonér
 
Cloudstate—Towards Stateful Serverless
Cloudstate—Towards Stateful ServerlessCloudstate—Towards Stateful Serverless
Cloudstate—Towards Stateful ServerlessJonas Bonér
 
Reactive Microsystems: The Evolution of Microservices at Scale
Reactive Microsystems: The Evolution of Microservices at ScaleReactive Microsystems: The Evolution of Microservices at Scale
Reactive Microsystems: The Evolution of Microservices at ScaleJonas Bonér
 
From Microliths To Microsystems
From Microliths To MicrosystemsFrom Microliths To Microsystems
From Microliths To MicrosystemsJonas Bonér
 
Without Resilience, Nothing Else Matters
Without Resilience, Nothing Else MattersWithout Resilience, Nothing Else Matters
Without Resilience, Nothing Else MattersJonas Bonér
 
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven SystemsGo Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven SystemsJonas Bonér
 
Reactive Supply To Changing Demand
Reactive Supply To Changing DemandReactive Supply To Changing Demand
Reactive Supply To Changing DemandJonas Bonér
 
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
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive SystemsGo Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive SystemsJonas Bonér
 
Building Scalable, Highly Concurrent & Fault Tolerant Systems - Lessons Learned
Building Scalable, Highly Concurrent & Fault Tolerant Systems -  Lessons LearnedBuilding Scalable, Highly Concurrent & Fault Tolerant Systems -  Lessons Learned
Building Scalable, Highly Concurrent & Fault Tolerant Systems - Lessons LearnedJonas Bonér
 
Event Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspectiveEvent Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspectiveJonas Bonér
 
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
 
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVMState: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVMJonas Bonér
 
Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)Jonas Bonér
 

More from Jonas Bonér (17)

We are drowning in complexity—can we do better?
We are drowning in complexity—can we do better?We are drowning in complexity—can we do better?
We are drowning in complexity—can we do better?
 
Kalix: Tackling the The Cloud to Edge Continuum
Kalix: Tackling the The Cloud to Edge ContinuumKalix: Tackling the The Cloud to Edge Continuum
Kalix: Tackling the The Cloud to Edge Continuum
 
The Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native ApplicationsThe Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native Applications
 
Cloudstate—Towards Stateful Serverless
Cloudstate—Towards Stateful ServerlessCloudstate—Towards Stateful Serverless
Cloudstate—Towards Stateful Serverless
 
Reactive Microsystems: The Evolution of Microservices at Scale
Reactive Microsystems: The Evolution of Microservices at ScaleReactive Microsystems: The Evolution of Microservices at Scale
Reactive Microsystems: The Evolution of Microservices at Scale
 
From Microliths To Microsystems
From Microliths To MicrosystemsFrom Microliths To Microsystems
From Microliths To Microsystems
 
Without Resilience, Nothing Else Matters
Without Resilience, Nothing Else MattersWithout Resilience, Nothing Else Matters
Without Resilience, Nothing Else Matters
 
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven SystemsGo Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
 
Reactive Supply To Changing Demand
Reactive Supply To Changing DemandReactive Supply To Changing Demand
Reactive Supply To Changing Demand
 
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)
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive SystemsGo Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
 
Introducing Akka
Introducing AkkaIntroducing Akka
Introducing Akka
 
Building Scalable, Highly Concurrent & Fault Tolerant Systems - Lessons Learned
Building Scalable, Highly Concurrent & Fault Tolerant Systems -  Lessons LearnedBuilding Scalable, Highly Concurrent & Fault Tolerant Systems -  Lessons Learned
Building Scalable, Highly Concurrent & Fault Tolerant Systems - Lessons Learned
 
Event Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspectiveEvent Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspective
 
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...
 
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVMState: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
 
Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)
 

Recently uploaded

HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVRajaP95
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxhumanexperienceaaa
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Call Girls in Nagpur High Profile
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSRajkumarAkumalla
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 

Recently uploaded (20)

HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 

How Events Are Reshaping Modern Systems

  • 1. How Events Are Reshaping Modern Systems Jonas Bonér @jboner
  • 2.
  • 4. 1. Events drive autonomy 2. Events help reduce risk 3. Events help you move faster 4. Events Increase Loose coupling 5. Events increase stability 6. Events increase scalability 7. Events increase resilience 8. Events increase traceability 9. Events allow for time-travel Why Should you care?
  • 5. 1. Cloud and multicore architectures 2. Microservices and distributed systems 3. Data-centric applications 4. “We want more, of everything, and we want it now.” - Your Customers
  • 6. Why Now? 1. Cloud and multicore architectures 2. Microservices and distributed systems 3. Data-centric applications 4. “We want more, of everything, and we want it now.” - Your Customers
  • 7. Do Not Settle For Microliths
  • 8. Do Not Settle For Microliths
  • 9. “Event-Driven Architecture (EDA) is a design paradigm in which a software component executes in response to receiving one or more event notifications.” - Gartner Event Driven Architecture To The Rescue
  • 10.
  • 13. The Nature of Events
  • 14. ✴Events represent Facts of information ➡ Facts are immutable ➡ Facts Accrue - Knowledge can only grow The Nature of Events
  • 15. ✴Events represent Facts of information ➡ Facts are immutable ➡ Facts Accrue - Knowledge can only grow ✴ Events/Facts can be disregarded/Ignored The Nature of Events
  • 16. ✴Events represent Facts of information ➡ Facts are immutable ➡ Facts Accrue - Knowledge can only grow ✴ Events/Facts can be disregarded/Ignored ✴ Events/Facts Can not be retracted (once accepted) The Nature of Events
  • 17. ✴Events represent Facts of information ➡ Facts are immutable ➡ Facts Accrue - Knowledge can only grow ✴ Events/Facts can be disregarded/Ignored ✴ Events/Facts Can not be retracted (once accepted) ✴ Events/Facts Can not be deleted (once accepted) ➡ Might be needed for legal or moral reasons The Nature of Events
  • 18. ✴Events represent Facts of information ➡ Facts are immutable ➡ Facts Accrue - Knowledge can only grow ✴ Events/Facts can be disregarded/Ignored ✴ Events/Facts Can not be retracted (once accepted) ✴ Events/Facts Can not be deleted (once accepted) ➡ Might be needed for legal or moral reasons ✴ Events/Facts (new) can invalidate existing Facts The Nature of Events
  • 19. Event Loop What Makes Event Tick
  • 20. ✴ Queue + anonymous Callbacks ✴ The Hollywood principle ✴ At-Most-Once delivery guarantees ✴ Local context only ✴ Sync or AsynC ✴ Limited and quite powerless The Event Loop
  • 21. ✴ Queue + anonymous Callbacks ✴ The Hollywood principle ✴ At-Most-Once delivery guarantees ✴ Local context only ✴ Sync or AsynC ✴ Limited and quite powerless The Event Loop * * Too limited as a general model of computation, and programming model for modern distributed systems. But is a useful building block.
  • 22. ✴ Ephemeral and anonymous ✴ No sane failure model Error Channel - console.log(‘4/0=err’, err) ✴ No composition Signature: Input => Side-effect - (Any => Unit) ✴ Hard to Debug ✴ Hard to reason about ✴ Leads to Callback hell The Problem With Event Callbacks
  • 24.
  • 25. ✴Patterns Observer, Pub-Sub, Broadcast, … ✴Futures & PRomises ✴Dataflow Variables ✴Stream Processing ✴ Event-driven Microservices ✴ FaaS We Need High Level Abstractions
  • 26. Unified Event Driven Abstractions Powered By Message Driven Fabric Ladder of abstraction
  • 27. Unified Event Driven Abstractions Powered By Message Driven Fabric Network Boundary Ladder of abstraction
  • 28. Unified Event Driven Abstractions Powered By Message Driven Fabric Network Boundary Ladder of abstraction
  • 29. Unified Event Driven Abstractions Powered By Message Driven Fabric Network Boundary Ladder of abstraction
  • 30. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Network Boundary Ladder of abstraction
  • 31. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Network Boundary Event 1Ladder of abstraction
  • 32. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Local Event Loop Network Boundary Event 1Ladder of abstraction
  • 33. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Local Event Loop Distribution Fabric Network Boundary Event 1Ladder of abstraction
  • 34. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Local Event Loop Distribution Fabric Distribution Fabric Network Boundary Message Passing Event 1Ladder of abstraction
  • 35. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Local Event Loop Distribution Fabric Local Event Loop Distribution Fabric Network Boundary Message Passing Event 1Ladder of abstraction
  • 36. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Local Event Loop Distribution Fabric Local Event Loop Distribution Fabric Network Boundary Message Passing Event 1Ladder of abstraction
  • 37. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Local Event Loop Distribution Fabric Local Event Loop Distribution Fabric Network Boundary Message Passing Event 1 Event 1Ladder of abstraction
  • 38. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Local Event Loop Distribution Fabric Local Event Loop Distribution Fabric Network Boundary Message Passing Event 1 Event 1 Reactive Systems is doing the heavy lifting Ladder of abstraction
  • 39. Unified Event Driven Abstractions Powered By Message Driven Fabric Unified API (Event-driven Microservices, Patterns, Streams, Futures, FaaS,…) Local Event Loop Distribution Fabric Local Event Loop Distribution Fabric Network Boundary Message Passing Event 1 Event 1 Reactive Systems is doing the heavy lifting Ladder of abstraction Reactive Programming
  • 40. 1. REceive and react to facts (or not), that are coming its way 2. Publish new facts (as events) to the rest of the world 3. Invert the control flow to minimize coupling and increase autonomy Event Driven Services
  • 41. Mutable State Needs To Be Contained And Non Observable
  • 44. Event Stream Use The as the integration fabric
  • 60. But Relax It Is How The World Works
  • 63. Welcome To The Wild Ocean Of Non Determinism Distributed Systems
  • 64. “In a system which cannot count on distributed transactions, the management of uncertainty must be implemented in the business logic.” - Pat Helland Life Beyond Distributed Transactions - An Apostate’s Opinion, Pat Helland (2007) We Need To Model Uncertainty
  • 67. Events Can Lead To Greater Certainty
  • 68. Events Can Help Us Craft Autonomous Islands Of Determinism
  • 69.
  • 70. What does it mean to be Automonous?
  • 71. From greek: Auto-nomos ✴ Auto meaning self ✴ Nomos meaning Law Autonomy
  • 74. ✴Impositions diverge into unpredictable outcomes from definite beginnings Distributed information Decreased certainty Convergence vs. Divergence of information ✴Promises converge towards a definite outcome from unpredictable beginnings Local information Improved certainty
  • 75. “Autonomy makes information local, leading to greater certainty and stability.” “An autonomus component can only promise its own behavior.” - Mark Burgess In Search of Certainty, Thinking in Promises - Mark Burgess
  • 76. Benefits of Thinking in Promises
  • 77. ✴ If a service only promises its own behavior Then all information needed to ➡ Resolve a conflict ➡ Repair under failure ➡ Is available within the service itself Benefits of Thinking in Promises
  • 78. ✴ If a service only promises its own behavior Then all information needed to ➡ Resolve a conflict ➡ Repair under failure ➡ Is available within the service itself ✴ Promises remove the need for needless 1. Communication 2. Coordination 3. Consensus Benefits of Thinking in Promises
  • 79. “The first principle of successful scalability is to batter the consistency mechanisms down to a minimum.” - James Hamilton As transcribed in: Toward a Cloud Computing Research Agenda. SIGACT News, 40(2):68–80, June 2009.
  • 82. “When you start modeling events, it forces you to think about the behavior of the system. As opposed to thinking about the structure of the system.” - Greg Young A Decade of DDD, CQRS, Event Sourcing, Greg Young (Presentation from 2016)
  • 83. ✴ Don’t focus on the things The Nouns The Domain Objects ✴ Focus on what happens The Verbs The Events
  • 85.
  • 88. ✴ IntentS ➡ Communication ➡ Conversations ➡ Expectations ➡ Contracts ➡ Control Transfer Event Driven Design
  • 89. ✴ IntentS ➡ Communication ➡ Conversations ➡ Expectations ➡ Contracts ➡ Control Transfer Event Driven Design ✴ Facts ➡ State ➡ History ➡ Causality ➡ Notifications ➡ State Transfer
  • 90. ✴ IntentS ➡ Communication ➡ Conversations ➡ Expectations ➡ Contracts ➡ Control Transfer Event Driven Design ✴ Facts ➡ State ➡ History ➡ Causality ➡ Notifications ➡ State Transfer Commands
  • 91. ✴ IntentS ➡ Communication ➡ Conversations ➡ Expectations ➡ Contracts ➡ Control Transfer Event Driven Design ✴ Facts ➡ State ➡ History ➡ Causality ➡ Notifications ➡ State Transfer Commands Events
  • 93. ✴Commands ➡ Object form of method/Action request ➡ Imperative: CreateOrder, ShipProduct Event Driven Design
  • 94. ✴Commands ➡ Object form of method/Action request ➡ Imperative: CreateOrder, ShipProduct ✴Reactions ➡ Represents side-effects Event Driven Design
  • 95. ✴Commands ➡ Object form of method/Action request ➡ Imperative: CreateOrder, ShipProduct ✴Reactions ➡ Represents side-effects ✴Events ➡ Represents something that has happened ➡ Past-tense: OrderCreated, ProductShipped Event Driven Design
  • 97. Commands Eventsvs 1. All about intent 1. Intentless
  • 98. Commands Eventsvs 1. All about intent 2. Directed 1. Intentless 2. Anonymous
  • 99. Commands Eventsvs 1. All about intent 2. Directed 3. Single addressable destination 1. Intentless 2. Anonymous 3. Just happens - for others (0-N) to observe
  • 100. Commands Eventsvs 1. All about intent 2. Directed 3. Single addressable destination 4. Models personal communication 1. Intentless 2. Anonymous 3. Just happens - for others (0-N) to observe 4. Models broadcast (speakers corner)
  • 101. Commands Eventsvs 1. All about intent 2. Directed 3. Single addressable destination 4. Models personal communication 5. Distributed focus 1. Intentless 2. Anonymous 3. Just happens - for others (0-N) to observe 4. Models broadcast (speakers corner) 5. Local focus
  • 102. Commands Eventsvs 1. All about intent 2. Directed 3. Single addressable destination 4. Models personal communication 5. Distributed focus 6. Command & Control 1. Intentless 2. Anonymous 3. Just happens - for others (0-N) to observe 4. Models broadcast (speakers corner) 5. Local focus 6. Autonomy
  • 103. Let the Events Define the Bounded Context
  • 104. Principles For Promise Theory Driven Protocol Design
  • 105. 1. Convergency Promises should reach a desired state, a stable outcome - idempotent behavior Principles For Promise Theory Driven Protocol Design
  • 106. 1. Convergency Promises should reach a desired state, a stable outcome - idempotent behavior 2. Embracing Failure Expect things to go wrong Promises may or may not be kept Principles For Promise Theory Driven Protocol Design
  • 107. 1. Convergency Promises should reach a desired state, a stable outcome - idempotent behavior 2. Embracing Failure Expect things to go wrong Promises may or may not be kept 3. Autonomy You can’t rely on other services Principles For Promise Theory Driven Protocol Design
  • 108. ✴ Maintains Integrity & consistency ✴ Is our Unit of Consistency ✴ Is our Unit of Failure ✴ Is our Unit of Determinism ✴ Is fully Autonomous The Aggregate
  • 109. Enough Talk Show Me The Code Sample in Java: https://gist.github.com/jboner/4361c710d2e2386be8bddc39edb0528a Sample in Scala: https://gist.github.com/jboner/dea4aa819e127d543d684208d74081b5
  • 110. Enough Talk Show Me The Code Sample in Java: https://gist.github.com/jboner/4361c710d2e2386be8bddc39edb0528a Sample in Scala: https://gist.github.com/jboner/dea4aa819e127d543d684208d74081b5
  • 111. Are we done now?
  • 112. Are we done now? Perhaps. We have come a long way.
  • 113. Are we done now? Perhaps. We have come a long way. But events can also be used for:
  • 114. Are we done now? Perhaps. We have come a long way. But events can also be used for: ➡ Persistence
  • 115. Are we done now? Perhaps. We have come a long way. But events can also be used for: ➡ Persistence ➡ Managing time
  • 117. “Update-in-place strikes systems designers as a cardinal sin: it violates traditional accounting practices that have been observed for hundreds of years.” - jim Gray The Transaction Concept, Jim Gray (1981)
  • 119. Event Sourcing A Cure For the Cardinal Sin
  • 120. “The truth is the log. The database is a cache of a subset of the log.” - Pat Helland Immutability Changes Everything, Pat Helland (2015)
  • 123. Happy Path Event Sourced Services 1) Receive and verify Command (“ApprovePayment”)
  • 124. Happy Path Event Sourced Services 2) Create new Event (“PaymentApproved”) 1) Receive and verify Command (“ApprovePayment”)
  • 125. Happy Path Event Sourced Services 2) Create new Event (“PaymentApproved”) 1) Receive and verify Command (“ApprovePayment”) 3) Append Event to Event Log
  • 126. Happy Path Event Sourced Services 2) Create new Event (“PaymentApproved”) 1) Receive and verify Command (“ApprovePayment”) 3) Append Event to Event Log 4) Update internal component state
  • 127. Happy Path Event Sourced Services 5) Run side-effects (approve the payment) 2) Create new Event (“PaymentApproved”) 1) Receive and verify Command (“ApprovePayment”) 3) Append Event to Event Log 4) Update internal component state
  • 128. SAD Path - recovering from failure Happy Path Event Sourced Services 5) Run side-effects (approve the payment) 2) Create new Event (“PaymentApproved”) 1) Receive and verify Command (“ApprovePayment”) 3) Append Event to Event Log 4) Update internal component state
  • 129. SAD Path - recovering from failure Happy Path Event Sourced Services 5) Run side-effects (approve the payment) 2) Create new Event (“PaymentApproved”) 1) Receive and verify Command (“ApprovePayment”) 3) Append Event to Event Log 4) Update internal component state 1) Rehydrate Events from Event Log
  • 130. SAD Path - recovering from failure Happy Path Event Sourced Services 5) Run side-effects (approve the payment) 2) Create new Event (“PaymentApproved”) 1) Receive and verify Command (“ApprovePayment”) 3) Append Event to Event Log 4) Update internal component state 1) Rehydrate Events from Event Log 2) Update internal component state
  • 131. SAD Path - recovering from failure Happy Path Event Sourced Services 5) Run side-effects (approve the payment) 2) Create new Event (“PaymentApproved”) 1) Receive and verify Command (“ApprovePayment”) 3) Append Event to Event Log 4) Update internal component state 1) Rehydrate Events from Event Log 2) Update internal component state Memory Image
  • 132. Event Sourcing ✴ One single Source of Truth with All history ✴ Allows for Memory Image - durable in-memory state ✴ Avoids the Object-relational mismatch ✴ Allows others to Subscribe to state changes ✴ Mechanical sympathy (Single Writer Principle etc.)
  • 133. ✴ Unfamiliar model ✴ Versioning of events ✴ Deletion of events (legal or moral reasons) Disadvantages Of Using Event Sourcing
  • 134. EventsAllow Us To Manage Time
  • 135. “Modeling events forces you to have a temporal focus on what’s going on in the system. Time becomes a crucial factor of the system.” - Greg Young A Decade of DDD, CQRS, Event Sourcing, Greg Young (Presentation from 2016)
  • 136.
  • 137. But, What is Time Really?
  • 138. Causality How We Make Sense Of The World
  • 139. Time Is the Succession Of Causally Related Events
  • 140. ✴ Event is a snapshot in time ✴ Event ID is an index for time ✴ Event Log is our full history The database of Our past The path to Our present Event Sourcing Allows Us To Model Time
  • 143. Event Sourcing Allows For Time Travel ✴Replay the log for historic debugging ✴Replay the log for auditing & traceability ✴Replay the log on failure ✴Replay the log for replication
  • 144. “The future is a function of the past.” - A. P. Robertson
  • 145. “The (local) present is a merge function of multiple concurrent pasts.” - me
  • 146. val newLocalPresent = observedPasts. foldLeft(oldLocalPresent) { _ merge _ }
  • 147. We need to explicitly model the local present as facts derived from the merging of multiple concurrent pasts
  • 148. We Can Even Fork the Past ...Or Join Two Distinct Pasts
  • 149. Let Make Our Demo Event Sourced
  • 150. Untangle Your Read and Write Models With CQRS
  • 151. CQRS
  • 152. CQRS
  • 154. CQRS Write Side Model Write to Event Log Commands
  • 155. CQRS Write Side Model Events Write to Event Log Commands
  • 157. CQRS Read Side Model Write Side Model Events Events Read Data Store Write to Event Log Commands
  • 158. CQRS Read Side Model Write Side Model Events Queries Events Read Data Store Write to Event Log Commands
  • 159. CQRS Read Side Model Write Side Model Events Queries Events Read Data Store Write to Event Log Eventual Consistency Commands
  • 160. ✴ Temporal Decoupling ✴ Increased Resilience ✴ Increased Scalability ✴ Allows for Multiple Event subscribers ✴ Allows for Polyglot Persistence Advantages Of Using CQRS
  • 161. ✴ More infrastructure to manage ✴ 2 data models (or more) to maintain ✴ Eventual Consistency Disadvantages Of Using CQRS
  • 163. Key Takeaways Event driven design helps you to: ✴ Design autonomous services ✴ Move Faster towards a Reactive architecture ✴ reduce risk when modernizing applications ✴ Balance Certainty and Uncertainty
  • 164. Key Takeaways Event driven design helps you to: ✴ Design autonomous services ✴ Move Faster towards a Reactive architecture ✴ reduce risk when modernizing applications ✴ Balance Certainty and Uncertainty Event Logging allows you to: ✴ take control of your system’s history ✴ time-travel ✴ Balance Strong and eventual consistency
  • 165. Learn More Download my latest book for free at: bit.ly/reactive-microsystems