Why Service Oriented
Architecture? Sean Farmar
@farmar
The Evolution•Small monolith•Success == growth == features ++•Team Scaling•Maintenance nightmare == high
risk•So we end up with …
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 (protocols, .Net
Remoting)
Coupling
Coupling: Afferent & Efferent
•Afferent (dependents)•Efferent (depend on)
Afferent & Efferent solutions:•Attempt to minimize•Zero coupling is not possible
Coupling: TemporalTemporal (time, RPC)
Temporal solutions:•Asynchronous messaging•Publish Subscribe
Coupling: Spatial Spatial (deployment, endpoint address)
Spatial solutions:•Delegate the endpoint/service location to the infrastructure, not in application code
Coupling: PlatformPlatform 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”
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
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
In practice
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)
Monolith
UI
BL
DAL
DB
Tight CouplingLoose Coupling
Vertical Slicing
UI
BL
DAL
DB Referential Integrity
Tight CouplingLoose Coupling
Re-introduces Coupling
SalesConte
ntCRMOps
Publish Subscribe [pub/sub]
Publish Subscribe [pub/sub]
Subscribe to Customer Status
Updated
PublishCustomer Status Updated
Save status locally
Subscribe to Product Product Pricing UpdatedPricing Updated
PublishProduct Pricing Updated
Save pricing locally
Place Order
Publish Order Accepted
Sales
Marketing
Customer Care
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.
Sign up here:http://go.particular.net/
DDDNorthAccess code : DNORT
Expiration date: Nov 16th
Q&A
Thank You!Sean Farmartwitter: @farmarParticular.net