Why Service Oriented
Architecture?
Sean Farmar
@farmar
The Evolution
• Small monolith
• Success == growth == features ++
• Team Scaling
• Maintenance nightmare == high risk
• So...
Big Ball of Mud
So I went to my master
Solve the problem
you want?
• Coupling your problem is…
• Hmmmm
• SOA your solution will be
Why SOA?
• SOA's tenets are about reducing coupling.
• Afferent (dependents)
• Efferent (depend on)
• Temporal (time, RPC)
• Spatial (deployment, endpoint address)
• Platform ...
Coupling:
Afferent & Efferent
• Afferent (dependents)
• Efferent (depend on)
Afferent & Efferent solutions:
• Attempt to m...
Coupling:Temporal
Temporal (time, RPC)
Temporal solutions:
•Asynchronous messaging
•Publish Subscribe
Coupling: Spatial
Spatial (deployment, endpoint address)
Spatial solutions:
•Delegate the endpoint/service location to
the...
Coupling: Platform
Platform AKA Interoperability (protocols, .Net
Remoting)
Platform solutions:
•XML on the wire.
•Use sta...
Fallacies of
Distributed Computing
• The administrator will know what to do
• The network is reliable
• Latency isn’t a pr...
Fallacies of
Distributed Computing
• Transport cost isn’t a problem
• The network is homogeneous
• The system is atomic/mo...
In practice
In practice
• Vertical Slicing
• Using asynchronous messaging
• Using publish subscribe
• Business domain decomposition
• ...
Monolith
UI
BL
DAL
DB
Tight Coupling
Loose Coupling
Vertical Slicing
UI
BL
DAL
DB Referential Integrity
Tight Coupling
Loose Coupling
Re-introduces Coupling
Sales
Conten
t
CR...
Publish Subscribe
[pub/sub]
Publish Subscribe
[pub/sub]
Subscribe to
Customer Status Updated
Publish
Customer Status Updated
Save status locally
Subscribe to Product PricingProdu...
Summary
• SOA
• NServiceBus
• Particular.net
• You can do it
Learn to design better
systems
Get access to 2 full days of
Udi Dahan's Advanced
Distributed Systems Design
video course.
...
Q&A
ThankYou!
Sean Farmar
twitter: @farmar
Particular.net
Upcoming SlideShare
Loading in …5
×

Why Service Oriented Architecture DDD North 20151024

408 views

Published on

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…

Published in: Software
  • Be the first to comment

Why Service Oriented Architecture DDD North 20151024

  1. 1. Why Service Oriented Architecture? Sean Farmar @farmar
  2. 2. The Evolution • Small monolith • Success == growth == features ++ • Team Scaling • Maintenance nightmare == high risk • So we end up with …
  3. 3. Big Ball of Mud
  4. 4. So I went to my master
  5. 5. Solve the problem you want? • Coupling your problem is… • Hmmmm • SOA your solution will be
  6. 6. Why SOA? • SOA's tenets are about reducing coupling.
  7. 7. • Afferent (dependents) • Efferent (depend on) • Temporal (time, RPC) • Spatial (deployment, endpoint address) • Platform (protocols, .Net Remoting) Coupling
  8. 8. Coupling: Afferent & Efferent • Afferent (dependents) • Efferent (depend on) Afferent & Efferent solutions: • Attempt to minimize • Zero coupling is not possible
  9. 9. Coupling:Temporal Temporal (time, RPC) Temporal solutions: •Asynchronous messaging •Publish Subscribe
  10. 10. Coupling: Spatial Spatial (deployment, endpoint address) Spatial solutions: •Delegate the endpoint/service location to the infrastructure, not in application code
  11. 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. 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. 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
  14. 14. In practice
  15. 15. In practice • Vertical Slicing • Using asynchronous messaging • Using publish subscribe • Business domain decomposition • Explicit intentions [naming, context] • Single Responsibility • Command Query Separation • “Clean Code” (Uncle Bob)
  16. 16. Monolith UI BL DAL DB Tight Coupling Loose Coupling
  17. 17. Vertical Slicing UI BL DAL DB Referential Integrity Tight Coupling Loose Coupling Re-introduces Coupling Sales Conten t CRMOps
  18. 18. Publish Subscribe [pub/sub]
  19. 19. Publish Subscribe [pub/sub]
  20. 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
  21. 21. Summary • SOA • NServiceBus • Particular.net • You can do it
  22. 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
  23. 23. Q&A ThankYou! Sean Farmar twitter: @farmar Particular.net

×