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.