SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Event Sourcing @ DDD Europe
Keynote
Udi Dahan
@UdiDahan
I’m not old enough to say “get off my lawn” but…
The best thing since sliced bread!
Just like every other technology & methodology
This was documented as the Gartner Hype Cycle
Some of you are here
Hopefully,
we’ll get you here
So, here’s what we’re dealing with:
Let’s bring some order to the chaos
What is “Event Sourcing” anyway?
Event sourcing refers to a collection of patterns based on
persisting the full history of a domain as a sequence of
“events”
rather than persisting just the current state
Reminder: The Domain Model pattern
An object model of the domain
that incorporates both behavior and data
Use when you have complicated and everchanging business
rules
If you have simple not-null checks and a couple of sums to
calculate, a Transaction Script is a better bet
- p119 Patterns of Enterprise Application Architect, Fowler et
al.
Beware the One Domain Model to rule them all
OK, so what is an “Event” then?
Historically speaking, first they were called “Interrupts”
These were signals to the processor
that something needed immediate attention
Keyboard and mouse clicks are a kind of Interrupt
And then came the Graphical User Interface
When a button was clicked, you got an “event”
a programming construct different from a class, method, or
pointer
You could register multiple “callbacks” for an event
which were essentially methods on a class, with arguments
which gave additional data about the event
Oh, so many arguments…
Private Sub object _MouseDown(
index As Long,
ByVal Button As fmButton,
ByVal Shift As fmShiftState,
ByVal X As Single,
ByVal Y As Single)
Then came the idea to use the Parameter Object pattern to
consolidate all the arguments together
Add strong-typing and an IDE…
Parameter Object
Component-Orientation was significant too
The idea was that complex software was better built as a
collection of loosely-coupled & highly-cohesive components
On top of that, events were a communication style that was
even more decoupled than invoking methods on an interface
This became known as Event-Driven Architecture (EDA)
There were “event producers”, “event consumers”, and
“channels” that connected them
Tip: producers can also be consumers, and vice versa
Integration pushed EDA & Messaging together
Integration between applications on different platforms was
hard
Message-oriented middleware made it easier
The events being emitted by systems following EDA were
well-suited to being transmitted by messages
The name of the event was put in the header of the message
(used for routing), and the arguments in the body
Content-based routing came later
Where we are today:
An Event is a kind of data structure (name + key/value args)
which represents an action that has already occurred
Infrastructure helps move these events around
Whether between systems using messaging
Or for persistence with event-sourcing
Before using Event Sourcing on complex systems
Beware the One Domain Model to rule them all
If you’re building a complex system…
UI
BL
DAL
DB
API
This isn’t your
Domain Model
Models of your domain
public class Customer
{
FirstName
LastName
Status
// etc
}
public class Product
{
Name
Description
Price
// etc
}
Customer
Status
Product
Price
Customer
FirstName
LastName
Product
Name
Description
TX Script TX ScriptDomain(?)
Now, take these boundaries and extend them
UI
BL
DAL
DB
API
Data and screens get partitioned
DB DB DB DB
With business-level events between boundaries
Events (pub/sub)
B1 B2 B3
Event
Store
DocDB Shards
Events on the outside vs inside
Sales Billing
Shipping
Order Accepted
Order Accepted
Order Billed
Auditing & Replay
Messaging infrastructure usually provides Auditing out-of-the-
box
Once you have auditing in place, Replay becomes possible
To be totally honest, there are so many challenges with
Replay
like when integrating with other systems, that it just isn’t worth
it
(except in edge cases).
Events on the outside vs inside: Notifications
Shipping
Events on the outside vs inside: Data Sync
Billing
Master DB
Oracle
Finance
SAP
Data
Warehouse
Change
Data
Capture
ETL
Product Catalog
Events on the outside vs inside: DB Replication
Write Master
Read ReplicasRead ReplicasRead ReplicasRead ReplicasRead Replicas
Async
DB Client SDK
CRUD
Sales: customers who bought X also bought A, B, C
Events on the outside vs inside: Graph Databases
Graph DB
Monitoring
(IT/Ops)
Events on the inside: Time Series Databases
Influx DB
Netflix
Atlas
This is where we find event logging & tracing
At scale, everything becomes custom
So, what’s Event Sourcing actually for?
Bi-temporal, Code as Data Domains
Event-sourcing is for building infrastructure
Below scale, Moore’s law is your friend: Scale UP
Biggest AWS EC2 Instance: 128 vCPU, 3904 GB Memory
Reserved instance 3 year term:
$6250/month
That’s cheaper than most developers
And the business will change along the way
Incorporate re-architecting time into your plans
No, it won’t be pretty, but it will be functional
Learn how to divide responsibilities
and get your boundaries right.
http://go.particular.net/dddeu2020
Want more?
Thank you
Udi Dahan
@UdiDahan

