Apache Nuvem, a cross-cloud application programming interface

Abstract

Nuvem will define an open application programming interface for common cloud application services, allowing applications to be easily ported across the most popular cloud platforms.

Proposal

  • Define an open API that abstracts common cloud platform services to help decouple the application logic from the particulars of a specific proprietary cloud.
  • Implement the Nuvem API for popular clouds such as Google AppEngine, Amazon EC2 and Microsoft Azure.
  • Initially focus on User Authentication and Authorization, Distributed Cache, Data Store, Queuing; then extend to other services such as Chat, Logging, and Debugging.

Background

An important issue for application developers is to avoid lock-in to a specific cloud application platform. By providing a cross-cloud application programming interface that abstracts common cloud platform services, Nuvem addresses this concern and strives to help make applications easily portable across multiple clouds.

In mixed cloud deployments, applications need to access platform services across cloud boundaries. Nuvem will make this possible by providing a remote API for these cloud application platform services.

Rationale

There are currently no efforts to define a truly open-source API to abstract common cloud platform services. Nuvem strives to create a community around building an open-source cloud application programming interface in a manner that fully allows for tried-and-true open source mechanisms such as user-driven innovation.

Initial Goals

A Nuvem prototype is currently being developed in an Apache Tuscany sandbox, providing initial support for some cloud platform services from Google AppEngine and Amazon EC2. We look at moving this prototype to the Apache Incubator as the next step to broaden the community, expand the API to support more services and cloud platforms.

Current Status

The initial code has been developed under the Apache Software License 2.0 by current Apache committers.

Meritocracy

We recognize the importance of running the project as a meritocracy. We are eager to engage other members of the community and operate to the standard of meritocracy that Apache emphasizes; we believe this is the most effective method of growing our community and enabling widespread adoption.

Community

The initial committer list consists of a couple of independent developers. We expect that the project will greatly increase in contribution base, and this is one aspect the project will monitor in becoming ready for graduation.

Alignment

Currently, there are no other Apache projects concerned with building a cross-cloud API for application platform services. We feel that it would be a good complement to the set of Apache projects and could provide them with an API for interacting with cloud application platforms.

Nuvem complements Apache libCloud and Deltacloud projects (which both cover provisioning and elasticity in the cloud), providing portability of applications and application services across heterogeneous cloud environments.

Known Risks

Orphaned Products

The Nuvem developers have a long-term interest in use and maintenance of the code and there is also hope that different cloud providers will be interested in providing support for the Nuvem API and will join the project. We feel that it is important to put formal governance in place both for the project and the contributors as the project expands. We feel the ASF is the best location for this.

Inexperience with Open Source

Luciano Resende have been involved with Open Source Software for several years; he has actively contributed to Apache Tuscany, Apache PhotArk and contributed to and/or mentored other Apache podlings. He is also part of the Apache Community Development PMC and Admin/co-Admin for the Google Summer of Code mentoring project. Raymond Fend, is also a long time committer and PMC member of Apache Tuscany and/or other Apache projects.

Reliance on Salaried Developers

The project is being implemented by developers in their independent personal time and is not founded by a specific corporation.

Relationships with Other Apache Products

Apache Tuscany is currently used to wire different implementations of application platform services to applications and expose these services remotely.

For clouds that does not provide a specific application service on their platform, we would work with Apache sibling projects such as Hadoop, CouchDB and Cassandra for data store, or ActiveMQ and Qpid for queueing for example, to close the gap.

An Excessive Fascination with the Apache Brand

We seek to build a lasting community around the Nuvem API. The most important reason for proposing this project for incubation is to gain visibility, and to allow contributors to more easily join and contribute to the project.

Documentation

There isn't much of a documentation available.

Initial Source

The Apache Nuvem prototype has been developed in the Apache SVN repository and is available at:

https://svn.apache.org/repos/asf/tuscany/sandbox/sca-cloud-tutorial/

External Dependencies

Nuvem is written in Java and is currently using Apache Tuscany.

Cryptography

N/A

Required Resources

Initial Committers

Luciano Resende (lresende AT apache DOT org)

Raymond Feng (rfeng AT apache DOT org)

Senaka Fernando (senaka AT apache DOT org)

Selvaratnam Uthaiyashankar (shankar AT apache DOT org)

Sagara Gunathunga (sagara AT apache DOT org)

Jean-Sebastien Delfino (jsdelfino AT apache DOT org)

Sonal Goyal (sgoyal AT apache DOT org)

Donald Woods (dwoods AT apache DOT org)

Chintana Wilamuna (chintana AT apache DOT org)

Sponsors

Champion

Luciano Resende (lresende AT apache DOT org)

Nominated Mentors

Jean-Frederic Clere (jfclere AT apache DOT org)

Paul Fremantle (pzf AT apache DOT org)

Ant Elder (antelder AT apache DOT org)

Donald Woods (dwoods AT apache DOT org)

Sponsoring Entity

Incubator PMC

  • No labels