The ABCs of virtual private servers, Part 1: Why go virtual?
arstechnica.com
arstechnica.com
That said, I can certainly see a win in virtualization for testing. If your production system will have a large set of discrete machines communicating, you can simulate that with a much smaller pool of QA machines (maybe just one).
1. You pay stupidly high *monthly* costs based on RAM.
This makes little sense, as RAM is ridiculously cheap.
2. You pay masses for bandwidth if you go over.2. That depends on your VPS host, really.
For example, lets say we need 10TB of transfer.
Slicehost: $3,000 (0.30/GB !!! WTF are they smoking)
Amazon: $1,250 (Assume 5TB in, 5TB out, in US)
Linode: $1,000 (0.10/GB Good for VPS, but still crazy)
Typical dedicated server: $99 with 10TB included.
Amazon is ridiculously expensive. I know it's really "hip" to use it, but it's throwing money away. I guess if it's VC's money then who cares if you get to say "We're cloud hosted!!!".Bandwidth pricing on VPS hosts is just crazily expensive.
Hell, even if you need 8GiB registered ecc ddr3 modules, that's only around $130 per module[1], or $1040 for 64GiB.
(both the qpi xeons by intel and the new G34 and C32 opterons support both reg. ecc and unbuffered ecc, but you generally can't get unbuffered ecc in densities higher than 4GiB per stick)
My standard server has 8 cores (2.0Ghz opterons) 32GiB ram, and 4 500gb "enterprise" sata disks. total cost? under $1800. AMD is interesting in this regard because I can get a dual-socket or even quad-socket board (the above system is single socket) and not pay any extra... I just get more cpu sockets and more ram sockets. (on G34 boards you usually get 8 ram slots per CPU socket.)
Now, the price of ram varies a lot. I think we're at a low point, but there was a period a year or two back where prices on reg. ecc ddr2 were almost as low as ddr3 is now, and there was a period between then and now where I was paying well over 2x what I'm paying now. But in general, the stuff is pretty cheap.
Seriously, we (the VPS providers) are making money on renting you hardware. I am making money, and I'm the opposite of "at scale" (to be clear, I'm paying for my hardware, and paying myself a rather below-market wage. I'm not making a /lot/ of money, but I'm profitable, and by enough of a margin that my rent gets paid on time every month.)
As a rule of thumb, I generally make my money back on a new bit of hardware within four months.
[1]http://www.provantage.com/kingston-technology-kvr1066d3q8r7s... (I used the same vendor for my unbuffered ecc, but I'm too lazy to look up the part number right now. )
Although, I probably stated that incorrectly when I said I don't have to worry about these things. I do worry about them, but I have delegated them to someone I trust and has served me well for years. That's worth at least a full time salary + hardware, which is more than I pay for a few VPSs. Of course, that equation changes as my hardware requirements increase. At some point, economies of scale shift in favor of running my own gear, but that's a long ways off for most small to medium sized businesses.
And if the traditional leased-machine colocation businesses I've used in the past are anything to judge by, much of the hardware in commercial use today is probably old enough that todays ram prices are not even close to indicative of the actual ram costs when the hardware was purchased... (Not that that should really matter, if the 3 or 4 year old machines my hosting company are currently offering as low or medium end colos aren't fully paid off several times over by now, they're definitely "doin it wrong"!)
Goes beyond VPSs and tries to look at the different options, plus the options typically available.
All that work you did to make your IO sequential goes to waste as soon as you put it on a VPS. It will be interesting to see if SSDs overcome the typical VPS limitations.
Many websites have production rigs involving DB machines with a lot of memory, web workers that rarely do IO and files stored in CDNs or S3 so the disk problems are less of an issue.
As you point out though when your dataset fiscally or practically won't fit in RAM then disk IO catches up to you and I'd certainly appreciate an SSD's random seek time.
It's also important to remember development becomes an entirely different beast with cloud infrastructure though. Even the best tested and reviewed code can't approximate all the variables in production so being able to launch an exact mirror of your production rig and throw recorded traffic at it becomes an amazing test. This is something not feasible in the past.
Basically, CPU time is an abundant resource that's easily partitioned, but can be shared. So, you're guaranteed your share, but you often actually get more than your share.
Memory is strictly partitioned. You always get your share, no more, no less.
Disk is almost impossible to partition fairly (performance, not space). Furthermore, the more active disk users there are the worse the total performance is, so if you're unlucky enough to have a neighbor that uses a lot of disk IO than you effectively get double screwed.
What would be interesting is if someone came up with a VPS with dedicated disk resources, but as far as I know no one has done that.
One of the nice things about Xen is that disk I/O can be controlled somewhat because each domU has a specific process in dom0 for disk access. So you can ionice things & provide a somewhat more controlled access to the disk.
My experience? it's easy to make one customers's I/O suck with such tools, but they work for shit when it comes to fairly balancing everyone's I/O.
As far as I can tell, the best practice is to monitor everyone's usage, and if someone goes above some pre-set threshold, to make their I/O suck using ionice or what have you.
But that's a long way from solving the problem.
I strongly suspect this is a platform-specific complaint. As in, if you are running your Linux VMs on a z-Series from IBM this is manageable. It's just a question of what your customers are willing to pay for...
Why? You can run only one VM inside each hyprervisor. Or you can run only one IO intensive guest.
I hardly see any reasons to run my servers on hardvare instead of VMs in 2011.
Also, the article discusses VPS systems which are generally much different than installing a VM on hardware you own.
I'll admit that the last time I tried to run an IO intensive task on a VM it was about a year and a half ago. (VMWare ESXi)
I think the processors installed in that box didn't support IO virtualization.
My be I'm wrong but I don't understand where I could loose performance.
Have you seen the list of production sites running on EC2? (http://aws.amazon.com/solutions/case-studies/) Linode also has some pretty impressive sites...linode.com probably being the most obvious one.