dependent. A such approach needs to be based on
a common understanding of terms, notions and rela-
tionships involved in cloud platform usage, mainly a
cloud ontology. In order to proof the concepts, we in-
tend to build both a software platform and a cloud
platform, conceived as a thin layer, a middleware,
which lives on the top of the cloud providers in or-
der to enable/help the federation approach. Supple-
mentary to the API implementation, the middleware
should allow the selection of the cloud providers ac-
cording to the needs of the applications, preferable at
run-time, based on contractual agreements, and even
to allow re-negotiations.
Following these beliefs, a development activity
has recently started in the frame of mOSAIC project
(www.mosaic-cloud.eu). In this paper we describe
the basic concepts and requirements of the cross plat-
form API that we propose. Next section describes
the terms. Section 3 is providing more details about
the components that are expected to be described in a
Cloud-based applications. Section 4 is discussing the
layers of the API set. Finally some conclusions and
future steps are provided.
2 API REQUIREMENTS AND
ARCHITECTURE
Before presenting the proposed API, we shall first try
to clarify the meaning of API in the context of cloud
computing, and what are the expectations of different
parties from such an API.
From a pure software engineering point of view
we have two API categories exposing operations for
a certain resource: in-process APIs and remote APIs.
The first one is what any developer uses on a daily
basis, a combination of objects, methods, functions,
or procedures (depending on the paradigm of the
programming language) abstracting the resources in
terms of memory usage, mutable of immutable, usu-
ally transparent, data-structures and usually opaque
pieces of machine executableor interpreted code; thus
using such an API is very comfortable for the devel-
oper and most of the times extremely efficient. On
the other side, surpassing a single process border and
bridging applications, we have the remote APIs, ei-
ther in the form of Web services (like SOAP or REST
based), remote calls (like Sun RPC, Java RMI, AMF),
message passing (like AMQP, STOMP), or applica-
tion dependent protocols (like FTP, SNMP). These
APIs are abstracting the resources as reactive (re-
quest/reply) opaque agents that communicate based
on fully transparent immutable data structures (like
XML, JSON, ASN.1, other binary serialization). In-
teroperability is favored over efficiency. A drawback
is the fact that remote APIs are harder to use, needing
wrappers of the first kind of APIs.
If we follow a quick survey of the APIs (see e.g.
related work section) exposed by the most prominent
IaaS cloud providers (like Amazon or RackSpace) or
proposed by the IaaS cloud standards (like OCCI or
CDMI), we observe that they fit exclusively in the se-
cond category, that of remote APIs, and more specif-
ically are of the Web services flavor, either SOAP
based (like Amazon ones), or REST based (like in
OCCI or CDMI). In what concerns the current state
of the interoperability and the programming language
independence requirements, it should be noticed that
several companies or open-source projects are provi-
ding custom bindings for a wide range of program-
ming languages. But even though at the network
level (data encoding, framing, message sequence,
etc.) there are standardization bodies, no standard-
ization effort is targeting the in-process APIs. Worst,
most libraries either incompletely implement the pro-
posed standards or try to wrap the lowest denominator
of the competing provider APIs. As a consequence a
cloud application developer is faced with a dilemma,
being forced to either choose a feature-full library cre-
ated by the chosen cloud provider targeting only his
own resource interfaces (getting locked in), or chose
a lowest denominator, standards compliant resource
API, in a rather incomplete implementation state.
On the other hand if we extend the definition
of Cloud computing to include self-managed dis-
tributed data resources – like for example the Cas-
sandra clusters from Facebook, the MongoDB shards
from SourceForge, or the Hypertable deployment of
Baidu – and surveying their interfacing solutions, we
observe that, again exclusively, they are in the oppo-
site corner of the remoting domain, employing RPC
solutions (e.g. Thrift, Avro, Protocol Buffers, or cus-
tom binary protocols). The reason for such a decision
is the need for performance and advanced features
against interoperability or a common data model, and,
as a consequence, a standardization process is not at
all possible or evendesired (at least in the near future).
Thus going back to the developer of a cloud ap-
plication that might have the task not only to mix
resources from different cloud providers, but also to
interact with those exposed by such self-hosted dis-
tributed systems, we observe that currently no single
library or standard covers such a situation.
Our platform is targeted mainly at cloud applica-
tion developers, so we intend to offer them mainly
a unified in-process cloud API, but also a remote
one through so-called interoperability API. The first
one should be based on the emerging cloud remote
TOWARDS A CROSS PLATFORM CLOUD API - Components for Cloud Federation
167