これは!と思って検証していたら、確かにそれらしいリクエストをmakeRequestへ送っているのを見つけました。
■クラウド時代に備えて、プログラマーが理解しておくべき考え方
http://codezine.jp/article/detail/3618
Google App Engineが自動でスケーリングしている例として、オープンソーシャル向けの3Dアバター「BuddyPoke」を挙げた。同サービスのorkut上でのユーザー数は現在3千万人ほどあり、ユーザー増加の過程でサーバなどの設備増強などはまったく行なっていないそうだ。
XMLはAmazonのS3に置いてるんですね。あんまりこういうのを見るのは良くないのかしら(^^; (いらないヘッダは消してます)
POST /gadgets/makeRequest HTTP/1.1
Content-Type:application/x-www-form-urlencoded
Host:bipq8hub3ub1r4mcejdm9urlpd456fkn.a.orkut.gmodules.com
Content-Length:521
url=http%3A%2F%2Fbuddypokeapp.appspot.com%2Forkut%2Fmood&httpMethod=POST&headers=Content-Type%3Dapplication%252Fx-www-form-urlencoded&postData=mood%3Dm_nluv%26epoch%3D1235618626&authz=signed&st=AFinprQG8jC2cr_lE1MCv3PYY3XHYjOrRbW7x4I1SIof3kQevcjpIdahOAy5fff8Ree6v18hyef8l6mlAuafENfKTzaHT4Atc7O49lQ5FJlKAFqymhm4MyQ&contentType=TEXT&numEntries=3&getSummaries=false&signOwner=true&signViewer=true&gadget=http%3A%2F%2Fbuddypoke.s3.amazonaws.com%2Forkut.xml&container=orkut&bypassSpecCache=&oauthState=&OAUTH_SERVICE_NAME=HMAC
おまけですが、データの保存にもAmazon S3を利用しているようでした。
普通にフォームからPOSTするだけで、S3へ格納できる「Browser-Based Uploads Using POST」という仕組みが用意されているんですね。S3便利すぎる。
※AppEngineで用意されているディスクが500Mということを考えると、AppEngine経由でデータを別のストレージに保存しているんだろうなぁというのは想像に難くないところでもあります。で、たまたま表に出てきていましたが、こんな感じで直にリクエスト送ったりもしていると。
ちなみにリクエスト内容はこちら。
(いらないヘッダは消してます)
POST / HTTP/1.1
Content-Type:multipart/form-data; boundary=---------------------------qmallymlsdsocnfg
Content-Length:5067
Host:buddypoke.s3.amazonaws.com
-----------------------------qmallymlsdsocnfg
Content-Disposition: form-data; name="key"
orkut.com/15623766171946637921/icons.png
-----------------------------qmallymlsdsocnfg
Content-Disposition: form-data; name="acl"
public-read
-----------------------------qmallymlsdsocnfg
Content-Disposition: form-data; name="Content-Type"
image/png
-----------------------------qmallymlsdsocnfg
Content-Disposition: form-data; name="AWSAccessKeyId"
13G614B23FZHBNXRJJG2
-----------------------------qmallymlsdsocnfg
Content-Disposition: form-data; name="policy"
eydleHBpcmF0aW9uJzonMjAwOS0wMi0yN1QwMzowMjoyOC4wMDBaJywnY29uZGl0aW9ucyc6W3snYnVja2V0JzonYnVkZHlwb2tlJ30seydhY2wnOidwdWJsaWMtcmVhZCd9LHsnc3VjY2Vzc19hY3Rpb25fc3RhdHVzJzonMjAxJ30sWydlcScsJyRrZXknLCdvcmt1dC5jb20vMTU2MjM3NjYxNzE5NDY2Mzc5MjEvaWNvbnMucG5nJ10sWydlcScsJyRDb250ZW50LVR5cGUnLCdpbWFnZS9wbmcnXSxbJ2VxJywnJENhY2hlLUNvbnRyb2wnLCdwdWJsaWMsbWF4LWFnZT0yNTkyMDAnXSxbJ2NvbnRlbnQtbGVuZ3RoLXJhbmdlJywwLDcwOTcyXV19
-----------------------------qmallymlsdsocnfg
Content-Disposition: form-data; name="success_action_status"
201
-----------------------------qmallymlsdsocnfg
Content-Disposition: form-data; name="Cache-Control"
public,max-age=259200
-----------------------------qmallymlsdsocnfg
Content-Disposition: form-data; name="signature"
50EpmfRPjuf3b0R3xT5F+XryxCw=
-----------------------------qmallymlsdsocnfg
Content-Disposition: form-data; name="file"; fname="15623766171946637921"
Content-Type: image/png
※バイナリなので割愛
おまけのおまけ。
中の人がしゃべっている動画も見つけました。うなぎのぼりですねー。すごい。
おまけのおまけのおまけ
同様の記事たち。
BuddyPoke!はMySQLやOrkut、Hi5などのソーシャルネットワークで動作するOpenSocialアプリケーション。アバターをカスタマイズしてほかのユーザのアバターとアクションがとれるというものだ。Google App Engineの活用事例としてはもっとも有名なもののひとつで、Google App Engineの高いスケーラビリティを示す例としても興味深い。MySQL??
