Suche senden
Hochladen
RailswayCon 2010 - Command Your Domain
•
Als ODP, PDF herunterladen
•
6 gefällt mir
•
4,179 views
Lourens Naudé
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 67
Jetzt herunterladen
Empfohlen
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
Empfohlen
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
Weitere ähnliche Inhalte
Andere mochten auch
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
Andere mochten auch
(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
Ähnlich wie 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
Ähnlich wie 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
Mehr von 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é
Mehr von 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
Kürzlich hochgeladen
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
Inflectra
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Nicole Novielli
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Databarracks
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
ThousandEyes
A Framework for Development in the AI Age
A Framework for Development in the AI Age
Cprime
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
LoriGlavin3
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
panagenda
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
Hiroshi SHIBATA
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Scott Andery
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
ThousandEyes
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
Knoldus Inc.
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
Raghuram Pandurangan
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
Skynet Technologies
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
MounikaPolabathina
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
UiPathCommunity
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
Rick Flair
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
Farhan Tariq
Kürzlich hochgeladen
(20)
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
A Framework for Development in the AI Age
A Framework for Development in the AI Age
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
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.
Jetzt herunterladen