In my last post I stated that the use of open and “interoperable” Cloud Platform is a key feature (even a must) to ask your Cloud Service Provider for, because it prevents (or, at least, makes difficult) from falling captive of a vendor (vendor lock-in), i.e. you’ll be able to easily move your applications from one an IaaS provider to another interoperable one, without having to alter your own Cloud designed programs. You can even download a copy of open Platform to run inside your own data center as well, which (in principle) makes it feasible to move computing jobs from a private data center to commercial clouds and back again, at will: Moreover, with that approach, hybrid cloud construction becomes easier.
This is still early days in the Cloud, so we are likely to see a lot of different approaches with varying degrees of traction. Using Adrian Otto’s words, over time those should converge toward what the natural solution is for things, i.e. none internet backbone companies today discuss what dynamic routing protocols to use for exchanging IP traffic: simply all of them use BGP to exchange routes and pass traffic to each other. It can be expected that Cloud will follow a similar pattern (of course Cloud is more complex than TCP/IP network routing, but the same general principle should finally prevail).
In reference to standardization (the best, but difficult, way to interoperability) a lot of initiatives are arising, focusing on the different Cloud subjects, for example:
- The ODCA (Open Data Center Alliance, compound of includes more than 300 companies spanning multiple continents and industries) that is working actively to shape the future of cloud computing – according to its mission, a future based on open and interoperable standards,
- or CSA (Cloud Security Alliance) promotes the use of best practices for providing security assurance within Cloud Computing, working closely with standardization organizations,
- or OASIS just formed TOSCA, the Technical Committee to Advance Open Standard for Cloud Portability (integrated by CA Technologies, Cap Gemini, Cisco, Citrix, EMC, IBM, Red Hat, SAP, Software AG, and others) to collaborate on Standard for Deploying Interoperable Cloud Applications (i.e., for managing workloads and dev-ops),
- or “The Cloud Standards Customer Council” (that has been involved in standards creation from the user perspective),
- or other interesting initiatives,
- or, at last because it the one that I want to underline, OCCI (the Open Cloud Computing Interface) that comprises a set of open community-lead specifications delivered through the Open Grid Forum. OCCI is a Protocol and API for all kinds of Management tasks, currently supported by OpenStack, OpenNebula and Eucaliptus, JCloud and others. OCCI was originally initiated to create a remote management API for IaaS model based Services, allowing for the development of interoperable tools for common tasks including deployment, autonomic scaling and monitoring. It has since evolved into a flexible API with a strong focus on integration, portability, interoperability and innovation while still offering a high degree of extensibility. The current release of the Open Cloud Computing Interface is suitable to serve many other models in addition to IaaS, including e.g. PaaS and SaaS.
However, the results of these initiatives and works are still to come, and at the moment there’s a vendor, Amazon, dominating the CSP (Cloud Service Provider) market (according to some statistics, Amazon Web Services – AWS – holds 70 percent of the IaaS; by the way we should be honest and thank Amazon for popularizing IaaS and making it affordable, accessible, and broadly relevant to the current IT market, and for keep innovating about), and achieving that its service APIs are becoming, in some way, a “de facto” standard since other vendors declare to be compatible with, as I’ll show further in this post. Therefore, the question is:
Q: Could Amazon’s Cloud APIs become interoperable?:
A: It might could happen (in fact Amazon seems to be made some steps to be ready, if necessary or forced by business needs, for going ahead in such way), but I don’ not think so, and we must remind that APIs specification is not open but proprietary, and Amazon could change whenever it wants by itself. So, currently and almost sure in the future you are captive on Amazon if your application is developed on its APIs.
(Note: I do not forget the virtualization market leader VmWare, that is trying to become a big Cloud player too, but the current VmWare’s Cloud offering is restricted to the VmWare ecosystem, so the problem is the same)
Getting to the point and referring to IaaS, there are several open source cloud platform that enable us to build this sort of services: mainly, OpenStack (my personal bet), Eucalyptus, OpenNebula and CloudStack let’s compare them from different points of view:
1) Let’s start, analyzing its origin, its community support, and main service coverage:
OpenNebula, emerged from a European research project, i.e. it was funded initially by European infrastructure grants, and is now doing rather well in deployments both inside Europe and overseas. Although some large companies such as Research In Motion, Telefonica and China Mobile also contribute to OpenNebula, they don’t determine the future of the service. However, In March 2010, the main authors of OpenNebula founded C12G Labs to provide the value-added professional services that many enterprise IT shops require for internal adoption and to allow the OpenNebula project to not be tied exclusively to public financing, contributing to its long-term sustainability. OpenNebula.org is a project now managed by C12G Labs.
Eucalyptus also emerged from academic research, this time at UC Santa Barbara. Sony, Puma, Trend Micro and other companies have chosen it to deploy their private clouds. Eucalyptus has a free version and a commercial edition (Information on differences in functionality is available here). Obviously, the commercial edition comes with much more extended functionality. Like any other open-source product, Eucalyptus has a powerful community that contributes to platform development and assists in finding and fixing bugs.
CloudStack is a platform for building public or private cloud deployments that Citrix acquired in 2011 when it purchased Cloud.com and on April 2012 Citrix announced that it is giving CloudStack an Apache license, creating a competing model for open source cloud deployments. Until Citrix was one of the more than 150 companies contributing to the OpenStack project (further explained). Citrix officials said the move was made because it needs a model that fully embraces Amazon Web Service compatibility – which it says OpenStack does not do – and because it wanted to bring cloud development offerings to market as soon as possible. With an Apache license, CloudStack is now an open source project, backed by a community of developers. A number of well-known information-driven companies, such as Zynga, Nokia Research Center and Cloud Central, have deployed clouds using CloudStack. CloudStack is distributed for free under the GNU Public License v3. There is an online community ready to provide timely technical support for free. There is also an IRC channel where everyone is welcome to ask questions.
OpenStack is an open-source platform for deploying clouds IaaS. It started in summer 2010 when RackSpace and NASA jointed its initial products: Nebula for bare compute (virtual machine and block storage) and Swift for massive object storage. Currently, OpenStack is lead by an Foundation (integrated by 850 companies and 4.500 individual members) and has a broad range of support from major tech industry players, ranging from HP, Dell, IBM, RackSpace, NASA, Cisco, NEC, AT&T, Bull, EMC, Brocade and dozens of other companies. All of the code for OpenStack is freely available under the Apache 2.0 license and it haves the largest and the most active community (of the four analyzed in this post), currently integrated by around 7.000 persons over 87 countries. Since, it’s an ubiquitous platform used by both enterprises to deploy private clouds and service providers to launch public clouds, so all kind of companies are making business with OpenStack (from IaaS Providers as HP, RackSpace or TISSAT that have constructed their public services on it, to big user as Cisco that use it for its WebEx service, ranging through NASA, AT&T, Canonical-Ubuntu, San Diego Supercomputer Center ,University of Purdue, University of Melbourne, Telvent, Internap, etc.)..
2) Now, let’s face, as announced, its relationship with Amazon, I mean, this support of Amazon’s APIs:
OpenNebula current version (OpenNebula 3.8 or Twin Jet) brings valuable contributions from many industry members of its large user community, including new innovative features and enhances its AWS and OCCI API implementations and the integration with VMware and KVM, which are the most widely used hypervisors in OpenNebula clouds.
Eucalyptus Designed to emulate Amazon computing capabilities using computers inside any data center, Eucalyptus has for years presented itself as a logical adjunct to Amazon usage: As a result, all the scripts and software products based on the Amazon API can be easily employed for your private cloud. Actually, they signed an agreement with Amazon in 2012, that it also made it easier for Eucalyptus to bill their product as the natural partner to Amazon’s offerings. However that could be a double-edged sword: if OpenStack or other becomes a credible threat for Amazon, then it could simply buy (or replicate) Eucalyptus, not in order to support innumerable private clouds forever, but to smooth the path and drag reluctant corporate server-huggers ever closer to Amazon’s all-consuming data centers.
CloudStack Apart from having its own full-featured RESTful API, the platform supports CloudBridge Amazon EC2, which enables converting an Amazon API into a CloudStack API (a list of the supported commands can be found here). Besides, CloudStack also provides an API that’s compatible with AWS S3 for organizations that wish to deploy hybrid clouds.
On OpenStack, developers can automate access or build tools to manage their resources using the natives OpenStack RESTful APIs. OpenStack also has, at least at the moment, has AWS EC2 compatibility API, and also supports AWS S3 API. However, in the market is growing the belief that OpenStack is not going to do much more (in the future) to support AWS integration, in fact, that was the reason that Citrix argue for migrating away from the OpenStack project and releasing its CloudStack platform to the Apache Software Foundation.
- Eucalyptus, OpenNebula and CloudStack have embraced Amazon Web Services (AWS) APIs to have compatibility with AWS’s application programming interfaces. OpenStack, while so far supporting AWS in its open source code, and has taken a much different approach and is attempting to position itself as an open-source alternative to AWS.
- All of them, also supports the OCCI API, or are in its way of do it, enabling (or easing) the future cross interoperability.
- Besides, while Eucalyptus, CloudStack and OpenNebula are open product offered and supported by a company (besides of a community), OpenStack is an full open source code that vendors or end users can adopt themselves to manage a cloud.
- Finally (referring to the one analyzed in this post) all of them offer or enable to build services similar to the Amazon EC2, but OpenStack is the only one of them that span the bare compute service, and offers scalable object storage for petabytes of accessible data as the ones of Amazon’s S3 Services, besides of traditional block storage.
In a future post I’ll finalize this IaaS Open Platforms comparison.