Over the last several weeks I have been having some interesting conversations in regards to standardizing cloud based API's. As you know I am a big proponent of the concept of semantic cloud abstraction. Our Unified Cloud Interface project (UCI) has attracted more then 350 members in a little over a month. Before I get into my latest scheme, I want to assure you I still feel that a singular cloud abstraction interface that can encompass the entire infrastructure stack as well as emerging cloud centric technologies through a semantic application interface is truly the future of cloud computing. We hope to have a functional UCI demo ready for presentation at the upcoming Wall Street Interoperability Forum, so stay tuned for more news on that front.
I'm also realistic, most users who have deployed to the cloud have written their applications specifically for the Amazon Web Service API, making it currently the De facto standard. So it occurred to me, that a potentially big opportunity might be to create an open universal EC2 API adapter / abstraction layer (UEC2). Unlike EUCALYPTUS, the EC2 API adapter can work with your existing infrastructure tools and is completely platform agnostic.
At the heart of this concept would be a universal EC2 abstraction, similar to ODBC, a platform-independent database abstraction layer. Like ODBC a user could install the specific EC2 api-implementation, through which a cloned EC2 API is able to communicate with traditional virtual infrastructure platforms such as VMware using the standardized EC2 API. The user then has the ability to have their EC2 specific applications communicate directly with any infrastructure using this EC2 Adapter. The adapter then relays the results back and forth between the the other various infrastructure platforms & API's.
I admit the downside of a universal EC2 abstraction layer is the increased overhead to transform statements into constructs understood by the target management platforms.
The Universal EC2 API adapter complements our current unified cloud interface efforts because in a sense it is a logical inverse. Where UCI is a semantic representation for all API's, (One API to Rule them all) the EC2 API is very specific to an infrastructure as a service environment. The EC2 adapter could easily utilize UCI as an interchange format allowing for a one to many deployment methodology. An EC2 abstraction layer will reduce the amount of developer work by providing a consistent API. To put it another way, rather then coming at the problem from the top down, your coming at from the bottom up with UCI in the middle.
To be clear I don't have the time or resources to make this project happen myself, between my various cloud advocacy efforts and a new baby, I'm totally overwhelmed. So I'd like to propose we crowd source this idea. Make it an open source project governed by an enterprise friendly open source license such as BSD.