Submit Search
Upload
RailswayCon 2010 - Command Your Domain
β’
Download as ODP, PDF
β’
6 likes
β’
4,179 views
Lourens NaudΓ©
Follow
Technology
Report
Share
Report
Share
1 of 67
Download now
Recommended
Event Driven Architecture
Event Driven Architecture
Chris Patterson
Β
GopherCon UK 2018 - Orchestration of microservices
GopherCon UK 2018 - Orchestration of microservices
Bernd Ruecker
Β
Managing State With JBoss Seam
Managing State With JBoss Seam
guest74ef29
Β
CloverDX for IBM Infosphere MDM (for 11.4 and later)
CloverDX for IBM Infosphere MDM (for 11.4 and later)
CloverDX
Β
Impact 2011 2899 - Designing high performance straight through processes usin...
Impact 2011 2899 - Designing high performance straight through processes usin...
Brian Petrini
Β
Dropping ACID - Building Scalable Systems That Work
Dropping ACID - Building Scalable Systems That Work
Chris Patterson
Β
Talking LANDESK to Upper Management and Your Peers
Talking LANDESK to Upper Management and Your Peers
Eric Garlepp
Β
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
Bernd Ruecker
Β
Recommended
Event Driven Architecture
Event Driven Architecture
Chris Patterson
Β
GopherCon UK 2018 - Orchestration of microservices
GopherCon UK 2018 - Orchestration of microservices
Bernd Ruecker
Β
Managing State With JBoss Seam
Managing State With JBoss Seam
guest74ef29
Β
CloverDX for IBM Infosphere MDM (for 11.4 and later)
CloverDX for IBM Infosphere MDM (for 11.4 and later)
CloverDX
Β
Impact 2011 2899 - Designing high performance straight through processes usin...
Impact 2011 2899 - Designing high performance straight through processes usin...
Brian Petrini
Β
Dropping ACID - Building Scalable Systems That Work
Dropping ACID - Building Scalable Systems That Work
Chris Patterson
Β
Talking LANDESK to Upper Management and Your Peers
Talking LANDESK to Upper Management and Your Peers
Eric Garlepp
Β
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
Bernd Ruecker
Β
Domain Driven Design (DDD)
Domain Driven Design (DDD)
Tom Kocjan
Β
Domain Driven Design
Domain Driven Design
Ryan Riley
Β
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
thinkddd
Β
SOLID Principles and Design Patterns
SOLID Principles and Design Patterns
Ganesh Samarthyam
Β
Let's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
Β
Domain Driven Design 101
Domain Driven Design 101
Richard Dingwall
Β
Domain-Driven Design
Domain-Driven Design
Geeks Anonymes
Β
2011 iska - tim m - domain driven design
2011 iska - tim m - domain driven design
Tim Mahy
Β
IT Modernization For Process Modernization
IT Modernization For Process Modernization
Dheeraj Remella
Β
Three SOA Case Studies
Three SOA Case Studies
Paul Fremantle
Β
Building Maintainable PHP Applications.pptx
Building Maintainable PHP Applications.pptx
davorminchorov1
Β
Event Driven Architecture at NDDNUG
Event Driven Architecture at NDDNUG
Chris Patterson
Β
ScalabilityAvailability
ScalabilityAvailability
webuploader
Β
Model-driven and low-code development for event-based systems | Bobby Calderw...
Model-driven and low-code development for event-based systems | Bobby Calderw...
HostedbyConfluent
Β
Techcello at a glance
Techcello at a glance
kanimozhin
Β
5 Quick Wins for the Cloud
5 Quick Wins for the Cloud
RightScale
Β
Track c how do we break - jasper
Track c how do we break - jasper
chiportal
Β
Drools & jBPM Info Sheet
Drools & jBPM Info Sheet
Mark Proctor
Β
Pragmatic Approach to Microservices and Cell-based Architecture
Pragmatic Approach to Microservices and Cell-based Architecture
Andrew Blades
Β
Seminar - ScalableΒ Enterprise Application Development Using DDD and CQRS
Seminar - ScalableΒ Enterprise Application Development Using DDD and CQRS
Mizanur Sarker
Β
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Fwdays
Β
Product Development
Product Development
John Gibbon
Β
More Related Content
Viewers also liked
Domain Driven Design (DDD)
Domain Driven Design (DDD)
Tom Kocjan
Β
Domain Driven Design
Domain Driven Design
Ryan Riley
Β
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
thinkddd
Β
SOLID Principles and Design Patterns
SOLID Principles and Design Patterns
Ganesh Samarthyam
Β
Let's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
Β
Domain Driven Design 101
Domain Driven Design 101
Richard Dingwall
Β
Viewers also liked
(6)
Domain Driven Design (DDD)
Domain Driven Design (DDD)
Β
Domain Driven Design
Domain Driven Design
Β
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
Β
SOLID Principles and Design Patterns
SOLID Principles and Design Patterns
Β
Let's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming Language
Β
Domain Driven Design 101
Domain Driven Design 101
Β
Similar to RailswayCon 2010 - Command Your Domain
Domain-Driven Design
Domain-Driven Design
Geeks Anonymes
Β
2011 iska - tim m - domain driven design
2011 iska - tim m - domain driven design
Tim Mahy
Β
IT Modernization For Process Modernization
IT Modernization For Process Modernization
Dheeraj Remella
Β
Three SOA Case Studies
Three SOA Case Studies
Paul Fremantle
Β
Building Maintainable PHP Applications.pptx
Building Maintainable PHP Applications.pptx
davorminchorov1
Β
Event Driven Architecture at NDDNUG
Event Driven Architecture at NDDNUG
Chris Patterson
Β
ScalabilityAvailability
ScalabilityAvailability
webuploader
Β
Model-driven and low-code development for event-based systems | Bobby Calderw...
Model-driven and low-code development for event-based systems | Bobby Calderw...
HostedbyConfluent
Β
Techcello at a glance
Techcello at a glance
kanimozhin
Β
5 Quick Wins for the Cloud
5 Quick Wins for the Cloud
RightScale
Β
Track c how do we break - jasper
Track c how do we break - jasper
chiportal
Β
Drools & jBPM Info Sheet
Drools & jBPM Info Sheet
Mark Proctor
Β
Pragmatic Approach to Microservices and Cell-based Architecture
Pragmatic Approach to Microservices and Cell-based Architecture
Andrew Blades
Β
Seminar - ScalableΒ Enterprise Application Development Using DDD and CQRS
Seminar - ScalableΒ Enterprise Application Development Using DDD and CQRS
Mizanur Sarker
Β
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Fwdays
Β
Product Development
Product Development
John Gibbon
Β
Pragmatic Architecture in .NET
Pragmatic Architecture in .NET
housecor
Β
Assure - Complete Standardization for HP ALM
Assure - Complete Standardization for HP ALM
Assure
Β
Business Event Driven Architecture & Governance in Action
Business Event Driven Architecture & Governance in Action
HostedbyConfluent
Β
Containerization Strategy
Containerization Strategy
Balaji Mariyappan
Β
Similar to RailswayCon 2010 - Command Your Domain
(20)
Domain-Driven Design
Domain-Driven Design
Β
2011 iska - tim m - domain driven design
2011 iska - tim m - domain driven design
Β
IT Modernization For Process Modernization
IT Modernization For Process Modernization
Β
Three SOA Case Studies
Three SOA Case Studies
Β
Building Maintainable PHP Applications.pptx
Building Maintainable PHP Applications.pptx
Β
Event Driven Architecture at NDDNUG
Event Driven Architecture at NDDNUG
Β
ScalabilityAvailability
ScalabilityAvailability
Β
Model-driven and low-code development for event-based systems | Bobby Calderw...
Model-driven and low-code development for event-based systems | Bobby Calderw...
Β
Techcello at a glance
Techcello at a glance
Β
5 Quick Wins for the Cloud
5 Quick Wins for the Cloud
Β
Track c how do we break - jasper
Track c how do we break - jasper
Β
Drools & jBPM Info Sheet
Drools & jBPM Info Sheet
Β
Pragmatic Approach to Microservices and Cell-based Architecture
Pragmatic Approach to Microservices and Cell-based Architecture
Β
Seminar - ScalableΒ Enterprise Application Development Using DDD and CQRS
Seminar - ScalableΒ Enterprise Application Development Using DDD and CQRS
Β
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Β
Product Development
Product Development
Β
Pragmatic Architecture in .NET
Pragmatic Architecture in .NET
Β
Assure - Complete Standardization for HP ALM
Assure - Complete Standardization for HP ALM
Β
Business Event Driven Architecture & Governance in Action
Business Event Driven Architecture & Governance in Action
Β
Containerization Strategy
Containerization Strategy
Β
More from Lourens NaudΓ©
ZeroMQ as scriptable sockets
ZeroMQ as scriptable sockets
Lourens NaudΓ©
Β
TX/RX 101: Transfer data efficiently
TX/RX 101: Transfer data efficiently
Lourens NaudΓ©
Β
In the Loop - Lone Star Ruby Conference
In the Loop - Lone Star Ruby Conference
Lourens NaudΓ©
Β
EuRuKo 2011 - In the Loop
EuRuKo 2011 - In the Loop
Lourens NaudΓ©
Β
Event Driven Architecture
Event Driven Architecture
Lourens NaudΓ©
Β
RailswayCon 2010 - Dynamic Language VMs
RailswayCon 2010 - Dynamic Language VMs
Lourens NaudΓ©
Β
Barcamp PT
Barcamp PT
Lourens NaudΓ©
Β
Railswaycon Inside Matz Ruby
Railswaycon Inside Matz Ruby
Lourens NaudΓ©
Β
Embracing Events
Embracing Events
Lourens NaudΓ©
Β
More from Lourens NaudΓ©
(9)
ZeroMQ as scriptable sockets
ZeroMQ as scriptable sockets
Β
TX/RX 101: Transfer data efficiently
TX/RX 101: Transfer data efficiently
Β
In the Loop - Lone Star Ruby Conference
In the Loop - Lone Star Ruby Conference
Β
EuRuKo 2011 - In the Loop
EuRuKo 2011 - In the Loop
Β
Event Driven Architecture
Event Driven Architecture
Β
RailswayCon 2010 - Dynamic Language VMs
RailswayCon 2010 - Dynamic Language VMs
Β
Barcamp PT
Barcamp PT
Β
Railswaycon Inside Matz Ruby
Railswaycon Inside Matz Ruby
Β
Embracing Events
Embracing Events
Β
Recently uploaded
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
Boston Institute of Analytics
Β
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
The Digital Insurer
Β
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
V3cube
Β
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
Β
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Gabriella Davis
Β
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Β
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Product Anonymous
Β
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
UK Journal
Β
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
jfdjdjcjdnsjd
Β
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Enterprise Knowledge
Β
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
Β
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
Β
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Principled Technologies
Β
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
Antenna Manufacturer Coco
Β
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
Β
π¬ The future of MySQL is Postgres π
π¬ The future of MySQL is Postgres π
RTylerCroy
Β
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Michael W. Hawkins
Β
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
The Digital Insurer
Β
Finology Group β Insurtech Innovation Award 2024
Finology Group β Insurtech Innovation Award 2024
The Digital Insurer
Β
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Β
Recently uploaded
(20)
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
Β
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Β
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
Β
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Β
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Β
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Β
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Β
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Β
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
Β
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Β
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Β
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Β
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Β
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
Β
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Β
π¬ The future of MySQL is Postgres π
π¬ The future of MySQL is Postgres π
Β
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Β
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Β
Finology Group β Insurtech Innovation Award 2024
Finology Group β Insurtech Innovation Award 2024
Β
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Β
RailswayCon 2010 - Command Your Domain
1.
2.
3.
Well versed full
stack
4.
5.
Large whitelabel clients
6.
Bursty traffic β
Lady Gaga, EA, Gatorade
7.
Β
8.
9.
Often have an
anemic domain model, scattered logic
10.
Hockey stick function
β fast initial growth, increasingly difficult to extend over time
11.
12.
Existing monolithic applications
13.
Environments with excessive
coupling or dependencies
14.
15.
16.
17.
High coupling to
neighboring layers
18.
Coupled persistence
19.
Dependencies on host
frameworks
20.
21.
Application
22.
Domain
23.
24.
Modeling is often
data driven, not behavior driven
25.
Models / entities
are often coupled to conventions and dependencies of the host framework
26.
27.
Fast time to
market
28.
Request / response
+ rendering
29.
30.
Conventions, practices and
dependencies should grow with and adapt to that also
31.
32.
33.
Configuration management
34.
35.
Piggyback off known
contracts eg. cache['something']
36.
Deprecate framework specific
references in code
37.
Prefer SomeApp.cache to
Rails.cache etc.
38.
39.
Spawned a new
project, with yet another set of conventions
40.
41.
Extreme self-discipline, from
everyone
42.
Business Process Model
skills is required
43.
44.
45.
Push for a
common language β dev, product + biz
46.
47.
It'll be enhanced
with new concepts
48.
Weed out vague
/ deprecated elements
49.
Refactorings at this
level is often overlooked
50.
51.
Refactor to deeper
insights
52.
Extract hidden concepts
β look for edge cases, policies etc.
53.
In cooperation with
domain experts
54.
Refactor your domain
first, code second
55.
56.
57.
Distribute responsibilities first
58.
Then decide what
each entity needs to know
59.
60.
61.
Some developers don't
communicate well
62.
Snapshot thoughts to
wiki != fun
63.
64.
Concerned with features
65.
Concerned with cash
flow
66.
67.
68.
Not factoring clued
up domain experts into projects
69.
Shielding departments from
each other β us VS them
70.
Visual communication.Whiteboards ?
Diagrams ?
71.
Domain discussions encouraged
? Shot down ?
72.
73.
But never referenced
in an implementation
74.
75.
Over time, this
leads to breakthroughs
76.
Less edge cases
77.
Ability to handle
offline process programatically
78.
79.
Exceptions
80.
81.
Do include
business errors in your domain
82.
Define strategies for
offline or programatic handling
83.
84.
85.
86.
87.
88.
89.
Colorful speech
90.
β A valid
tax invoice for taxable sales that totals xβ
91.
92.
Refine statement ...
93.
Agree on statement
...
94.
repeat
95.
96.
Stakeholders
97.
98.
Test code
99.
Discussions and meetings
100.
Specs / diagrams
101.
Documentation
102.
103.
Invoice, transaction, business,
user, expense etc.
104.
Value object if
there's no identity.Reusable and immutable
105.
106.
β A transaction
between businesses generates an invoice.β
107.
@business.sells(2, product, other_biz)
108.
109.
110.
111.
112.
113.
Focus on the
domain, not data structure
114.
Delegate storage to
a repository
115.
116.
Published to your
whole stack
117.
Eventual consistency
118.
119.
Bypass persistence entirely
β force ready-only mode
120.
@record.attributes #=> value
object
121.
122.
Invoice.find(1) #=> entity
by identity
123.
Invoice.find_by_refr(x) #=> dynamic
and explicit query methods
124.
125.
126.
127.
Not expected to
return a result
128.
Should be idempotent
129.
Should expire itself
when not processed in a timeframe
130.
Yields an event
stream through interaction with the domain when processed instead
131.
132.
Try to signal
the intent of a change
133.
Wrap InvoiceChanged in
a module
134.
135.
Thus properties should
never be changed
136.
137.
Spinal cord is
the ESB
138.
Brain is the
event listener
139.
Brain is the
event processor
140.
141.
Consumption
142.
Processing
143.
144.
Async messaging
145.
Granular events
146.
147.
No centralized control
148.
149.
150.
151.
152.
153.
154.
Other than a
guarantee it's been received
155.
Should be idempotent
/ not reprocessed
156.
157.
PUT /invoice/1
158.
DESTROY /invoice/1
159.
160.
GET /invoices
161.
Serve from an
eventually consistent reporting DB
162.
163.
95% read, 5%
write
164.
System upgrade required
165.
166.
Disable all write
services + related features
167.
Continue serving requests
168.
169.
170.
171.
They keep histories
172.
No updates, no
deletes
173.
Work is always
auditable
174.
Totals is always
based on history
175.
176.
UPDATE
177.
Delete
178.
179.
#update_line_item_quantity
180.
181.
182.
Allows for compensation
on multiple updates
183.
Entity state is
driven exclusively from this
184.
185.
Aggregates domain events
186.
Feeds into a
reporting database
187.
188.
Audit log store
189.
Reporting database
190.
191.
at all times
192.
We do guarantee
that it'll be consistent eventually
193.
Relaxed consistency is
often acceptable
194.
195.
196.
Measure propogation and
flag SLA violations
197.
198.
199.
200.
Never block a
write on waiting for data β it's given
201.
Can use fast
disks for write oriented services
202.
Cache read tier
ftw!
203.
Formal state changes
== better cache invalidation
204.
205.
206.
Layered architectured ==
easy to swap out layers
207.
Arrays to mock
queue infrastructure
208.
Behavior driven testing
209.
Assert resulting events
or errors
210.
211.
212.
213.
214.
215.
216.
217.
Understand the protocol
218.
Client support
219.
Durability and failover
requirements
220.
Publish / subscribe
is preferred
221.
222.
Data types not
always harmonized β accept that
223.
224.
Individual systems can
modify their internal structures, providing we update our mapping layer
225.
Useful if we
have foreign messages (via API) to push in our stack as well β just coerce to the internal representation
226.
227.
Version backward incompatible
changes
228.
229.
Allows for keeping
old + new messages β no loss
230.
Thin and temp.
translator to pop messages off the old queue, translate / coerce them, push to the new one
231.
232.
Consumer required to
lookup any additional information required
233.
234.
Loosely coupled β
no additional service interactions
235.
Watch out for
size β Amazon SQS is limited to 8k
236.
237.
Enforcing SLAs
238.
239.
Destination system
240.
/rails/user/234/session_dssasdadas/controller/action
241.
Consider a βtouchβ
mecanism β history of systems the
242.
message has passed
through
243.
Download now