In a recent article, William Vambenepe, compares four public Cloud APIs (AWS EC2, GoGrid, Rackspace and Sun Cloud) to see the practical value of REST in IT/Cloud management.
Intrestingly, As someone who was involved with the creation of the WS-* stack, principles of REST feel natural to William
In opposition to WS-*. On the other hand, as someone who started writing web apps when the state of the art was a CGI Perl script, who loves on-the-wire protocols […], who is happy to deal with raw XML […] who appreciates the semantic web, and who values models over protocols the REST principles are very natural to me.
Given his background in IT resource management, he examines the RESTful principles in this field and how the various IT/Cloud management vendors employ these principles in their API design.
For a while now I have been wondering if I am missing something important about REST and its applicability to IT management or if it’s mostly a matter of “just pick one protocol and focus on the model” (as well as simply avoiding the various drawbacks of the alternative methods, which is a valid reason but not an intrinsic benefit of REST).
He starts out with a little history about Amazon EC2 …
When it came out a few years ago, the Amazon EC2 API, with its equivalent SOAP and plain-HTTP alternatives, did nothing to move me from the view that it’s just a matter of picking a protocol and being consistent. They give you the choice of plain HTTP versus SOAP, but it’s just a matter of tweaking how the messages are serialized (URL parameters versus a SOAP message in the input; whether or not there is a SOAP wrapper in the output).
[…]
Fast forward to 2009 and many people have now created and published RESTful APIs for Cloud computing. APIs that are backed by real implementations and that explicitly claim RESTfulness (unlike Amazon). Plus, their authors have great credentials in datacenter automation and/or REST design. First came GoGrid, then the Sun Cloud API and recently Rackspace. So now we have concrete specifications to analyze to understand what REST means for resource management.
… and goes on to discus details about GoGrid API, Rackspace “Cloud Servers” API, and the Sun Cloud API. He concludes, without going into a detailed comparison of the features that the various cloud vendors are very similar in their offerings
Overall, they are pretty similar in many dimensions. They let you do similar things (create server instances based on images, destroy them, assign IPs to them…). Some features differ: GoGrid supports more load balancing features, Rackspace gives you control of backup schedules, Sun gives you clusters (a way to achieve the kind of manage-as-group features inherent in the EC2 API), etc.
He concludes that Suns’ and Rackspaces’ API’s the most RESTFul and consequently the ones he would find most enjoyable to develop against. The full article can be found at his blog. What are your experiences with developing against the API’s of these cloud vendors? Especially using Microsoft’s Windows Azure, which is conspicuously missing vendor from Williams’s analysis.