The Cloud. It's amazing. Isn't it wonderful that they have now managed to link all of the computers in the world together so that no matter how much computing power you need it is all there, ready to turn on like a tap.
That's the truth of The Cloud, isn't it?
That's certainly the way it has been sold to the world. The Cloud is a limitless supply of storage/power/systems* [*choose whichever you want, because you can be certain that someone is selling that limitless supply concept to you].
But in reality. Behind the scenes, like the Wizard of Oz, behind the curtain... it's the same old computing hardware that we've always had. Sure, the management tools and processes make it easier for the Cloud provider to move your workload and files from their existing home to a bigger home without you noticing... but it's still fundamentally your applications running on a processor and your files being stored on a disk. The Cloud provider still needs to do some intelligent Capacity Management to make sure that there is always "somewhere bigger" onto which client workloads can be placed. It's no good selling the concept of "Capacity on Demand" from the Cloud, if the moment that a client asks to place that demand it takes a few days/weeks/months to make it available. They need to maintain a level of "headroom" of unused capacity in reserve just ready for the moment that the clients ask for it. Exactly how much headroom is the subject of a later blog. For now, I want to look at the other element of this perfect Cloud that often escapes the attention of clients. Performance.
Let's consider processing power. The provider may have a total Cloud requirement made up of the individual client systems that need 1000 processors. A decision that all Cloud providers make is how much "over provisioning" they will deliver. That is, if the total clients' requirement is 1000 processors, and they only have 500 processors, then they're over provisioning with a factor of 2x. The Cloud provider is basically assuming that at any one time only half of the Clients' requirements will actually be in use. Consider it this way. If you have a physical server with 4 processors, and your CPU utilisation only ever peaked at 50%, then in reality you're only using 2 processors.
This is the economics of the Cloud. It is priced as being cheaper than physical infrastructure, not only because you do not need to host the infrastructure yourself, but because the Cloud provider knows that the chances of you using ALL of the resources that you are paying for are pretty slim.
But what if they're not slim? What if you're paying for 4 processors and you actually WANT to use all 4 processors? That shouldn't be a problem... after all... the other people on that same Cloud aren't all going to want to use their full allocation at the same time, are they?
This is the point of this post. Hey you... get off of MY Cloud!!! Sometimes you may notice that your Cloud server is running a little slower than normal. You can't quite put your finger on it, and all the monitoring stats within the Guest server show normal activity, but the user response times don't match up. "Something" is definitely slowing you down. And that "something" is going to be another client on the same Cloud who just so happens to be hitting their peak demand at the same time as you. The better Cloud providers will be watching for this, monitoring activity at the Cloud level to see when this type of contention is being approached. The better Cloud providers will proactively move client servers around the Cloud to avoid this problem ever becoming a reality.
Just make sure that your provider is doing this, or if you are running the Cloud (public OR private) that you are doing it... otherwise you'll hear a lot of your clients singing the Rolling Stones classic song!