ウェブ開発でのRESTの利点は何年もの間、喧伝されてきた。特にウェブサービスの文脈や、最近ではSOAとの関連でRESTの利点に注目が集まった。したがってクラウドの利用が広まると、まだ初期の段階とはいえ、さまざまな実装のRESTを見るのは不思議ではない。
2009年、William Vambenepe氏はクラウドでのRESTの役割を考え、その時点ではSunとRackspaceは他よりもRESTfulなAPIを持っていると結論づけた。約2年経って、多くの開発経験、多くのユーザと選択肢が生まれた結果、氏はAmazonを最も成功したクラウドプロバイダだと考えている。その上で氏は"AmazonがRESTを利用しないのなら、RESTはクラウドの成功に必要か"問うた。曰く、
新しいクラウドAPIが常に発表されています。そして、それらのAPIは“RESTfulness”が必須だというように喧伝されています。しかし、最も成功したクラウドAPIであるAWS APIのセットはRESTfulではありません。
RESTfulでないAPIが最も成功しているということが偶然であると考えられるほどクラウドを使い込んでいるという氏の評価には異論もあるだろう。しかし、考えてみるべき面白い事案だ。また、氏はRESTが重要でないと考えているわけではない。クラウドマネジメントに関する限りRESTはそれほど重要ではなく、例えばRPCよりも利点があるわけではない、と主張しているにすぎない。
AWSはほとんどがRPC over HTTPです。?Action=CreateKeyPairのようなパラメータをURLをHTTP GETリクエストを送信します。DeleteKeyPairの場合もあるでしょう。他のリソース(ボリューム、スナップショット、セキュリティグループ…)に対しても同じです。AmazonはRESTfulに見せようとしません。単に“Query API”(DevPay APIを除いてですが。これは“REST-Query”と呼ばれています。理由はわかりませんが)と呼ぶだけです。
氏が指摘するように、RESTfulなAPIがなくてもAmazonのAPIの利用者は減らない。配置したシステムの拡張性に悪影響があったり、限界が生まれることもない。セキュリティへの影響も、アプリケーションのタイプや利用している言語が制限されるわけでもない。
おおまかな規則はあります。そのAPIがオブジェクト指向言語のライブラリから呼ばれていて、その呼び出しのためのHTTPリクエストが、メソッドの呼び出しとマップされている場合はAPIがRESTfulかどうかはほとんど関係ありません。
氏の指摘によればRackspaceのエンジニアが初期の記事でRackspaceのAPIとAWS APIを正確に比較したものの、この比較では大事な点では大差ないように思える。つまり、開発者とユーザについてだ。そして結論として、究極的にはクラウドのRESTfulnessは(最低でもクラウドマネジメントについては)簡素さほど重要ではない、と述べている。
AWS APIはRESTfulnessのない簡素なAPIのサンプルです。Sun Cloud APIについて以前レビューに書いたように、“RESTは重要ではなく、残余”なのです。1年半ほどおくれましたが、これで一件落着です。
氏の記事にはたくさんのコメントがついたが、ほとんどは氏の考えに反対だ。例えば、
あなたの考えは間違っているとは思いません。EC2の成功は、Johnも指摘しているようにAmazonのAPIとはほとんど関係ありません。また、概してあなたの考えに全面的には同意できません。もしTim Berners-Leeがインターフェイスを物理学者向けに整えて、“物理学者向けコラボレーションソフトウエア”をマシンにインストールしさえすれば、研究結果を共有できるようにしていたなら、ウェブの世界は今日のようになっていたでしょうか。
また、
面白い問題ですが、完全に的外れだと思います。このような細かい点(RESTfulのAPIような)はまず、ライブラリの開発者に影響を与えます。優れたライブラリはどんなAPIでもリソース指向として抽象化します。抽象化するには効率的で一貫性のある概念をAPIに適用する必要がありますが、一度優れたAPIが利用できるようになれば、利用するのにさしたる障害はありません。大きく間違えることも無駄が生まれることもほとんどないでしょう。常に一貫性を維持できるはずです。つまり、一貫したインターフェイスを提供することができ、さらにそうする価値のある製品なら、APIは成功すると思います。
たくさんのクラウドの実装が各ベンダによって開発されている。また、オープンソースのものもある。これらのものでは通常、RESTfulnessは重要な特徴とされている。しかし、氏の問いは意味を失わない。現時点で最も成功したクラウドベンダがRESTを使っていないのなら、本当にRESTは重要なのだろうか。