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?
https://developersummit.com/session/granularity-communication-for-microservice-architectures