Evolutionary design
The advantages and disadvantages of certain architectural styles shift for various reasons. One is the scale of your application. Another is the knowledge of your domain and your customers and the ability to operate at scale. Depending on these factors, different architectural styles are better suited for you (see Figure 16.1):
Constantly adapting your architecture and system design to your current needs is called evolutionary design. To start a greenfield product, it's best to start with a monolithic approach and one team. This allows you to move fast without much overhead. If you scale up and learn more about the domain, you can start to modularize your application using the capabilities of your programming language. At one point, the complexity and scale will be so high that microservices help you to keep your product testable and deployable.
The question is...