Cloud computing has been defined in so many different ways that it has led to much confusion. The promise of cloud computing is a virtual environment where applications can be run and information can be stored and accessed from anywhere with an Internet connection. But what does that mean, exactly? And are the solutions billed today as cloud computing solutions really … well … cloud computing?
As currently defined, cloud computing is actually a stack comprised of at least three layers.
The bottom layer is comprised of infrastructure, commonly termed Infrastructure as a Service (IaaS). This includes all of the hardware and base OS software required to run a hosted or cloud service, and includes servers, routers, switches, bandwidth, OS and so on along with the physical locations this hardware will be housed.
On top of this layer are the platform services, such as grid computing services which includes compute and shared memory, auto-scalability services, redundancy and high availability, management and monitoring and a basic stack for installation and development (LAMP, most commonly) as well as many others. A good example of this is Amazon’s Elastic Cloud 2 (EC2) services. This layer is commonly referred to as Platform as a Service (PaaS).
At the highest layer is the software and applications that can be leveraged and run on top of the other two layers. These services can be pre-packaged applications (GMail is referred to a lot in this thread, and is a great example) or objects and web services that can be leveraged using an API (commonly using SOAP or a RESTful framework), and are collectively known as Software as a Service (Saas).
But despite all the latest innovations in the area of cloud computing (NoSQL, CloudRAM, distributed computing and so on), the reality remains that its current definition is somewhat limiting. Cloud computing solutions today are very much centralized, managed by one or a group of vendors and scale and availability are directly proportional to the amount of resources allocated by the solution (i.e. more hosting centers, more servers and so on). This is exactly why the next wave of innovation in cloud computing must resolve these current limitations and move beyond the current paradigm. This is where crowd sourcing comes in.
Time and time again, crowd sourcing is demonstrating how it can completely transform business models and significantly improve a product, service or industry and in the process democratize them. Wikipedia is a great example of this. So why can’t this be true for cloud computing as well? Put simply, there are billions of individuals on the planets and tens of thousands if not more of organizations. Most have resources that are connected to the Internet and that can be essentially plugged into an overall cloud fabric. These resources can then be used by anyone that requests them. Consider millions of computers worldwide opted in and offering their idle compute and memory resources to the “grid”. Seti@Home is a great example of how a global voluntary grid computing platform can be leveraged. Extend this now to include other resources such as storage, web services and any number of features and capabilities provided by companies and individuals and all of a sudden we have a massively scalable and truly distributed cloud computing platform. Add a solid security model to the mix and a distributed revenue model that allows those who opt-in resources to get a rental fee for usage and we have created a compelling way for users and companies to contribute resources to the cloud while benefiting from other cloud resources.
Technically, this is not an easy solution to solve, there are many technical challenges and issues (for example, allowing a specific user to share their storage securely and without any risk of theft or data destruction). But these challenges can be overcome. And evolving cloud computing to the crowd-sourcing model will ensure longer term viability and scalability of cloud computing itself.