One of the first decisions that we need to make when starting every serious software project is a set choices related to hardware. And believe us, this is not only a very important choice, but also one of the most difficult ones. Often the decisions are made at early project stages, when only the basic architecture is known and we don't have precise information regarding the queries, data load, and so on. Project architect has to balance precaution and projected cost of the whole solution. Too many times it is an intersection of experience and clairvoyance, which can lead to either great or terrible results.
Let's start with a decision: a cloud, virtual, or physical machines. Nowadays, these are all valid options, but it was not always the case. Sometime ago the only option was to buy new servers for each environment part or share resources with the other applications on the same machine. The second option makes perfect sense as it is more cost-effective...