Page 1
Dennis van der Stelt
and building better & more reliable systems
Dennis van der Stelt
Software Architect
http://dennis.bloggingabout.net/
[email protected]
NServiceBus Community Champ
MESSAGING
@dvdstelt
#blaak
Page 2
Dennis van der Stelt
YOUR PRESENTER
Dennis van der Stelt
http://dennis.bloggingabout.net/
Software Architect
Professional Services
Provides coaching & training
About Dennis
Innovative software architect
Almost 20 years of experience in development of
distributed systems. Has a continuous drive to
learn and improve knowledge in different
architectural styles, including quality in software
development. Highly motivated to share his
knowledge via articles, presentations and his
blog.
Awards
NServiceBus Champ
Typemock MVP
Certified Trainer
• Presentations
• Software & Architecture audits
• SOA & Microservices advice
• Unit Testing training
• NServiceBus training
Page 3
Dennis van der Stelt
AGENDA
Page 4
Dennis van der Stelt
“You know nothing, Jon Snow”
Page 5
Dennis van der Stelt5
Messaging conceptsWhat is it about & why is it important?
Page 6
Dennis van der Stelt
Page 7
Dennis van der Stelt
Page 8
Dennis van der Stelt
synchronous asynchronousvs
Page 9
Dennis van der Stelt
Page 10
Dennis van der Stelt
Page 11
Dennis van der Stelt
Page 12
Dennis van der Stelt
Separation of concerns
Flexibility & Reusability
Scalability
why all the layers?
Page 13
Dennis van der Stelt
A monolithic design is characterized by such tight coupling
among modules that they really have no independent existence.
monolithic
Page 14
Dennis van der Stelt
MONOLITHIC DESIGN
How does my clean code become a big ball of mud?
Database
Page 15
Dennis van der Stelt
MONOLITHIC DESIGN
How does my clean code become a big ball of mud?
Database
Page 16
Dennis van der Stelt
Page 17
Dennis van der Stelt
Page 18
Dennis van der Stelt
Page 19
Dennis van der Stelt
Page 20
Dennis van der Stelt
COUPLING
Which layer has the
worst coupling?
Page 21
Dennis van der Stelt
Page 23
Dennis van der Stelt
SpatialTemporalPlatform
coupling aspects
Page 24
Dennis van der Stelt
PLATFORM
Also known as ‘interoperability’
http, json, xml, xsd, etc…
Page 25
Dennis van der Stelt
TEMPORAL
Store Front End Shipping Service
Page 26
Dennis van der Stelt
TEMPORAL
Store Front End Shipping ServiceShipping Service
Page 27
Dennis van der Stelt
TEMPORAL
Store Front End Shipping ServiceOrder Queue
Page 28
Dennis van der Stelt
TEMPORAL
Store Front End Shipping ServiceOrder Queue
Page 29
Dennis van der Stelt
TEMPORAL
Store Front End Shipping ServiceOrder Queue
Page 30
Dennis van der Stelt
SPATIAL
Page 31
Dennis van der Stelt
SPATIAL.netapplication
.net application
ShipOrder AssignTask
Page 32
Dennis van der Stelt
Messaging
Reduces spatial coupling
XML/JSON for platform coupling
Asynchronous for temporal coupling
Page 33
demo
Messaging using WCF
Page 34
Dennis van der Stelt
PERFORMANCE
RPC versus Messaging
Page 35
Dennis van der Stelt36
ArchitectureWe do microservices, ‘cause this time
it is the silver bullet!
Page 36
Dennis van der Stelt
Page 37
Dennis van der Stelt
SERVICE ORIENTATION AT RUNTIME
Page 40
Dennis van der Stelt
Don’t do request/reply
Page 41
Dennis van der Stelt
Page 42
Dennis van der Stelt
Don’t use asynchronous
messaging to query a datastore
for displaying purposes!
Everything has its place.
Messaging isn’t a silver bullet
you use for everything.
Page 43
demo
NServiceBus Demo
Page 44
Dennis van der Stelt
CAP TheoremEric Brewer, PODC Conference 2000
Page 45
Dennis van der Stelt
CAP THEOREM
You can only pick 2
Page 46
Dennis van der Stelt
CAP THEOREM
You can only pick 2
centralized
system
partition tolerantconsistencyavailability
Page 47
Dennis van der Stelt
CAP THEOREM
You can only pick 2
centralized
system
partition tolerantconsistencyavailability
Page 48
Dennis van der Stelt
CAP THEOREM
You can only pick 2
centralized
system
partition tolerantconsistencyavailability
distributed
system
partition tolerantconsistencyavailability
Page 49
Dennis van der Stelt
CAP THEOREM
You can only pick 2
centralized
system
partition tolerantconsistencyavailability
distributed
system
partition tolerantconsistencyavailability
when there’s network partition,
which do you sacrifice?
Page 50
Dennis van der Stelt
Match the business perspective
Page 51
Dennis van der Stelt
Page 52
Dennis van der Stelt
Page 53
Dennis van der Stelt
Page 54
Dennis van der Stelt
But I can’t drop consistency!
Page 55
Dennis van der Stelt
Basically Available
BASE
What is BASE?
Soft state
Eventually consistent
Page 56
Dennis van der Stelt
Eventual ConsistencyBecause 100% consistency isn’t the only option
Page 57
Dennis van der Stelt
Page 58
Dennis van der Stelt
Eventual Consistency
Page 59
Dennis van der Stelt
Eventual Consistency
Page 60
Dennis van der Stelt
Eventual Consistencyyour “enterprise” is already eventual consistent with reality
Page 61
Dennis van der Stelt
Eventual Consistencyyour “enterprise” is already eventual consistent with reality
Page 62
Dennis van der Stelt
“Allow things to be inconsistent and find ways to
compensate for mistakes, versus trying to prevent
mistakes altogether.”
EVENTUAL CONSISTENCY
Eric BrewerVP of Infrastructure at Google, Professor at UC Berkeley
Page 63
Dennis van der Stelt
Some ideas on messaging
Page 64
Dennis van der Stelt
100% synchronized
that‘s eventual consistency.
Udi Dahan in 2010
Page 65
Dennis van der Stelt
SagasLong running processes
Page 66
Dennis van der Stelt
Death to the batchjob
Page 67
Dennis van der Stelt
Page 68
Dennis van der Stelt
Page 69
Dennis van der Stelt
Page 70
Dennis van der Stelt
Page 71
Dennis van der Stelt
Page 72
Dennis van der Stelt
Page 73
Dennis van der Stelt
Page 74
Dennis van der Stelt
Page 75
Dennis van der Stelt
Page 76
Dennis van der Stelt
Page 77
Dennis van der Stelt
Page 78
Dennis van der Stelt
Page 79
Dennis van der Stelt
Page 80
Dennis van der Stelt
Page 81
demo
NServiceBus Saga demo
Page 82
Dennis van der Stelt
Asynchronous messaging helps achieve
decoupling at design- & runtime
There’s a lot to think about, designing an
eventual consistent distributed system.
Everyone needs to think about the CAP
Theorem, etc, with or without async messaging
Conclusion
Page 83
Dennis van der Stelt
Page 84
Dennis van der Stelt
find me.http://dennis.bloggingabout.net
[email protected]