Amazon Web Services, OpenStack, CloudStack, VMware… Developers have no shortage of IaaS offerings to support. And, lucky them, no shortage of different APIs to deal with, either. DeltaCloud, a top-level Apache project, is designed to help developers cut through the complexity and work with everything from EC2 to Red Hat Enterprise Virtualization Manager (RHEV-M).
DeltaCloud works with 11 different compute APIs (ranging from EC2 to vSphere) and five different storage APIs (including S3, Eucalyptus Walrus, and Google Storage). The 0.5 release also has experimental support for the Distributed Management Task Force (DMTF) Cloud Infrastructure Management Interface (CIMI).
What does DeltaCloud do? It’s a server that accepts a standard REST API for doing things like creating new instances on the compute nodes, rebooting instances, getting hardware profiles and image details, and more. On the storage side, DeltaCloud provides a standard API for creating new “buckets,” manipulating the buckets and storage “blobs,” and reading/writing data. In short, the basic operations that users want for interacting with cloud services from any management tool or application.
The DeltaCloud server then translates the requests it receives into the appropriate API calls for the IaaS providers it supports. If a service doesn’t have a native API for doing something, like providing a way to inject user data, then DeltaCloud advertises that fact so developers can work around it.
David Lutterkort, the vice president of Apache DeltaCloud, says the idea is that users should not be “beholden to any one vendor.”
The project was kicked off by Red Hat in 2010. Lutterkort says that the company “looked at the nascent cloud landscape and realized there is a big gap in terms of portability and data lock in. Writing applications to do anything with cloud pretty quickly locked [customers] into the cloud vendor’s API.” To counter this, Red Hat wanted to offer a vendor neutral API developed openly.
Red Hat took the first swipe at the code and then talked to customers and partners. Everybody liked the concept but worried about it being a Red Hat-only effort, so it was proposed as an Apache project and eventually accepted into the incubator. The Apache project announced that DeltaCloud graduated this week.
Lutterkort says that graduating from the incubator is not about the state of the code or actual project readiness. It’s about “a community showing that they’re active and growing, and that they can follow Apache processes.” Lutterkort says that the project is also seeing substantial contributions from Rackspace, IBM, OpenNebula and (of course) Red Hat.
Right now Lutterkort says that DeltaCloud is being used by Red Hat’s Aeolus and CloudForms projects, and that there’s an Eclipse plugin that can be used to talk to clouds via DeltaCloud. He also says some providers are using the DeltaCloud API definitions with their own implementations, but may not actually be using the DeltaCloud code.
Marten Mickos, CEO of Eucalyptus, says that the company also sees DeltaCloud as important for customers to avoid lock-in. “We make sure that Deltacloud works well with Eucalyptus so that users of Deltacloud know that they can run it on top of Eucalyptus. It’s important in the cloud world to avoid lock-in. Eucalyptus already does this by being open source and by following the leading industry API for clouds. Deltacloud further adds to this flexibility by being an overarching layer that can connect with multiple different underlying clouds.”
In the absence of a unified cloud API, DeltaCloud might just be the next best thing. It’s still early days and in rapid development, but if you’re looking to support multiple clouds, you might want to take a look at DeltaCloud.