why service oriented architecture ddd north 20151024

Post on 11-Apr-2017

355 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related