I’ve been reading a lot of attempts lately to provide a real definition of just what cloud computing really is. I’m going to take a stab at providing the definitive answer to that question.
A cloud computing system consists of a collection of physical servers and storage that are closely tied together to allow resources to be efficiently shared and the entire system to be managed as one entity. A cloud computing system runs virtual machines which appear just like physical machines, except they don’t require an entire dedicated physical server to themselves.
This design allows a cloud computing system to be extraordinarily flexible and efficient. New virtual machines can be added quickly and easily when demand increases, under utilized virtual machines can be discarded, and much more work is accomplished for the same energy consumption, allowing for lower costs.
Cloud computing services come in 3 basic formats. In IaaS (Infrastructure as a Service), the customer receives access to their own virtual machine. This virtual machine may run Windows, Linux, or any number of other operating systems and appears indistinguishable from a traditional dedicated server. SwiftWater Telecom’s Resilient Cloud Service currently is an example of IaaS.
PaaS (Platform as a Service) combines the virtual machine with a set of development tools and an interface that allows for the creation of cloud powered web applications. Google AppEngine is an example of PaaS.
SaaS (Software as a Service) provides cloud powered applications, typically accessible with only a web browser, with no access to a virtual machine at all. Google Apps is an example of SaaS.
All 3 service models allow the customer to avoid having to buy, operate, and support their own physical servers, converting a variable capital expense into a fixed operational expense.
There are a number of different pricing plans for cloud computing services, notably fixed and pay as you use. In pay as you use, the customer is charged for the resources their service actually consumes. This is a good model for very intermittent usage with high load spikes. In fixed, the customer pays a set price for a certain set of resources. This model is good for more consistent usage and is also easier to budget for, since the total cost is known in advance.
And that’s cloud computing, in a nutshell.