ben.eficium is the blog of Ben Slack, citizen and principal consultant at Systems Xpert.
All posts are Copyright © Ben Slack on the date of publishing.

21 September 2009

What is Cloud Computing?

Cloud computing – the number one IT “buzz” phrase for the last 12 months or so. The vendors and hype say it's a computing revolution, but if you're like me, you're tired of hearing about computing revolutions from the IT industry! Most IT managers I've spoken to recently want to know the basic facts and if cloud computing is fundamentally different to what we have now. This article deals with the basic facts. I'll post a follow-up article addressing the second issue.
We should start with the question, “What is cloud computing”?
Like most IT “buzz” words and phrases, the definition depends on who you speak to. First, you need to know that the “cloud” in cloud computing comes from a common practice in network architecture diagrams, where the Internet is represented as a cloud.
The best complete definition I have found is Wikipedia's.
Cloud computing is a paradigm of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet.” (Wikipedia, links theirs)
Let's break that definition down into its constituent parts and examine them in more depth. The most important part is that actual computing happens on the Internet, on a provider's hardware and software. Thereby eliminating capital expenditure on owned hardware and software, and operating expenditure on expensive dedicated WAN links. This is the key financial driver behind a company's decision to engage in cloud computing. If it doesn't happen on the Internet, it's not cloud computing. Some offerings may be massively scalable and virtualized, but if it is not accessible on the public Internet on a public IP address, it is not cloud computing.
Second in importance is the idea of dynamic scalability. This means that computing resources, basically memory and processing power, are allocated on an as needs basis. With most providers, you only pay for additional resources when they are required. At the moment, this really only includes scaling out. However, it would be possible to modularize your cloud computing applications and have them scale up dynamically. In the near future, I believe providers will deliver APIs that make this process much easier than it is now. The economies of scale that the cloud providers achieve means that this scalability is available at a much lower TCO than is currently possible for organizations of any size to do in-house.
Thirdly, virtualization of resources is an important aspect of most cloud computing products. I would argue that it is a mandatory feature, rather than “often” found, as described in Wikipedia. Virtualization of resources does not necessarily mean that the services are provided on the basis of virtual machine instances, though this is certainly the case with Amazon Web Services, the biggest player in the market to date. As the link provided in the Wikipedia definition suggest, this is more about platform virtualization, abstraction of the underlying computing infrastructure and operating systems from the user. This is performed via virtual machines providing generic operating system installations, or by providing an Application Programmer's Interface (API) which allows applications to be developed without any knowledge of, or direct interaction with, the underlying computing platform.
As with dynamic scalability, the main business benefit of virtualization of resources is in the economies of scale achieved by the providers. They can spread the cost of hardware and hardware administrators over an enormous user base. Additionally, the elimination of owned hardware means that costs that previously needed to be capitalized can be charged straight to operating expenditure.
It is the virtualization of resources aspect that differentiates the two definitive product types in cloud computing: Infrastructure-as-a-Service (IaaS) and Platform-as-a-Service (PaaS) . Essentially, IaaS is where you buy virtual machine instances and manage them as you would your own servers in your own data center. PaaS is where you are given an Internet API to develop custom applications which then run on the provider’s hardware and infrastructure. Google Apps and are the big names in PaaS at present.
Additionally, Software-as-a-Service (SaaS) is sometimes grouped as a cloud computing product. I would argue that SaaS is not true cloud computing because SaaS predates cloud computing by many years, it does not have to be massively or dynamically scalable and does not have to provide any virtualization of resources.
In the next post, I will discuss whether cloud computing is fundamentally different to what enterprises have now and if cloud computing is likely to live up to the hype surrounding it.

No comments: