Files
ObsidianJournal/Work/Training/Advanced Distributed Systems/Advanced Distributed Systems Design - Module 7 - Service Decomposition.md

999 B

Indications that you need to sub-divide a service into components:

  • Quality of service requirements
    • are there large variations in response times
    • ...in transaction processing times
    • The business might treat categories of customer differently
    • We should actually sub-divide our sales service into RegularCustomers component and StrategicCustomers component
  • These things can start to show up when the business starts asking you to treat something (like a customer) in little different ways throughout the system.  You end up with a bunch of if statements asking the same question.  
    • Ask the business if this is really a new business component
    • Fork the code base and let them grow apart.  This is liberating as you don't have to maintain both component requirements in one code base.
  • More examples
    • Airlines - business vs economy class
    • Shipping - frozen goods vs regular toilet paper
    • Billing - charging credit cards vs invoicing