REST 在 IT/Cloud 管理中的角色——API 的对比

  • Dilip Krishnan
  • 黄璜

2009 年 7 月 27 日

话题:SOARESTAWS云计算DevOps架构

最近的一篇文章中,William Vambenepe 比较了四种公开云计算 API(AWS EC2,GoGrid,Rackspace 以及 Sun Cloud) 以得出 REST 在 IT/Cloud 管理中的实用价值。

有趣的是,作为曾经参与创建 WS-* 协议栈的一员,William 对 REST 原则并没有感到什么不自在。

……[REST] 往往被定义成 WS-* 的对立面。另一方面,作为一个从 CGI Perl 脚本时期就开始写 Web 应用的人,一个 on-the-wire 协议的爱好者 [...],一个乐于处理原始 XML 的人 [...],一个欣赏语义网的人,一个将模型比协议看得更重的人,REST 的原则对我而言是非常自然的。

从自己 IT 资源管理的背景出发,William 在这一领域检验了 RESTful 的原则以及不同的 IT/Cloud 管理供应商是如何在他们的 API 设计中利用这些原则的。

过了一阵子之后,现在我开始怀疑我是否错过了 REST 的某些重要部分,以及其对于 IT 管理的应用,或者它是否只是“选择一个协议然后关注于模型”(与此同时仅仅避免其它替代方法的各种不足之处,这是一个正当的理由但不是 REST 其内在的好处)。

他从 Amazon EC2 的一点历史开始展开……

几年前 AmazonEC2 API刚发布的时候,与同样使用 SOAP 和普通 HTTP 的替代者相比,它并没有什么能够打动我的地方,不过是选择一个协议并且保持一致罢了。他们让你选择普通 HTTP 还是 SOAP,但这不过是改变消息被序列化的方式(输入中是使用 URL 参数,还是 SOAP;输出中是否有 SOAP 包装器)。

[…]

时间很快到了 2009 年,许多人都已经开始创建和发布用于云计算的 Restful API。API 的背后都有着实际的实现,并且都明确声明是 Restful 的(不像 Amazon)。此外,它们的作者在数据中心自动化与 / 或 REST 设计方面都有优秀的资历。首先出现的是 GoGrid,接着是 Sun Cloud API 以及最近发布的 Rackspace。所以我们现在有了具体的规范来分析和理解 REST 对于资源管理来说意味着什么。

... 接下来讨论了GoGrid APIRackspace “Cloud Servers” API,以及Sun Cloud API的细节。他总结到,尽管没有对这些不同的 Cloud 供应商深入到详细的特性对比,但它们的产品是非常相似的。

总的来说,它们在很多方面都具有相似性。它们让你进行相同的操作(基于映像创建服务器实例,撤消实例,为它们分配 IP...)。有些特性不同:GoGrid 更好地支持了负载平衡,Rackspace 让你控制备份计划,Sun 给予你集群支持(一种达到“群组管理”的方式,这在 EC2 API 中是内置的),等等。

他的结论是 Sun 和 Rackspaces 的 API 更为 RESTFul,相应地他也会更愿意使用它们来编程。全文可以在他的博客上找到。你对于使用这些 Cloud 供应商的 API 开发有着怎样的经验呢?特别是使用微软的 Windows Azure,它明显在 William 的分析中被忽略了。

查看英文原文:Role Of REST In IT And Cloud Management - A Comparison Of Cloud API's

SOARESTAWS云计算DevOps架构