Building reliable applications with messaging

84
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

Transcript of Building reliable applications with messaging

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

reduce

coupling

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]