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
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
Dennis van der Stelt
AGENDA
Dennis van der Stelt
“You know nothing, Jon Snow”
Dennis van der Stelt5
Messaging conceptsWhat is it about & why is it important?
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
synchronous asynchronousvs
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Separation of concerns
Flexibility & Reusability
Scalability
why all the layers?
Dennis van der Stelt
A monolithic design is characterized by such tight coupling
among modules that they really have no independent existence.
monolithic
Dennis van der Stelt
MONOLITHIC DESIGN
How does my clean code become a big ball of mud?
Database
Dennis van der Stelt
MONOLITHIC DESIGN
How does my clean code become a big ball of mud?
Database
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
COUPLING
Which layer has the
worst coupling?
Dennis van der Stelt
Dennis van der Stelt
SpatialTemporalPlatform
coupling aspects
Dennis van der Stelt
PLATFORM
Also known as ‘interoperability’
http, json, xml, xsd, etc…
Dennis van der Stelt
TEMPORAL
Store Front End Shipping Service
Dennis van der Stelt
TEMPORAL
Store Front End Shipping ServiceShipping Service
Dennis van der Stelt
TEMPORAL
Store Front End Shipping ServiceOrder Queue
Dennis van der Stelt
TEMPORAL
Store Front End Shipping ServiceOrder Queue
Dennis van der Stelt
TEMPORAL
Store Front End Shipping ServiceOrder Queue
Dennis van der Stelt
SPATIAL
Dennis van der Stelt
SPATIAL.netapplication
.net application
ShipOrder AssignTask
Dennis van der Stelt
Messaging
Reduces spatial coupling
XML/JSON for platform coupling
Asynchronous for temporal coupling
demo
Messaging using WCF
Dennis van der Stelt
PERFORMANCE
RPC versus Messaging
Dennis van der Stelt36
ArchitectureWe do microservices, ‘cause this time
it is the silver bullet!
Dennis van der Stelt
Dennis van der Stelt
SERVICE ORIENTATION AT RUNTIME
Dennis van der Stelt
Don’t do request/reply
Dennis van der Stelt
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.
demo
NServiceBus Demo
Dennis van der Stelt
CAP TheoremEric Brewer, PODC Conference 2000
Dennis van der Stelt
CAP THEOREM
You can only pick 2
Dennis van der Stelt
CAP THEOREM
You can only pick 2
centralized
system
partition tolerantconsistencyavailability
Dennis van der Stelt
CAP THEOREM
You can only pick 2
centralized
system
partition tolerantconsistencyavailability
Dennis van der Stelt
CAP THEOREM
You can only pick 2
centralized
system
partition tolerantconsistencyavailability
distributed
system
partition tolerantconsistencyavailability
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?
Dennis van der Stelt
Match the business perspective
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
But I can’t drop consistency!
Dennis van der Stelt
Basically Available
BASE
What is BASE?
Soft state
Eventually consistent
Dennis van der Stelt
Eventual ConsistencyBecause 100% consistency isn’t the only option
Dennis van der Stelt
Dennis van der Stelt
Eventual Consistency
Dennis van der Stelt
Eventual Consistency
Dennis van der Stelt
Eventual Consistencyyour “enterprise” is already eventual consistent with reality
Dennis van der Stelt
Eventual Consistencyyour “enterprise” is already eventual consistent with reality
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
Dennis van der Stelt
Some ideas on messaging
Dennis van der Stelt
100% synchronized
that‘s eventual consistency.
Udi Dahan in 2010
Dennis van der Stelt
SagasLong running processes
Dennis van der Stelt
Death to the batchjob
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
demo
NServiceBus Saga demo
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
Dennis van der Stelt
Dennis van der Stelt
find me.http://dennis.bloggingabout.net
[email protected]