Striking this balance requires starting with a business process view of an application. Who uses this, how many slightly different ways might the functions of the application be divided based on worker needs, how often is the application likely to be used, and how critical is it that the application's performance be stellar? But also be aware of the logical length of the workflows the application represents, because it's this factor that limits microservice segmentation. This structure would not contain a series of microservice "tiles" that fed storefronts from other storefronts or daisy-chained components. These will increase application response time through API delays. That means you'll have to balance the division of applications into small components and the need to chain through many such components to process a single request or transaction.