While speaking at a recent meeting of the Silicon Valley Product Development Management Association, PDMA, I was struck by the uncertainty and confusion around the definition and implications of Cloud Computing. A quick poll of the audience, about 40 software professionals, confirmed my observation that Cloud Computing, though widely recognized, is not understood consistently.
Wikipedia defines Cloud Computing as “an example of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet.” The ‘Cloud’ can also be defined in terms of computing layers.
The first layer is Software-as-a-Service (SaaS) or the actual end-user Cloud-based applications that people access and use. The next layer is Platform as a Service (PaaS) where to development tools, utilities and middleware live to support the SaaS based applications. PaaS is not the realm of the end-user but rather the developer. The final layer is Infrastructure as a Service (IaaS), the physical layer of the Cloud where the hardware, plumbing, brick and mortar of the Cloud exists. This definition of the Cloud is a clean and simple way of explaining a fairly complex ballet that happens in a heartbeat every minute of every day all around the world with very successful and widely used applications like Salesforce.com, SuccessFactors, Netsuite and Xactly.
A different way of defining the Cloud is in terms of attributes. In my opinion, the Cloud can be defined through these attributes: Transparency, Elasticity, Affordability and Permissiveness.
The Cloud is Transparent
Transparency is an interesting concept when it comes to the Cloud as it works at multiple levels. Location transparency of the hard and soft resources needed to drive Cloud based applications is at the core of this concept. The end-user does not need to know the actual location of the resources they are using. The developer has a set of Cloud-based services or application program interfaces, often referred to as API’s, to link to the needed resources. A single application can access resources like data or even application components from multiple locations. In relational algebra terms, it’s a many-to-many concept … many users sharing many resources from many locations.
The Cloud is Elastic
It provides a flexible environment that can grow or contract for an application based on varying loads of users and data. From the end-user perspective, this happens auto-magically and does not require the end-user or operator to make overt decisions or actions to scale or procure resources to meet their applications needs. Behind this application flexibility is the Cloud at work – shared applications accessing multiple data sources in multiple locations quickly, securely and consistently.
The Cloud is Affordable
It’s the economics of scale realized through utility computing model. The collective buying power of the masses applied to application computing. Applications are pay-as-you-go because the user does not have to pre-purchase dedicated physical computing resources, because the Cloud can scale to their ever-changing requirements. The domination of on-premise, license software models is being challenged by the subscription services model, which is driving application software companies towards an inevitable business and cultural change.
The Cloud is Permissive
It is in essence an environment that can include and involve multiple resources, standards and methodologies. Whether it be .Net or JAVA, Windows Azure or ORACLE, Force.com or Etelos, Boomi or web services APIs, there is no one technology or computing standard that rules the Cloud. Developers can select from a wide range of resources to build SaaS applications through the Cloud. Granted that there are companies like Oracle or Salesforce.com who claim leadership of the Cloud but the reality is that the attributes of the Cloud make it highly unlikely that any one vendor will dominate it in the short term.
When it comes to Cloud Computing, there is no consistent definition. I believe that the attributes that I have described help to further describe and differentiate Cloud Computing but the words from Judy Collin’s song “Both Sides Now” still ring in my ears…
“I’ve looked at clouds from both sides now
From up and down and still somehow
It’s cloud’s illusions I recall
I really don’t know clouds at all”
We still have a lot to learn about Cloud Computing. Talking to the members of the Northern California chapter of the PDMA was enlightening and intriguing. The great questions that were asked and high interest levels tell me that acceptance of Cloud Computing is growing rapidly. There’s still a long road ahead in terms of broad marketplace adoption. The attributes of transparency, elasticity, affordability and permissiveness are in tune with a growing marketplace need for a new generation of applications that operate in and through the Cloud.