Most web applications are fundamentally similar. They get input from users and then process and store it. The end result usually shows the processed input to users in the form of an output. Such applications are usually called CRUDs (create, read, update and delete). This means that the infrastructure (the core components that work together) needed to support a typical product can stay almost the same for the majority of different kinds of startups. In this article, I show what are those core components and how to design the infrastructure in a way that it is efficient, scalable (it grows along with the product) and cost-effective.