.NET Day 19 - Finding Your Service Boundaries - A Practical Guide by Adam Ralph

.NET Day 19 - Finding Your Service Boundaries - A Practical Guide by Adam Ralph

We know it's useful to split up complex systems. We've seen the benefits of modular deployment of microservices. Dealing with only one piece of code at a time eases our cognitive load. But how do we know where to draw the service boundaries? In complex business domains, it's often difficult to know where to start. When we get our boundaries wrong, the clocks starts ticking. Before long, we hear ourselves say "it would be easier to re-write it".
Join Adam for practical advice on discovering the hidden boundaries in your systems. Help tease out the natural separation of concerns in a sample business domain. During 20 years of developing complex systems, Adam has had plenty of time to get things wrong. Learn to avoid the common pitfalls that can lead us down the path to "the big re-write".

E6cffbf3b7a5fbfee4707033ef1636f5?s=128

dotnetday

May 28, 2019
Tweet

Transcript

  1. @adamralph FINDING YOUR SERVICE BOUNDARIES A PRACTICAL GUIDE Adam Ralph

  2. @adamralph

  3. @adamralph

  4. @adamralph BIG BALL OF MUD

  5. @adamralph Service Service Service Service

  6. @adamralph Machine Machine Machine Machine BIG BALL OF MUD

  7. @adamralph WORKFLOWS Adam Ralph Im Mediapark 7 50670 Köln Germany

  8. @adamralph OrderPlaced WORKFLOW EVENTS Finance Shipping Sales OrderBilled OrderShipped PlaceOrder

  9. @adamralph WORKFLOW EVENTS SetOrderId = 022032ba-1337-43a5-90c9-d48b58742c7

  10. @adamralph Adam Ralph Im Mediapark 7 50670 Köln Germany Shipping

    Shipping Finance Finance Sales Sales WORKFLOW MESSAGES
  11. @adamralph OrderPlaced WORKFLOW EVENTS Finance Shipping Sales OrderBilled OrderShipped PlaceOrder

  12. @adamralph Machine Machine Machine Machine BIG BALL OF MUD

  13. @adamralph Service Service Service Service

  14. @adamralph WHAT A SERVICE IS NOT - A service that

    has only functionality is a function not a service: Like calculation, validation, etc. - A service that has only data is a database not a service: Like [create, read, update, delete] entity - HTTP/WSDL doesn’t change logical responsibility
  15. @adamralph WHAT IS A SERVICE? A service is the technical

    authority for a specific business capability - All data & business rules reside within the service (bounded context?) - Nothing is “left over” after identifying services. Everything must be in some service
  16. @adamralph S1 S2 S3 MOBILE BACK END PORTAL SYSTEMS &

    SERVICES
  17. @adamralph DECOMPOSING A DOMAIN public class Customer { FirstName LastName

    Status // etc } public class Product { Name Description Price // etc } • Customer status • Product price • Customer’s first name • Customer’s last name • Product name • Product description RED GREEN YELLOW
  18. @adamralph Home insurance Travel insurance Car insurance Policy Service Home

    insurance Travel insurance Car insurance Claims Service Insured vehicle Coverage PolicyId ClaimId Car Insurance Home owner Coverage PolicyId ClaimId Home Insurance Insured persons Coverage PolicyId ClaimId Travel Insurance INSURANCE
  19. @adamralph ORGANISATIONS

  20. @adamralph MICROSERVICES

  21. @adamralph BIG BALL OF MUD

  22. @adamralph

  23. @adamralph

  24. @adamralph

  25. @adamralph

  26. @adamralph BIG BALL OF MUD Microservices Edition™

  27. @adamralph ID ID ID ID ID ID STATE- MENTS FRAUD

  28. @adamralph go.particular.net/dnd19-boundaries

  29. @adamralph

  30. @adamralph FINDING YOUR SERVICE BOUNDARIES A PRACTICAL GUIDE Adam Ralph