Building applications based upon a monolithic application design is something that has been done for years. The downside of a monolithic application design is that scaling is in general only possible in a vertical manner and in most cases not possible in a horizontal model. Next to this, monolithic application design, is in general less resilient against component failure. Building applications based upon a more microservice oriented architecture principle is becoming more and more common.
The below diagram shows a sample of how an application can be "broken down" into a number of different microservices who all have their own role and can run together on a single machine or can as a single microservice instance run on one or multiple machines. This allows for high performance and resillience against component failiure.
Building an application based upon a microservice oriented architecture principle while using purely opensource based components is described in this blogpost on my personal blog. It shows how one can use Oracle VM and Oracle Linux in combination with NGINX and Flask to build a solution.