Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
SOA Lessons Learnt
(OR Microservices Done Better)
Sean Farmar
@farmar
My journey to SOA
Tried all “Best Practices”
Layers and Tiers
Distributed monoliths using Web Services
… and failed
So I went to my
master
Solve the problem you want?
mmmm…
Coupling your problem is…
Coupling
Temporal (time, synchronous calls)
Spatial (deployment, endpoint
address)
Platform (protocols, .Net Remoting)
Coupling
Dim...
Why SOA /
Microservices?
“Address coupling in our software
design by building loosely coupled and
highly encapsulated comp...
Fallacies of
Distributed Computing
1. The network is reliable. (Bill Joy and Tom Lyon)
2. Latency is zero. (Bill Joy and T...
The Fallacies EBook
• Go to: http://go.particular.net/KGD16
Encapsulation
Autonomy
Decomposing Business entities
SRP
Keep your vertical slice thin, top to bottom
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...
Lessons learnt
It’s hard (er)
Decomposing your business domain, is hard,
avoid the pitfalls of standard design
methodologi...
Lessons learnt(cont.)
DATA: separate OLTP and reporting,
eventual consistency
Monitoring - Lights on
Testing is HARD
Deplo...
Summary
• Avoid all dimensions of coupling
• No synchronous communication between
components/microservices,
• Don't share ...
Q&A
Thank You!
Sean Farmar
twitter: @farmar
Particular.net
Upcoming SlideShare
Loading in …5
×

SOA Lessons Learnt Krakow

51 views

Published on

Service Oriented Architecture has been around for a while, now Microservices is the new black, that’s cool, but can we learn from when we failed and succeeded implementing SOA? There are some really useful lessons we can take and avoid the pitfalls.

Published in: Software
  • Be the first to comment

  • Be the first to like this

SOA Lessons Learnt Krakow

  1. 1. SOA Lessons Learnt (OR Microservices Done Better) Sean Farmar @farmar
  2. 2. My journey to SOA Tried all “Best Practices” Layers and Tiers Distributed monoliths using Web Services … and failed
  3. 3. So I went to my master
  4. 4. Solve the problem you want? mmmm… Coupling your problem is…
  5. 5. Coupling
  6. 6. Temporal (time, synchronous calls) Spatial (deployment, endpoint address) Platform (protocols, .Net Remoting) Coupling Dimensions
  7. 7. Why SOA / Microservices? “Address coupling in our software design by building loosely coupled and highly encapsulated components” Udi Dahan
  8. 8. Fallacies of Distributed Computing 1. The network is reliable. (Bill Joy and Tom Lyon) 2. Latency is zero. (Bill Joy and Tom Lyon) 3. Bandwidth is infinite. (Bill Joy and Tom Lyon) 4. The network is secure. (Bill Joy and Tom Lyon) 5. Topology doesn’t change. (Peter Deutsch) 6. There is one administrator. (Peter Deutsch) 7. Transport cost is zero. (Peter Deutsch) 8. The network is homogeneous. (James Gosling)
  9. 9. The Fallacies EBook • Go to: http://go.particular.net/KGD16
  10. 10. Encapsulation Autonomy Decomposing Business entities SRP Keep your vertical slice thin, top to bottom
  11. 11. Monolith UI BL DAL DB Tight Coupling Loose Coupling
  12. 12. Vertical Slicing UI BL DAL DB Referential Integrity Tight Coupling Loose Coupling Re-introduces Coupling Sales Conten t CRMOps
  13. 13. Lessons learnt It’s hard (er) Decomposing your business domain, is hard, avoid the pitfalls of standard design methodologies Messaging: Fire and forget CQS: Separating data writes and data reads Data (write) ownership Referential integrity and GUIDS
  14. 14. Lessons learnt(cont.) DATA: separate OLTP and reporting, eventual consistency Monitoring - Lights on Testing is HARD Deployment - Automate everything Organization and people, trust
  15. 15. Summary • Avoid all dimensions of coupling • No synchronous communication between components/microservices, • Don't share data, use view/read models to share read only data • Decomposing your business domain and entities • You can do it on .Net platform using NServiceBus • Blog post: http://particular.net/blog/goodbye- microservices-hello-right-sized-services • Fallacies EBook: http://go.particular.net/KGD16
  16. 16. Q&A Thank You! Sean Farmar twitter: @farmar Particular.net

×