These days hosting providers are pushing their cloud offerings. To the average consumer cloud hosting seems perfect. You only pay for the hardware you need, and when you need to expand its just a matter of your hostin g provider reallocating resources to your node on the cloud. Then you also have the high availability and fault tollerance. But one place clouds fail is in performance.
The industry has been successful at getting this buzzword burned into the brains of consumers. After all most consumers see websites and internet based data services as a black box, and they know very little about what happens inside this box. A cloud is nothing more than a bunch of servers usually running VMware to virtualize servers that float between the boxes. If one server goes down, another server in the rack takes over. Then all the data is stored on a SAN. A SAN is a box full of hard drives that is setup in a array to ensure there is no one point of failure.
Over the past few years, SSD drives have dropped in price, and have started showing up in servers. Where it used to be you needed 15K SAS drives to get decent IO, today all you need is a single SSD drive. Since SSD drives have no moving parts they can hit IO speeds of 100,000. Even the fastest SAS drives only hit about 500 IO. For many IO was the achiles heel of a server. But now running SSD drives you can run more on less hardware.
But SSD drives are not cheap. Plus if you want to maximize your performance you need to be accessing your SSD drives via the SATA or SAS ports. If your data is stored on a SAN, your path to the data involves accessing it through the local network, which is going to be bottlenecked at the 1Gbit port, which if its doing nothing else is 125 MB/s. Of course you are not the only person on the network, and you are sharing this SAN with Dozens if not hundreds of other people in the cloud. The result is you are lucky to get 5 MB/s transfer speeds for random IO.
Simple to maximize profits. Hosting providers want to maximize their revenue from every cubic inch of rack space they have. Why give a client an entire 1U rack server, when most of the time the CPU will be at Idle. Today the newest Server CPUs have 10+ Cores, a single server has way more processing power than most customers will need. Cloud hosting allows companies to sell every GB of disk space, Memory and CPU core al-la-carte. When they need to grow their cloud they just add more servers to the rack and add them to the cloud. From a hosting company perspective its a beautiful thing.
If you are running a single website, that does not require a lot of resources, but you still need the Administrative control of a fully dedicated Server, then a cloud is perfect. In the old days your only option was either a Virtual Server that was unstable, a fully dedicated server, that was expensive, or colocating your own, which has a huge upfront cost with building the server. But if you need lots of resources, Say 4 TB of disk storage, 1 TB of SSD storage. 32 GB of Memory and 8 CPU Cores, Clouds quickly can become very expensive, costing well over $1000 / month. Now if you are hosting mission critical websites, the type which if it goes down you are bleeding money, then a cloud, or multiple load balanced servers, are your only option. But if you are able to tollerate some down time, then its time to start thinking about Colocation.
The truth is you can build your own 1U rack server with some very fast components for about $5K, then colocate it for about $150 / month. There is no reason to go buy a brand new server from Dell, or HP. You can score a used server off ebay, for pennies on the dollar.
This depends on what you are going to use your server for. My OLD server which will be decommissioned by the end of the month is over 10 years old. 90nm Intel Xeon Chips. These are the equivalent of a P4 with Hyperthreading. Granted it has 2 of them, but they have gotten the job done. 16GB of memory, then 4 x 146GB 15K SAS drives configured in RAID 10 giving me about 288 GB of storage after partitioning.
This old dog was running Server 2008 R2, IIS 7.5 with about 80 websites. MySQL, SmarterStats, and SmarterMail. Memory usage was around 45%. CPU ( 4 threads ) sat around 30% to 70%.
Even today it still got the job done, though some of my larger DB queries started to stress it a bit.
As of now I haven't suffered a single Hardware failure. The SAS drives are still good, Fans still running, Still on the original Power Supply. I have been running this server for about 6 years now. I am not saying failures don't happen, but they are not as common as some hosting companies might lead you to believe.
If you want to do things on the cheap you can buy a used server off ebay for about $200, add an SSD drive, install your server based OS of choice, and colocate it. If you are running a single website, and can live with less than 10 email addresses, you can use the free version of SmarterStats and SmarterMail. MySQL (Non enterprise version ) is free as well.
Sure you have the upfront costs of building the server, but it will pay for itself within a few months. Then you will get to enjoy the performance of localized storage. I personally would rather be responsible for my own server, than to have things go down on a cloud. And Yes Clouds do go down too.