appengine ja night #8にいってきたよ
去る6月4日にappengine ja night #8 : ATNDにいってきました。Beer Talkに参加し、その後の二次会にも参加。飲みまくりの夜だった。ていうか最近銀座づいてます。週に3回くらい銀座周辺(有楽町、日比谷)行って飲んでるぞ。大丈夫か。大丈夫じゃないぞ。
内容とか
とりあえずshin1ogawaさんのまとめを読むといいんじゃないかな(手抜き
今回は貴重なGAE Python開発者*1による実運用サイトの事例ということで、@najeiraさんのプレゼンが最初に。月間1億PVとか、GAE使う意義がかなり大きそうな感じ。
GAE採用までのあれこれは実際に商売としてやるには大切だろうなーと思いつつ、自分が注目してたのはproxyのあたり。GAEのエラー画面をユーザに見せたくないなーとか、静的データはキャッシュしたいし、とかのあたりはブラウザ向けの普通のサイトをやるには大事なんだろうな、ほんとに。Googleもフロントエンドサーバ + static fileゲートウェイくらいは日本にも置いてくれればいいのに。
続けて、@koherさんのSkipListの話。計算量の話はついてこられない人が出てくると辛そうだなーと思ってたけど、用意されてたスライドがすごい良くできてたのと、説明も丁寧でだいたいの人が理解してたんじゃないだろうか。検索用リンク構造の深さがイコール計算量になっててそれが logN なんだよ、というところがピンときてない人がいたようで、テーブルで説明してたりしてた。SkipListは実は大学で学部輪講のときに同期が発表してて、それで昔から知ってたんだよね。P2Pで使う分散ハッシュテーブルも実はほぼいっしょだし*2。
問題は検索と更新の両方がO(logN)の操作になるってことで、データ量が多いとどんな操作をやるにしても数秒待たされることになって、HTTPレスポンス生成時に同期的に処理するにはどんなアプリケーションに適用するにしてもちょっとツラいかな、と。扱うときにTaskQueueを必ず経由するってのは汎用のデータ構造化するには敷居が高過ぎる。TaskQueueベースのMapReduceで並列処理して1秒以内に、みたいなことができるなら操作を非同期化して使うのもアリだけど、今のTaskQueueだとちょっと無理だよね。あと並列化もちょっと脳内でひねってみたけど、あんまりいいアイデアが出てこない、というか無理そうな予感。
@koherさんが最後に言及してた、検索パスをまとめてひとつのエンティティに、というのは更新頻度が少ないデータセットには使えそう。更新頻度が少ないといっても衝突しない程度にってことだから、これなら一般のアプリでも使い出はありそうかなと。逆に更新頻度の高いアプリ(ゲームのランキングなんかはこっちだよな)にはちょっと厳しい。いいテがないもんかね。
@koherさん発表の途中でBeerTalkに切り替わってピザとビールが行きわたり、だんだん雰囲気がカオス化。前でしゃべってる人の話を聴く人、途中で勝手に質問する人、各テーブルではじまる議論、何度も何度もビールを満たしに行く奴(俺)、ビールを満たしたらその場で飲みはじめて周囲の人としゃべる奴(俺)。たいへんいい感じですね。Ustreamの向こう側の人にとってはアレかもしれませんが。
ということでその後の話はあんまりよく聞いてなかったです……。自分は何の話をしてたんだっけ? 誰としゃべってたかは覚えてるんだけどなあ。とにかくビールサーバ最高っすね、と。次回もあるんなら、もっとうまく注げるようになりたいところ。ただBeerTalk開始時に待ち行列ができるのはどうにかしたいっすね。
今回リクルート メディアテクノロジーラボに初めて行ったんだけど、すごいいい会場ですねー。MTL++。
二次会とか
とか、と書いてあるのは、二次会は閉店でけっこうすぐに追い出されたので三次会もあったから。
……何の話をしてたんだっけ?(ぉぃ 人の年齢は見た目ではわからんなー、とかそういう話もしてたような気がする。失礼なこと言ってたら大変申し訳ありません。あんまりよく覚えてません。疲れてたのかな。もしくはBeerTalk時にうろうろしすぎてて酔いが回ってたかも。なんかPHPは書くのムリー、とか、そういうことを言ってたような気もする。いつものことか。