SOA Lessons Learnt Krakow

Sean Farmar
Sean FarmarIndependent Consultant at Indy Code Software Consultants Ltd
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
Dimensions
Why SOA /
Microservices?
“Address coupling in our software
design by building loosely coupled and
highly encapsulated components”
Udi Dahan
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)
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
CRMOps
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
Lessons learnt(cont.)
DATA: separate OLTP and reporting,
eventual consistency
Monitoring - Lights on
Testing is HARD
Deployment - Automate everything
Organization and people, trust
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
Q&A
Thank You!
Sean Farmar
twitter: @farmar
Particular.net
1 of 16

More Related Content

Featured(20)

How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC3.7K views
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy82K views
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
Alireza Esmikhani30.2K views
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
Project for Public Spaces & National Center for Biking and Walking6.9K views
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
Erica Santiago25K views
9 Tips for a Work-free Vacation9 Tips for a Work-free Vacation
9 Tips for a Work-free Vacation
Weekdone.com7.1K views
I Rock Therefore I Am. 20 Legendary Quotes from PrinceI Rock Therefore I Am. 20 Legendary Quotes from Prince
I Rock Therefore I Am. 20 Legendary Quotes from Prince
Empowered Presentations142.8K views
How to Map Your FutureHow to Map Your Future
How to Map Your Future
SlideShop.com275.1K views

SOA Lessons Learnt Krakow