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?