Weitere ähnliche Inhalte

Was ist angesagt?

Unit 6 - Part C
Unit 6 - Part CUnit 6 - Part C
Unit 6 - Part CNgan Vo
 
Top 10 firefighter engineer interview questions and answers
Top 10 firefighter engineer interview questions and answersTop 10 firefighter engineer interview questions and answers
Top 10 firefighter engineer interview questions and answerstonychoper2706
 
ĐẢO NGỮ (INVERSION)
ĐẢO NGỮ (INVERSION)ĐẢO NGỮ (INVERSION)
ĐẢO NGỮ (INVERSION)Dieu Vy Nguyen
 
RIOT and the evolution of operating systems for IoT devices (Emmanuel Baccell...
RIOT and the evolution of operating systems for IoT devices (Emmanuel Baccell...RIOT and the evolution of operating systems for IoT devices (Emmanuel Baccell...
RIOT and the evolution of operating systems for IoT devices (Emmanuel Baccell...AGILE IoT
 
Certificate of Completion - Copy
Certificate of Completion - CopyCertificate of Completion - Copy
Certificate of Completion - CopyTracy Mejia
 
Unit 6 - How techie are you? - 6A
Unit 6 - How techie are you? - 6AUnit 6 - How techie are you? - 6A
Unit 6 - How techie are you? - 6Ahoangngan27
 
Từ và cụm từ biểu thị thời gian trong ielts writing task 1
Từ và cụm từ biểu thị thời gian trong ielts writing task 1 Từ và cụm từ biểu thị thời gian trong ielts writing task 1
Từ và cụm từ biểu thị thời gian trong ielts writing task 1 Lài Hoàng
 
Cau hoi tim hieu ve doan trinh chieu
Cau hoi tim hieu ve doan trinh chieuCau hoi tim hieu ve doan trinh chieu
Cau hoi tim hieu ve doan trinh chieuTenanh Thientruong
 
TẤT TẦN TẬT VỀ CÂU ĐIỀU KIỆN (CONDITIONAL SENTENCE) TRONG TIẾNG ANH
TẤT TẦN TẬT VỀ CÂU ĐIỀU KIỆN (CONDITIONAL SENTENCE) TRONG TIẾNG ANHTẤT TẦN TẬT VỀ CÂU ĐIỀU KIỆN (CONDITIONAL SENTENCE) TRONG TIẾNG ANH
TẤT TẦN TẬT VỀ CÂU ĐIỀU KIỆN (CONDITIONAL SENTENCE) TRONG TIẾNG ANHDuy Anh Nguyễn
 
Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!Ptah Dunbar
 
Benjamin solari parravicini
Benjamin solari parraviciniBenjamin solari parravicini
Benjamin solari parraviciniFlavio Pereira
 
Copywriting Proposal Template PowerPoint Presentation Slides
Copywriting Proposal Template PowerPoint Presentation SlidesCopywriting Proposal Template PowerPoint Presentation Slides
Copywriting Proposal Template PowerPoint Presentation SlidesSlideTeam
 
Pyramide alimentaire
Pyramide alimentairePyramide alimentaire
Pyramide alimentaireTatianaSaba1
 
Đại từ trong ngữ pháp tiếng anh
Đại từ trong ngữ pháp tiếng anhĐại từ trong ngữ pháp tiếng anh
Đại từ trong ngữ pháp tiếng anhĐào Ngân
 
The lion, the mouse and the fox 5ºb
The lion, the mouse and the fox 5ºbThe lion, the mouse and the fox 5ºb
The lion, the mouse and the fox 5ºbvickymm81
 
45 Lessons In Life Slideshow
45 Lessons In Life Slideshow45 Lessons In Life Slideshow
45 Lessons In Life Slideshowyvonne brewer
 
Hidden camera detector
Hidden camera detectorHidden camera detector
Hidden camera detector1jyotiprakash
 

Was ist angesagt? (20)

Tom tat ngu phap tieng anh thpt
Tom tat ngu phap tieng anh thptTom tat ngu phap tieng anh thpt
Tom tat ngu phap tieng anh thpt
 
Unit 6 - Part C
Unit 6 - Part CUnit 6 - Part C
Unit 6 - Part C
 
Top 10 firefighter engineer interview questions and answers
Top 10 firefighter engineer interview questions and answersTop 10 firefighter engineer interview questions and answers
Top 10 firefighter engineer interview questions and answers
 
ĐẢO NGỮ (INVERSION)
ĐẢO NGỮ (INVERSION)ĐẢO NGỮ (INVERSION)
ĐẢO NGỮ (INVERSION)
 
RIOT and the evolution of operating systems for IoT devices (Emmanuel Baccell...
RIOT and the evolution of operating systems for IoT devices (Emmanuel Baccell...RIOT and the evolution of operating systems for IoT devices (Emmanuel Baccell...
RIOT and the evolution of operating systems for IoT devices (Emmanuel Baccell...
 
Certificate of Completion - Copy
Certificate of Completion - CopyCertificate of Completion - Copy
Certificate of Completion - Copy
 
Unit 6 - How techie are you? - 6A
Unit 6 - How techie are you? - 6AUnit 6 - How techie are you? - 6A
Unit 6 - How techie are you? - 6A
 
Từ và cụm từ biểu thị thời gian trong ielts writing task 1
Từ và cụm từ biểu thị thời gian trong ielts writing task 1 Từ và cụm từ biểu thị thời gian trong ielts writing task 1
Từ và cụm từ biểu thị thời gian trong ielts writing task 1
 
Sutra sagrada
Sutra sagradaSutra sagrada
Sutra sagrada
 
Tablature silhouette6
Tablature silhouette6Tablature silhouette6
Tablature silhouette6
 
Cau hoi tim hieu ve doan trinh chieu
Cau hoi tim hieu ve doan trinh chieuCau hoi tim hieu ve doan trinh chieu
Cau hoi tim hieu ve doan trinh chieu
 
TẤT TẦN TẬT VỀ CÂU ĐIỀU KIỆN (CONDITIONAL SENTENCE) TRONG TIẾNG ANH
TẤT TẦN TẬT VỀ CÂU ĐIỀU KIỆN (CONDITIONAL SENTENCE) TRONG TIẾNG ANHTẤT TẦN TẬT VỀ CÂU ĐIỀU KIỆN (CONDITIONAL SENTENCE) TRONG TIẾNG ANH
TẤT TẦN TẬT VỀ CÂU ĐIỀU KIỆN (CONDITIONAL SENTENCE) TRONG TIẾNG ANH
 
Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!
 
Benjamin solari parravicini
Benjamin solari parraviciniBenjamin solari parravicini
Benjamin solari parravicini
 
Copywriting Proposal Template PowerPoint Presentation Slides
Copywriting Proposal Template PowerPoint Presentation SlidesCopywriting Proposal Template PowerPoint Presentation Slides
Copywriting Proposal Template PowerPoint Presentation Slides
 
Pyramide alimentaire
Pyramide alimentairePyramide alimentaire
Pyramide alimentaire
 
Đại từ trong ngữ pháp tiếng anh
Đại từ trong ngữ pháp tiếng anhĐại từ trong ngữ pháp tiếng anh
Đại từ trong ngữ pháp tiếng anh
 
The lion, the mouse and the fox 5ºb
The lion, the mouse and the fox 5ºbThe lion, the mouse and the fox 5ºb
The lion, the mouse and the fox 5ºb
 
45 Lessons In Life Slideshow
45 Lessons In Life Slideshow45 Lessons In Life Slideshow
45 Lessons In Life Slideshow
 
Hidden camera detector
Hidden camera detectorHidden camera detector
Hidden camera detector
 

Ähnlich wie Udi Dahan: Event Sourcing Keynote @ DDD EU

11 0029-01 selling development tools in the cloud
11 0029-01 selling development tools in the cloud11 0029-01 selling development tools in the cloud
11 0029-01 selling development tools in the cloudJohn McDonald
 
Confluent Partner Tech Talk with BearingPoint
Confluent Partner Tech Talk with BearingPointConfluent Partner Tech Talk with BearingPoint
Confluent Partner Tech Talk with BearingPointconfluent
 
SeattleUniv-IntroductionToCloudComputing-WinsowsAzure101
SeattleUniv-IntroductionToCloudComputing-WinsowsAzure101SeattleUniv-IntroductionToCloudComputing-WinsowsAzure101
SeattleUniv-IntroductionToCloudComputing-WinsowsAzure101Mithun T. Dhar
 
Complex Event Processing
Complex Event ProcessingComplex Event Processing
Complex Event ProcessingJohn Plummer
 
Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018Puppet
 
RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011Gerardo Pardo-Castellote
 
Introduction To Denodo March 2009
Introduction To Denodo March 2009Introduction To Denodo March 2009
Introduction To Denodo March 2009GladstoneUSA
 
Jet Reports es la herramienta para construir el mejor BI y de forma mas rapida
Jet Reports es la herramienta para construir el mejor BI y de forma mas rapida  Jet Reports es la herramienta para construir el mejor BI y de forma mas rapida
Jet Reports es la herramienta para construir el mejor BI y de forma mas rapida CLARA CAMPROVIN
 
Agile Testing Days 2017 Intoducing AgileBI Sustainably - Excercises
Agile Testing Days 2017 Intoducing AgileBI Sustainably - ExcercisesAgile Testing Days 2017 Intoducing AgileBI Sustainably - Excercises
Agile Testing Days 2017 Intoducing AgileBI Sustainably - ExcercisesRaphael Branger
 
Big dataarchitecturesandecosystem+nosql
Big dataarchitecturesandecosystem+nosqlBig dataarchitecturesandecosystem+nosql
Big dataarchitecturesandecosystem+nosqlKhanderao Kand
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven DesignNicolò Pignatelli
 
Cloud Computing Webinar
Cloud Computing WebinarCloud Computing Webinar
Cloud Computing WebinarTechSoup
 
Event Driven Architecture (EDA), November 2, 2006
Event Driven Architecture (EDA), November 2, 2006Event Driven Architecture (EDA), November 2, 2006
Event Driven Architecture (EDA), November 2, 2006Tim Bass
 
Dynatrace: Davis - Hololens - AI update - Cloud announcements - Self driving IT
Dynatrace: Davis - Hololens - AI update - Cloud announcements - Self driving ITDynatrace: Davis - Hololens - AI update - Cloud announcements - Self driving IT
Dynatrace: Davis - Hololens - AI update - Cloud announcements - Self driving ITDynatrace
 
Biz Nova It Project Bonus Slides
Biz Nova It Project Bonus SlidesBiz Nova It Project Bonus Slides
Biz Nova It Project Bonus SlidesTyHowardPMP
 
AWS re:Invent 2016: Building a Solid Business Case for Cloud Migration (ENT308)
AWS re:Invent 2016: Building a Solid Business Case for Cloud Migration (ENT308)AWS re:Invent 2016: Building a Solid Business Case for Cloud Migration (ENT308)
AWS re:Invent 2016: Building a Solid Business Case for Cloud Migration (ENT308)Amazon Web Services
 
Discover Data That Matters- Deep dive into WSO2 Analytics
Discover Data That Matters- Deep dive into WSO2 AnalyticsDiscover Data That Matters- Deep dive into WSO2 Analytics
Discover Data That Matters- Deep dive into WSO2 AnalyticsSriskandarajah Suhothayan
 
SaaS Vs On Premise BI
SaaS Vs On Premise BISaaS Vs On Premise BI
SaaS Vs On Premise BILCWynne
 
Onboarding process made agile with confluent and flowabl
Onboarding process made agile with confluent and flowablOnboarding process made agile with confluent and flowabl
Onboarding process made agile with confluent and flowablmimacom
 

Ähnlich wie Udi Dahan: Event Sourcing Keynote @ DDD EU (20)

11 0029-01 selling development tools in the cloud
11 0029-01 selling development tools in the cloud11 0029-01 selling development tools in the cloud
11 0029-01 selling development tools in the cloud
 
Confluent Partner Tech Talk with BearingPoint
Confluent Partner Tech Talk with BearingPointConfluent Partner Tech Talk with BearingPoint
Confluent Partner Tech Talk with BearingPoint
 
SeattleUniv-IntroductionToCloudComputing-WinsowsAzure101
SeattleUniv-IntroductionToCloudComputing-WinsowsAzure101SeattleUniv-IntroductionToCloudComputing-WinsowsAzure101
SeattleUniv-IntroductionToCloudComputing-WinsowsAzure101
 
Complex Event Processing
Complex Event ProcessingComplex Event Processing
Complex Event Processing
 
Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018
 
RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011
 
Introduction To Denodo March 2009
Introduction To Denodo March 2009Introduction To Denodo March 2009
Introduction To Denodo March 2009
 
Jet Reports es la herramienta para construir el mejor BI y de forma mas rapida
Jet Reports es la herramienta para construir el mejor BI y de forma mas rapida  Jet Reports es la herramienta para construir el mejor BI y de forma mas rapida
Jet Reports es la herramienta para construir el mejor BI y de forma mas rapida
 
Agile Testing Days 2017 Intoducing AgileBI Sustainably - Excercises
Agile Testing Days 2017 Intoducing AgileBI Sustainably - ExcercisesAgile Testing Days 2017 Intoducing AgileBI Sustainably - Excercises
Agile Testing Days 2017 Intoducing AgileBI Sustainably - Excercises
 
Big dataarchitecturesandecosystem+nosql
Big dataarchitecturesandecosystem+nosqlBig dataarchitecturesandecosystem+nosql
Big dataarchitecturesandecosystem+nosql
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
 
Cloud Computing Webinar
Cloud Computing WebinarCloud Computing Webinar
Cloud Computing Webinar
 
Event Driven Architecture (EDA), November 2, 2006
Event Driven Architecture (EDA), November 2, 2006Event Driven Architecture (EDA), November 2, 2006
Event Driven Architecture (EDA), November 2, 2006
 
Dynatrace: Davis - Hololens - AI update - Cloud announcements - Self driving IT
Dynatrace: Davis - Hololens - AI update - Cloud announcements - Self driving ITDynatrace: Davis - Hololens - AI update - Cloud announcements - Self driving IT
Dynatrace: Davis - Hololens - AI update - Cloud announcements - Self driving IT
 
Biz Nova It Project Bonus Slides
Biz Nova It Project Bonus SlidesBiz Nova It Project Bonus Slides
Biz Nova It Project Bonus Slides
 
AWS re:Invent 2016: Building a Solid Business Case for Cloud Migration (ENT308)
AWS re:Invent 2016: Building a Solid Business Case for Cloud Migration (ENT308)AWS re:Invent 2016: Building a Solid Business Case for Cloud Migration (ENT308)
AWS re:Invent 2016: Building a Solid Business Case for Cloud Migration (ENT308)
 
Going Cloud First at the FT
Going Cloud First at the FTGoing Cloud First at the FT
Going Cloud First at the FT
 
Discover Data That Matters- Deep dive into WSO2 Analytics
Discover Data That Matters- Deep dive into WSO2 AnalyticsDiscover Data That Matters- Deep dive into WSO2 Analytics
Discover Data That Matters- Deep dive into WSO2 Analytics
 
SaaS Vs On Premise BI
SaaS Vs On Premise BISaaS Vs On Premise BI
SaaS Vs On Premise BI
 
Onboarding process made agile with confluent and flowabl
Onboarding process made agile with confluent and flowablOnboarding process made agile with confluent and flowabl
Onboarding process made agile with confluent and flowabl
 

Kürzlich hochgeladen

Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
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
 
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
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
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
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
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
 

Kürzlich hochgeladen (20)

Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
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
 
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
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
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
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
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
 

Udi Dahan: Event Sourcing Keynote @ DDD EU

  • 1. Event Sourcing @ DDD Europe Keynote Udi Dahan @UdiDahan
  • 2. I’m not old enough to say “get off my lawn” but…
  • 3. The best thing since sliced bread!
  • 4. Just like every other technology & methodology
  • 5. This was documented as the Gartner Hype Cycle Some of you are here Hopefully, we’ll get you here
  • 6. So, here’s what we’re dealing with:
  • 7. Let’s bring some order to the chaos
  • 8. What is “Event Sourcing” anyway? Event sourcing refers to a collection of patterns based on persisting the full history of a domain as a sequence of “events” rather than persisting just the current state
  • 9. Reminder: The Domain Model pattern An object model of the domain that incorporates both behavior and data Use when you have complicated and everchanging business rules If you have simple not-null checks and a couple of sums to calculate, a Transaction Script is a better bet - p119 Patterns of Enterprise Application Architect, Fowler et al.
  • 10. Beware the One Domain Model to rule them all
  • 11. OK, so what is an “Event” then? Historically speaking, first they were called “Interrupts” These were signals to the processor that something needed immediate attention Keyboard and mouse clicks are a kind of Interrupt
  • 12. And then came the Graphical User Interface When a button was clicked, you got an “event” a programming construct different from a class, method, or pointer You could register multiple “callbacks” for an event which were essentially methods on a class, with arguments which gave additional data about the event
  • 13. Oh, so many arguments… Private Sub object _MouseDown( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single) Then came the idea to use the Parameter Object pattern to consolidate all the arguments together
  • 14. Add strong-typing and an IDE… Parameter Object
  • 15. Component-Orientation was significant too The idea was that complex software was better built as a collection of loosely-coupled & highly-cohesive components On top of that, events were a communication style that was even more decoupled than invoking methods on an interface This became known as Event-Driven Architecture (EDA) There were “event producers”, “event consumers”, and “channels” that connected them Tip: producers can also be consumers, and vice versa
  • 16. Integration pushed EDA & Messaging together Integration between applications on different platforms was hard Message-oriented middleware made it easier The events being emitted by systems following EDA were well-suited to being transmitted by messages The name of the event was put in the header of the message (used for routing), and the arguments in the body Content-based routing came later
  • 17. Where we are today: An Event is a kind of data structure (name + key/value args) which represents an action that has already occurred Infrastructure helps move these events around Whether between systems using messaging Or for persistence with event-sourcing
  • 18. Before using Event Sourcing on complex systems
  • 19. Beware the One Domain Model to rule them all
  • 20. If you’re building a complex system… UI BL DAL DB API This isn’t your Domain Model
  • 21. Models of your domain public class Customer { FirstName LastName Status // etc } public class Product { Name Description Price // etc } Customer Status Product Price Customer FirstName LastName Product Name Description TX Script TX ScriptDomain(?)
  • 22. Now, take these boundaries and extend them UI BL DAL DB API
  • 23. Data and screens get partitioned DB DB DB DB
  • 24. With business-level events between boundaries Events (pub/sub) B1 B2 B3 Event Store DocDB Shards
  • 25. Events on the outside vs inside Sales Billing Shipping Order Accepted Order Accepted Order Billed
  • 26. Auditing & Replay Messaging infrastructure usually provides Auditing out-of-the- box Once you have auditing in place, Replay becomes possible To be totally honest, there are so many challenges with Replay like when integrating with other systems, that it just isn’t worth it (except in edge cases).
  • 27. Events on the outside vs inside: Notifications Shipping
  • 28. Events on the outside vs inside: Data Sync Billing Master DB Oracle Finance SAP Data Warehouse Change Data Capture ETL
  • 29. Product Catalog Events on the outside vs inside: DB Replication Write Master Read ReplicasRead ReplicasRead ReplicasRead ReplicasRead Replicas Async DB Client SDK CRUD
  • 30. Sales: customers who bought X also bought A, B, C Events on the outside vs inside: Graph Databases Graph DB
  • 31. Monitoring (IT/Ops) Events on the inside: Time Series Databases Influx DB Netflix Atlas This is where we find event logging & tracing
  • 32. At scale, everything becomes custom
  • 33. So, what’s Event Sourcing actually for?
  • 34. Bi-temporal, Code as Data Domains
  • 35. Event-sourcing is for building infrastructure
  • 36. Below scale, Moore’s law is your friend: Scale UP Biggest AWS EC2 Instance: 128 vCPU, 3904 GB Memory Reserved instance 3 year term: $6250/month That’s cheaper than most developers
  • 37. And the business will change along the way
  • 39. No, it won’t be pretty, but it will be functional
  • 40. Learn how to divide responsibilities and get your boundaries right. http://go.particular.net/dddeu2020 Want more?

Hinweis der Redaktion

  1. © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  2. I got to tell you, the things I’ve been hearing about this “event sourcing” thing. People are treating it as
  3. It does the scaling, the consistency, the auditing, the modeling, the time to market… And I got to tell you, it sounds like the promises I’ve heard from…
  4. So, yeah, naming things is hard, but there’s so much more than just Event-Blah. There’s also Service-Oriented Architecture, Microservices, Domain Models, DDD, and even CRUD.
  5. I’ll be touching on some older computer history along the way, so please bear with me.
  6. A “pattern” is a solution design for a certain problem context. It is not a “best practice”. Event-sourcing has a whole bunch of ramifications that many of the other speakers will talk about today, so I want to focus on setting the stage here. Now, a lot of you already know the Domain Model pattern, or at least think you do, but here’s a friendly reminder just in case.
  7. And in the darkness bind them. But we’ll get back to this idea of having multiple domain models – event-sourced or otherwise, a bit later.
  8. Note there was nothing about Event-Driven Architecture which meant it had to be distributed.
  9. 1. The thing was, there was no interoperable pure event-based model that worked at the time. There still isn’t – not really.
  10. Now, remember that we said that Event-Sourcing is based on the Domain Model pattern? Right. And remember what we said about the domain model?
  11. Use when you have complicated and everchanging business rules “If you have simple not-null checks and a couple of sums to calculate, a Transaction Script is a better bet”
  12. All the way down through the database, and all the way up through the UI
  13. Whether you’re using SignalR, or Azure Notification Hubs, or Google Cloud Messaging – this is about pushing data updates to your users.
  14. You might be familiar with the concept of Projections in Event Sourcing, for creating read models that are quick and easy to read from. Almost all databases already have this functionality built-in.
  15. You won’t see domain models everywhere. You won’t see event-sourcing everywhere. Each area becomes a special case.
  16. If you look at how databases do replication – you’ll see Event Sourcing patterns. If you look at how Time Series Databases work, you’ll also see Event Sourcing patterns. Things like Event Replay are a great way to get a new database node up and running in a cluster. If/when existing database technologies just don’t handle the scale you need, you’ll use Event Sourcing patterns to build your own.
  17. Seriously, I’ve seen far too many systems where the over-engineered complexity was what hurt its performance, to the point where even scaling up didn’t help. Start simple.
  18. Accept that you’ll need to redesign the system over time. Explain that to stakeholders. That this is *normal*.
  19. And that’s the most important thing. That the business can continue doing what it needs to do, and lives to fight another day.
  20. I know I’ve just barely scratched the surface on these ideas, so if you want more, check out my videos on this link. And I hope you’ve