A lot of attention has been given to OpenStack, an open-source project that promises a common foundation for building public and private clouds. If successful on a large scale, the OpenStack architecture could facilitate hybrid clouds, aid in cloud federation and support some of the critical provisioning tasks associated with efficient cloud operation.
It could even change how we view the relationship between cloud computing and the network. But is OpenStack, like many things in technology, at risk of being over-hyped? That may be the most critical question in cloud computing, and it's hard to answer.
OpenStack architecture: A competitive handicap?
OpenStack was initially a project NASA and Rackspace developed to provide a cloud computing framework that would run on commercial off-the-shelf hardware. The OpenStack architecture organizes the model of cloud computing to include resource assignment, machine-image registration and control, and data storage. The project now has more than 150 organizations behind it, making it arguably the most popular software tool for creating Infrastructure-as-a-Service (IaaS) environments.
IaaS is the most basic form of cloud computing, offering essentially a virtual, bare machine as a service. Because it's only replacing the server and possibly local storage, IaaS displaces a relatively low user cost and thus offers lower profit margins than its cousins, Platform as a Service (PaaS) and Software as a Service (SaaS). While potential cloud providers and users could build PaaS and SaaS on top of IaaS, it's harder to measure the benefit of these more complex configurations. But if operators focus on OpenStack IaaS, they may be jumping onto a platform hundreds of competitors offer, which could leave them with no way of differentiating their cloud services other than through pricing -- or so it may seem.
The counterview is that the OpenStack architecture could actually help service providers differentiate their cloud offerings by providing all the basic foundation for IaaS, letting providers focus on other features and enhancements. OpenStack is open source, easy to integrate with and already associated with a number of interesting projects to enhance its basic capabilities. The fact that many of these projects overlap in scope is proof that there may be a variety of OpenStack-based deployments that target specific market opportunities, offering providers ample room to distinguish their own offerings from those of competitors.
A cloud provider's largest competitor isn't another OpenStack player, however. It's Amazon.
Unlike other IaaS cloud tools like Eucalyptus or Nebula, OpenStack architecture hasn't focused on EC2 compatibility. The application programming interfaces (APIs) for OpenStack computing are transitioning away from the EC2 model, but the OpenStack community is promising to maintain EC2 compatibility for legacy applications. While it is likely to remain possible to build applications on OpenStack that will run on EC2 and vice versa, it will also be possible to build OpenStack IaaS-based applications that aren't compatible with EC2 at all, even by accident.
There are persistent differences between the two platforms in terms of image management and storage. This means two things: It may be more difficult to support customers using both EC2 and OpenStack clouds, and cloud providers adopting OpenStack can't expect to migrate EC2 users to their services without making changes to the applications or their own environments.
DevOps and OpenStack: Where's the love?
There are other issues with OpenStack architecture from the perspective of technical completeness.
The basic mechanism for OpenStack resource control can be extended to support a model of "container provisioning," in which applications are associated with containers that include policies on how to allocate resources to a given application and how to address it when the application is in service. These projects come under a general category called DevOps, which defines the union of cloud application development and cloud provisioning and application deployment. DevOps isn't critical in IaaS clouds that are simply using virtual machines to replace dedicated in-house servers, but it is absolutely vital if an IaaS offering is to be used to build cloud-specific applications.
IBM's recent study on the importance of using the cloud to re-engineer business processes -- and not just outsource legacy apps -- shows that the future of the cloud may be in how it supports what we can't do today in the data center, rather than simply updates what we do there already. That means writing new cloud applications. If that's done, then modern software practices like DevOps (that encourage componentization and orchestration of software elements) must give these elements a mechanism for finding each other in the cloud. This same level of application flexibility is essential if an IaaS cloud is to be used to host PaaS or SaaS services.
There's just one problem: DevOps for OpenStack is both incomplete and fragmented, and until things get sorted out there, it's possible that PaaS, SaaS or cloud-specific applications can't be implemented easily on OpenStack architecture.
It would be totally unfair to say that all of the issues of OpenStack are unique to OpenStack. In fact, most are issues related to the IaaS model of cloud services. But for now, OpenStack adoption is a commitment to IaaS in a market where IaaS may be only one of many service choices -- and perhaps not the best service choice for providers in the longer term. All of that needs to be considered before deciding that OpenStack architecture is the best framework on which to build public cloud infrastructure.
About the author:
Tom Nolle is president of CIMI Corporation, a strategic consulting firm specializing in telecom and data communications since 1982. He is the publisher of Netwatcher, a journal addressing advanced telecom strategy issues.
CloudStack vs. OpenStack: Competitors or allies?
Comparing open-source cloud platforms: OpenStack versus Eucalyptus
OpenStack security analysis: Pros and cons of open-source cloud software