Granularity disintegrators provide guidance and justification for when to break a service into smaller pieces. While the justification for breaking up a service may involve only a single driver, in most cases the justification will be based on multiple drivers. The six main drivers for granularity disintegration are as follows:

  • Service scope and function
    • Is the service doing too many unrelated things?
  • Code volatility
    • Are changes isolated to only one part of the service?
  • Scalability and throughput
    • Do parts of the service need to scale differently?
  • Fault tolerance
    • Are there errors that cause critical functions to fail within the service?
  • Security
    • Do some parts of the service need higher security levels than others?
  • Extensibility
    • Is the service always expanding to add new contexts?

Link:: Software Architecture the Hard Parts