It is a good sign that Google has decided to expose their Storage API based on Amazon S3 API. Eucalyptus Walrus Storage API is completely compatible with S3.
There has been a discussion on standardizing the API for the Cloud Storage. What fueled this discussion further is a poll that ReadWriteWeb.com ran on their site.
While majority of the participants of the poll felt that Amazon S3 API can be considered as the standard, James Urquhart from Cisco feels that it is too early to call anything a standard as of now. I completely agree with his viewpoint. Cloud Computing and Cloud Storage are still evolving and we will see many more capabilities in the future. With Amazon Web Services and Microsoft Windows Azure offering CDN as a service, it will quickly become a logical extension for the Cloud Storage API. Developers will just need to add a few flags to push the objects onto the CDN.Let’s get back to the original discussion on Cloud Storage API standards.
If we look back in history, the industry faced exactly the same challenge in the late 80s when the RDBMS market started to explode. Businesses didn’t want to suffer from lock-in and developers wanted flexibility at the API level. During the transition from monolithic to Client / Server, Open Database Connectivity (ODBC) became the de-facto standard. Every DB vendor shipped their own libraries that adhered to the ODBC standard and developers could switch the libraries at runtime to talk to multiple databases. The front-end applications were completely insulated from the back-end.
For Cloud, we fortunately have the standards as the Lowest Common Denominator. What is common across all the APIs is that they are based on HTTP, REST, XML and SOAP. That makes it easy for abstractions to surface. What we need now is a Cloud version of ODBC. Let me take the risk of calling this as Open Cloud Storage Connectivity API. I am visualizing an architecture that looks something like this:
This is based on the factory method pattern which is used by many enterprise architects. With this, a change in the configuration file will load the appropriate library for the target Storage service. This will be transparent to the Cloud Storage Consumer.
I already see this coming! Take a look at jClouds and Apache libcloud . The future of Cloud Storage is bright and exciting! What do you feel about the standardization of the Cloud Storage API?




As a Cloud Computing Strategist, Janakiram MSV helps businesses understand and adopt the Cloud Computing paradigm. His core strength is designing and architecting solutions for the Cloud. Janakiram focuses on industry's leading Cloud Computing offerings including Microsoft Windows Azure.












{ 9 comments… read them below or add one }
Hi Jani,
I agree with your view point that standardizing the API for the Cloud Storage is very much needed today. It should not be limited to public cloud storage rather it should be available for every storage option. Thanks for sharing some important pieces like jClouds and Apache libcloud APIs.
Best Regards,
Murty Eranki
I think it will take some more time for standards to be set in the cloud. I feel this as there is no proper and concrete strategy for the cloud from vendors. Simple case is from EMC, who stopped ATMOS, its Cloud Storage service just after its launch before 6 months. Reason might be the rift and direct competition from partners.
I think once product maturity comes, then standard make more sense.
Thanks,
Kiran
Totally agree with you Kiran. It is too early to finalize anything as a standard.
Are you aware of the SNIA CDMI standard for cloud storage? It might fill that need quite well.
James
James, thanks for pointing out SNIA CDMI (http://www.snia.org/cloud). I will explore that!
Dasein Cloud is ODBC (or JDBC) for the cloud.
Being a developer; I can't think of anything more useful than ODBC (and OLEDB in late 90s till now) to a developer! Anything of this sort for cloud standardization will help all the stake holders of cloud computing.
Firstly, great article. I enjoyed reading it and I agree that it would be great to see an overarching “cloud API”. In fact, that's one of the things I've been attempting to make a reality, at least from a C# .NET perspective with my open-source CloudStorageProvider project hosted at CodePlex: http://cloudstorageprovider.codeplex.com. The project is in it's infancy and currently contains just code for the Windows Azure platform, however, it can be easily extended to support any number of providers and I actively encourage the community to check it out, download it and add their own provider!
Wow!! really Good!!! I will be back soon!!!