The four main drivers for granularity integration are as follows:

  • Database transactions: Is an ACID transaction required between separate services?
  • Workflow and choreography: Do services need to talk to one another?
  • Shared code: Do services need to share code among one another?
  • Database relationships: Although a service can be broken apart, can the data it uses be broken apart as well?

Link:: Software Architecture the Hard Parts