AmazonのS3とストレージ直結型Webアプリ

http://www.tatamilab.jp/rnd/archives/000280.html

Amazon Simple Storage Service (Amazon S3):ストレージサービス
* $0.15/GB(month)、転送$0.20/GBと激安。
* ファイル単位のアクセス権管理
* 常時レプリケーション99.99%アップタイム。
* 静的なストレージだが、WEBサービスとしてリクエストする。なので、AJAX使えばWEBサイトも作れちゃったりする。
* 実例:smugmug(バックアップがs3)、chicago crime 

これ、見落としてた。ただのオンラインストレージサービスという視点から抜けられていなかった。

ブラウザとストレージサービスが直結して、その間はAjax(XMLHttpRequest)でつながる。フロントUIを構成するHTML自体もストレージサービスにホスティングされるから、XMLHttpRequestドメインをまたぐ必要はなく、ユーザリクエストと同じセッション/アクセス制御でリクエスト可能になる、ということだよね?ちがうかな?

以前WebDAVのフロントエンドをHTMLで書いて、XMLHttpRequestでWebDAVサービスと直結というのをやったけど、考え方はおなじだね。アプリケーションサーバいらずのWebアプリケーション。

同様にブラウザ <-> ストレージサービス直結の考え方をしているものとして、自分の知る限りでは、salesforce.comのAppExchange AJAX Toolkitがある。こちらはそもそもエンタープライズ向けのCRMサービスを元にしている会社であるため、そっち側に関係がない人にはあまり知られていないと思うけど。

彼らは自分たちのアプリケーションが持つ(仮想)データベース表へアクセスするためのSOAP APIを公開しており、それを使ってカスタムアプリケーションを作ることができるようにしている。さらにそのSOAP APIXMLHttpRequest+JavaScriptから利用できるようにまとめたツールキットまで提供しており、これをカスタムのHTMLとあわせて利用することで、カスタムAjaxアプリをsalesforce.comのサイト内だけで作成することができるようになっている。*1

この方法、複雑なワークフローを必要とするアプリケーションには向かないかもしれないけど、視点として面白い。構成としては2階層だけど、シンクライアントであるという奇妙さ。認証/アクセス制御の仕組みがストレージサービスに一任されている点も注目に値する。マルチユーザ間でのデータ共有とあわせて考えるとなかなか使えるのじゃないだろうか。

(追記)
S3でのAjaxに関して、XMLHttpRequestの認証セッションが通常のユーザリクエストと同じで扱える、というのは早とちりだったみたい。XMLHttpRequestを投げる前にS3から改めて認証を受けておく必要があるっぽい。
http://decafbad.com/blog/2006/04/03/javascript-apps-with-readwrite-access-to-s3
ページ遷移しちゃったときのセッション維持がちょっとめんどくさそう。

*1:開発者登録すれば、多少制限はあったかもしれないが無料で使えたはず