I think it’s time to start talking about Cloud Virtualization. Today cloud diversity is driving customers out of the clouds instead of embracing them. Multiple cloud providers are trying to lure customers in by developing feature specialization and this may well serve to fracture the markets and the community even more.
Specialized clouds have a good reason for existence, but an explosion of many different ‘flavors’ of clouds are creating a similar problem to choosing an insurance policy – there are thousands of them, you have to be an insurance agent to understand it and there is a lot of fine print that hides the details of the policy.
Cloud Virtualization should provide a common ground for the generic solutions. This allows standardization of the knowledge and principals by which the general population can abide by. Where the "cloud citizens" can thrive and teach the juniors the basic rules of the environment and the survival practices. When the specific needs of your product or your solution require some special sauce – you’re welcome to shop around and choose a provider that can satisfy your specific taste.
The Cloud Virtualization is a necessity that should be recognized by now. You see some standardization in the IaaS platforms around Amazon stack (I.e. OpenStack, Eucalyptus, etc…) but still no specifications around PaaS.
Some of the major providers are starting to recognize the problem. Check out the recent VMWare announcement (VMware seeks Linux-ization of cloud with any-cloud app platform) where it claims:
“The key, …, is allowing developers to build applications using just about any framework, with the ability to deploy to just about any cloud.”
"Just as Linux provides a high degree of application portability across different hardware, Cloud Foundry provides a high level of application portability across different clouds and different cloud infrastructure," VMware CTO Stephen Herrod wrote in a blog post.
The calls for Cloud Virtualization are coming from everywhere, but, since developers have higher tolerance for complexity (they just have fun solving it by writing more code), you hear more vocal calls from the IT industry:
“What’s more important than cost savings for companies — at least in the U.S. and Asia-Pacific regions — is the ability to standardize their software and business processes across the company, according toa new survey of 600 large companies by Tata Consultancy Services, the $8 billion IT service provider. In Europe and Latin America, the primary rationale was the ability to ramp systems up and down faster.”
More and more organizations are beginning to recognize the need and advantages of operationally consistent clouds. The recent announcement from Zynga to move to an internal cloud architecture is the proof of my point:
“We own the base, rent the spike. We want a hybrid operation. We love knowing that shock absorber is there.” – Allan Leinwand, Zynga’s Infrastructure CTO
Zynga uses Citrix Systems CloudStack as its virtual machine management interface superimposed on all zCloud VMs, regardless of whether they’re in the public cloud or private cloud.
To achieve progress in this direction we need to talk not only about different clouds and about private data clouds in the data centers (so called “private clouds”), but about a standard that can span across both of these (for the moment) different domains – hybrid clouds. The hybrid cloud should become the main topic in these conversations. It is a commonality between the public and the private clouds (we, developers, call it an abstraction – hybrid cloud with “empty” public component will give you the “private cloud” and vice versa).
“Thus if hybrid cloud is to become the architectural model of choice, it becomes necessary to unify operations across all environments – whether public or enterprise.”
“This ability to invoke and coordinate both private and public clouds is "the hidden jewel" of Zynga’s success, says Allan Leinwand, CTO of infrastructure engineering at the company.”
So, in my opinion, Cloud Virtualization, (or in “dev speak” Cloud Abstraction) is the next evolutionary step of our industry. For the moment Platform-as-a-Service (PaaS) systems spanning the same APIs across different cloud providers are a great (and realistic) promise to achieve the cloud unification.
Here is why I think it’s true:
- The PaaS layer, in its core definition, has to provide an API for all the Cloud infrastructure control knobs. Otherwise it’ll not be considered as a CLOUD.
- The same control API will enable the development unified control tools ecosystems that can control in the same way multiple clouds from different cloud providers. Thus unifying all the IT and DevOps processes.
- Unified PaaS API layer will enable a new evolution cycle of the application development that will enable the same applications to run seamlessly on different clouds as well as on local data centers without modifications. Hence enabling IT and DevOps to make decisions how and where to deploy them.
Today there is only one publicly available project that shows some promise to achieve the Cloud Abstraction for the developers – JClouds. Lately, VMWare has been making some changes with their Cloud Foundry platform by promising to change the balance with BOSH – an open source tool chain for release engineering, deployment and lifecycle management of large scale distributed services.
So, to sum all this up, I believe that Cloud Virtualization is unavoidable. Customers are looking to be able to scale across multiple cloud factors, and vendors are looking to lock in with feature creep. This tension will continue to grow in the models which are marketed today. The goal of reaching the cloud promise of true elasticity and flexibility based on what the application demands is the opportunity for our industry to deliver on, and we can wait for it passively or we can do something about it by architecting for this now.
For me personally, I choose the latter.