Don't count on consistent server performance in the cloud
Certain elements of cloud computing are inarguably beneficial. The ability to quickly provision, clone, and deploy servers to address capacity issues is a definite plus, and the fact that you can effortlessly add elements such as load balancers, big storage, and databases is equally compelling. However, there is a downside that needs to be understood: the fact that, in many cases, cloud server instances can exhibit wildly different performance metrics, measured from second to second.
Sure, SLAs and guarantees made by the cloud provider can address these issues after the fact, but when it's crunch time, there's nothing you can do other than communicate the problem and hope it gets fixed quickly. You may have visibility into what your instances are doing, but you have no idea what the underlying hardware is doing, how it's configured, or how oversubscribed it might be. That's the nature of the cloud.
There's no secret involved in how cloud providers operate. They have built tools around various virtualization platforms to allow for self-service VM provisioning, and they've tied in other value-adds, but in the end, it all comes down to the same basic virtualization frameworks that we use in-house today. Those, however, we control both inside and out. In the cloud, we're stuck on the inside.