In my last blog entry about cloud computing, I answered the question: what is cloud computing? To do this, I defined the term cloud and then laid out some fundamental characteristics of cloud computing. Now, I would like to give a more formal definition of cloud computing. In perusing multiple articles on the topic, it has become apparent to me that there is no globally accepted definition of the term. This is understandable given the fact that cloud computing is still an evolving paradigm. In addition, many definitions that are available lack core and fundamental characteristics of the term.
The most reliable cloud computing definition I could find is from the National Institute of Standards and Technology (NIST). On their site, they offer the NIST Definition of Cloud Computing. In this document, besides providing a very good definition, they describe characteristics, service models, and deployment models of cloud computing, many of which I discussed in my previous blog post. Below is the cloud computing definition they provide:
Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
While I feel this is an accurate definition of present cloud computing environments, I do not believe it represents what a true cloud computing environment needs to be. I believe that in the future the NIST definition will need to be reworded to something more like the following:
Cloud computing is a model for enabling fully automated and on-demand network access to a semi-static, shared pool of configurable and completely virtualized computing resources (e.g., networks, servers, storage, applications, and services) that are rapidly and dynamically provisioned and released without management effort or service provider interaction.
While many people may not agree with the changes I made above, I believe the changes better incorporate the fundamental characteristics I had previously laid out. These included being:
- Network based
- Abstract from infrastructure
- Dynamically scalable
- Completely virtualized
- Fully automated
- Available either as a service or as a product
The goal of cloud computing should be to reduce the focus required on the infrastructure so that more time can be spent on the applications people actually need. This requires a stable infrastructure that can be expanded on-demand, one that is cheap to maintain and operate, and possibly even one that can be out-sourced. Software developers should not need to know or care about the underlying hardware their application runs on. They should not have to worry about limitations they cannot control. This means that infrastructures need to be architected in such a way that they are transparent to end users. This requires extensive planning and standard configurations for every cloud deployment.
So based on my interpretation of cloud computing, I feel the term can be concisely defined as network-based access to virtualized computing resources that are available on-demand and in an automated fashion.
© 2010, Steve Flanders. All rights reserved.