When should I consider a dedicated server instead of cloud VPS?

Solution 1:

Generally you would consider going to dedicated hardware:

  • When you need more performance.
    Cloud machines are notoriously low power compared to even midrange servers. A midrange server is a dual socket machine ("per definition" for the last few years: more than 2 sockets being high end, the single socket machines being lower end servers) and I have problems finding comparable virtual machines.
  • When you need a lower price per month.
    The price of most VPS is quite high - unless dedicated/prepaid (i.e. reserved for a year). Cloud is scalable but the per hour pricing multiplied by your usage can be multiple times the cost of a server.
  • When some timing issues are critical.
    Virtualization makes the clock unstable under some circumstances. Not an issue in most cases, but I had problems with maintaining proper timestamps with millisecond accuracy for years.
    Newer virtualization platforms are better at this (seems to work with the newest Hyper-V).
  • When you need special configurations.
    Let's say fast or very large disk arrays where you want to have more control over the layout. Higher-end databases (Oracle) are notorious for that sort of requirement.

And that is sort of it.

Note that in your case there is a lot of room on a VPS - I have 8 core machines with 48gb memory running large databases for customers. In your case the decision would possbily run around the price. One of my bridge machines (a machine located at a specific location to run code close to that location, due to timing sensitivity) is a 16gb memory machine with 8 cores + hyperthreading and it is considered to be a low power machine.

I would start taking to your host about this - they may come up with sensible alternatives while also taking the price into consideration. In your case a cloud may be good because you can wind down the number of VM's during off-peak time (saving money) and do rolling updates. This is the ONE main advantage of "cloud" hosting - flexibility of the number of VM's running. Spike? spin up another 10. Night? spin down most. Real servers do not give you this flexibility.

Solution 2:

This question is becoming more and more obsolete nowadays. However there are still a lot of requirements for dedicated as well for cloud VM.

The pro's:

  • A VM is more flexible
    • dynamic resource assignment (RAM, CPU, storage)
    • in case of hard ware errors or hard ware upgrade, a VM can be migrated transparently to another HW (High Availability and Fault Tolerance)
    • is more secure when assigning an stale CPU model
    • is scalable in performance or throughput

The con's:

  • real HW Nodes are always faster than VM's in case of performance and latency
  • to setup Virtualization is always more difficult and time consuming
  • HW nodes have long recovery time in case of HW failures compared to a VM, so they are inflexible and have more downtime

In your case i'd fist evacuate big static files to storage servers like S3.