Defining Cloud Computing – Part 1
So what is cloud computing? Defining the term “cloud computing” has become an industry unto itself. Is it utility computing? Is it an application service provider’s offering? Is it virtual machines in the sky? All of these are correct depending on who you ask.
Core features of cloud computing are scalable, centrally managed and accessible via the internet. Cloud computing boils down to running software on someone else’s robust hardware in a data center somewhere else. Let’s think about that for a minute: someone else’s software on someone else’s hardware in someone else’s data center. Nice.
Another key component has become a very low barrier to entry in both technical and financial terms. The service should be very easy to begin using and it should be very cheap and/or free (at least at a basic level). The general approach to pricing for most cloud platforms, so far, has been a per usage or subscription basis.
Per usage charges you only for what you actually use. If you use a virtual machine, you will pay a certain amount for every CPU hour consumed; for storage you will pay by the gigabyte or terabyte. You will usually have to pay some kind of bandwidth/networking costs. Think of per usage as metered.
Subscriptions are less common but are still offered. You may get a basic package for free and then start paying a subscription to upgrade. An example is the Mozy backup service from EMC. You get to backup 2GB of data for free. If you upgrade to the paid subscription, you can backup an unlimited amount of storage for $5.95 per month.
The final major pieces to the cloud computing puzzle are nearly instant scalability and nearly infinite scalability. If your web site grows from a few thousand hits per day to millions of hits per day, you don’t want your customers to get error messages until you can buy and provision new servers. Most platforms will allow you to automatically scale, or scale with just a couple of button presses.
I say “infinite” above with a somewhat tongue in cheek. Obviously, no one can offer infinite scalability. A more accurate expression might be that it allows exponential growth. Again, using a few thousand hits jumping to a few million, the scaling should be automatic and invisible. Customer demand should be load balanced to allow a pleasant customer experience (which means a pleasant business owner experience).
I will follow this post with some more definitions: Distributed Computing, SaaS, PaaS, IaaS and Cloud Desktops.
Let me know if you agree or disagree.