We recommend our clients take an evolutionary approach towards building a product or web application specifically when the domain that we are dealing with is complex. We usually start with the development of a system with coarse-grained services, then move to fine-grained services over a period of time. We employ industry-standard good practices of Domain-Driven design and microservice architecture to ensure that application design is flexible enough to evolve over time.