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.
Sean FarmarIndependent Consultant at Indy Code Software Consultants Ltd
7. Why SOA /
Microservices?
“Address coupling in our software
design by building loosely coupled and
highly encapsulated components”
Udi Dahan
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)
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. Lessons learnt(cont.)
DATA: separate OLTP and reporting,
eventual consistency
Monitoring - Lights on
Testing is HARD
Deployment - Automate everything
Organization and people, trust
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