When we go about designing and building a scalable durable system we need to solve the number one issue: coupling.
Implementing Service Oriented style architecture also refereed to lately as micro-services will help you solve this problem.
In this talk, I will present the paradigm of Service Oriented Architecture…
10. Coupling: Spatial
Spatial (deployment, endpoint address)
Spatial solutions:
•Delegate the endpoint/service location to
the infrastructure, not in application code
11. Coupling: Platform
Platform AKA Interoperability (protocols, .Net
Remoting)
Platform solutions:
•XML on the wire.
•Use standards based transfer protocol like http
•“Share contract and schema, not class or type”
12. Fallacies of
Distributed Computing
• The administrator will know what to do
• The network is reliable
• Latency isn’t a problem
• Bandwidth isn’t a problem
• The network is secure
• Topology won’t change
13. Fallacies of
Distributed Computing
• Transport cost isn’t a problem
• The network is homogeneous
• The system is atomic/monolithic
• The system is finished
• Business logic can and should be centralized
20. Subscribe to
Customer Status Updated
Publish
Customer Status Updated
Save status locally
Subscribe to Product PricingProduct Pricing
UpdatedUpdated
Publish
Product Pricing Updated
Save pricing locally
Place Order
Publish Order Accepted
Sales
MarketingCustomer
Care
22. Learn to design better
systems
Get access to 2 full days of
Udi Dahan's Advanced
Distributed Systems Design
video course.
Sign up here:
http://go.particular.net/DDDNo
rth
Access code : DNORT
Expiration date: Nov 16th
I’ve been hacking code for a living in the last 20 years
In 2007 (November) I was looking for a way to do software better and made a move to Service Oriented Architecture using NServiceBus, it was a paradigm shift that changed the way I do software forever.
We all probably been there
Start with a green field, small monolith, clean design
Then the business succeeds, we add features and our clean code gets littered with more code to cater for more features
We soon find ourselves dreading change anything…
You know, I went trough this a couple of times, each time trying a different approach, but the result was always the same…
Insanity: doing the same thing over and over again and expecting different results.
So I went to my master…
YODA! What am I doing wrong?
I’m doing everything by the book,
n-tier, layers and tiers.
I even tried web services…
Nothing seams to work!
1: Boundaries are explicit
2: Services are autonomous
3: Services share schema & contract, not class
4: Service compatibility is based upon policy
Transactions & Temporal Coupling
Asynchronous messaging makes it difficult to have transactions cross boundaries
Don’t let transactions flow between services
Autonomy means not letting any one lock or modify something that’s yours
Platform
Also known as “Interoperability”
Using protocols only available on one platform
Remoting, Enterprise Services, Datasets over Web Services
One of the famous 4 Tenets: “Share contract and schema, not class or type”
The fallacies of distributed computing describe common assumptions that are made by developers and architects in distributed systems.
In 1994 Peter Deutsch wrote down seven fallacies.
In 1997 James Gosling added another fallacy.
These fallacies are known as “The eight fallacies of distributed computing”.
In the year 2006 Ted Neward added three more fallacies, which are not so widely known.
The fallacies of distributed computing describe common assumptions that are made by developers and architects in distributed systems.
In 1994 Peter Deutsch wrote down seven fallacies.
In 1997 James Gosling added another fallacy.
These fallacies are known as “The eight fallacies of distributed computing”.
In the year 2006 Ted Neward added three more fallacies, which are not so widely known.