When porting an application in a multi-cloud environment often you are faced with the problem of how to integrate with different clouds that provide and implement different management APIs.
This is the case where abstraction cloud libraries come into play. These libraries provide an abstraction layer to the end programmer, giving the ability to use the same API calls in order to communicate to different cloud providers on the Infrastructure as a Service (IaaS) layer. These libraries hide away the peculiarities of a specific cloud provider, by offering a unified abstract view of the IaaS layer capabilities (e.g. start a VM, stop a VM, attach extra disk space etc.)
Currently there are quite a few different options when choosing an abstraction library to use for your project. Some of these libraries are language-specific; others are more generic and provide support for different languages. In principle any cloud provider can potentially be supported by an abstract library. Popular IaaS clouds like Amazon EC2, OpenStack, RackSpace etc. are usually supported out of the box. What’s more important, these libraries are open-source, extensible software, thus anyone can write his/her own plugin in order to enable support for any other non-common API. Below is a sample of the most popular abstraction libraries nowadays.
Apache Libcloud is a standard Python library that abstracts away differences among multiple cloud provider APIs. The current version allows users to manage four different cloud resources: Cloud Servers, Cloud Storage, Load Balancers as a Service and DNS as a Service.
jclouds is one of the most popular solutions, supporting Java and Clojure. The library currently provides plugins for 30 cloud providers and cloud software stacks including Amazon, Azure, GoGrid, Ninefold, OpenStack, Rackspace, and vCloud.
δ-cloud (delta-cloud) is an open source Apache project written in Ruby that provides not one but three different APIs for simple any-platform access to a large number of cloud providers. In particular deltacloud provides a REST-ful API, a CIMI-compliant API and a proprietary API. Being REST-ful implies that actually many different languages can be used. Currently the solution itself comes with client libraries for most popular languages.
Simple Cloud is a cloud abstraction library for PHP. It provides abstractions for File Storage Services, Document Storage Services, Queue Services and Infrastructure. Simple cloud is actively supported by IBM, Microsoft, Rackspace, Nirvanix, and GoGrid who have already joined the open source project as contributors.
In CELAR abstraction libraries are already playing a key role in our development work. CELAR aims to provide cross-platform enhanced elasticity capabilities to cloud infrastructures. As part of the project, two cloud services are being utilized: Flexiant Cloud Orchestrator (FCO) and GRNET’s okeanos cloud. These two solutions although offering similar sets of features are implemented in a completely different way. On the programming interface side in particular, FCO offers a proprietary management API, whereas ~okeanos provides an OpenStack compliant API.
Elasticity features on the above services are being enabled by integrating them with SlipStream, a Platform as a Service (PaaS) solution, developed by CELAR’s partner SixSq, that offers advanced programming and scripting capabilities for describing, executing and monitoring cloud-enabled applications. SlipStream is written in Java and Python and thus utilizes two different libraries in order to talk to IaaS cloud providers: jclouds and libcloud.
Our effort is currently focusing on jclouds and libcloud support of FCO and okeanos. Respective plugins are being developed either from scratch, or by extending existing ones, in order to ensure that the upper layers of CELAR architecture will seamlessly integrate the capabilities of both cloud providers. In a similar manner additional cloud providers can potentially be used from CELAR tools, thus expanding the impact of the projects efforts, making sure that the final results can be exploited in different cloud environments.
Vangelis – GRNET