スティルハウスの書庫の書庫

はてなダイアリーで書いてた「スティルハウスの書庫」を移転してきました。

appengine ja night #23 が終わりました

(まとめを書くのがすっかり遅くなってしまいました。。)今回のappengine ja night #23はひさびさにGoogleオフィスで開催されました。今回はGoogle米国本社からProppyとBrianを招いてApp EngineとCompute Engineのセッションを開催しました。

  • App Engine アプリの最適化と Appstats
    • Johan Euphrosine (proppy), Developer Programs Engineer, Google Inc.
    • App Engine アプリ設計や Datastore 利用におけるアンチパターンとベストプラクティスをはじめ、Appstats による最適化の方法を紹介します。
    • 資料はこちら
  • Google Compute Engine 最新動向と App Engine 連携
    • Brian Dorsey, Developer Programs Engineer, Google Inc.
    • 昨年の Google I/O 2012 で発表された IaaS サービス、Google Compute Engine の最新動向を紹介するほか、Google App Engine との連携のテクニックを日本語で解説します。

Proppyのセッションでは中級程度のApp Engineノウハウがまとめられてましたが、とくに注目すべきはGlobal Queryのアンチパターン。つまり、Queryの結果得られるEntityの内容が古い場合があるってことです。これ、今までドキュメント等にわかりやすく書かれていなかったので、見落としている方も多いと思います。この問題によるトラブルを避けるためには、Proppyの資料にあるように、Keys-only QueryとMemcacheやローカルキャッシュを組み合わせることで、古い内容をつかんでしまうリスクをできるだけ避けます。ただ、この方法も完璧じゃないですし、依然としてQueryのeventual consistencyによる「直前にinsertしたEntityの取りこぼし」は起き得ます。よって必ず最新状態の取得が必要な用途には、やっぱりstrong consistencyが保証されるAncestor QueryとEntity Groupを使う必要がありますね。

BrianのセッションではGCEの現状が紹介されました。App Engineとは異なり、GCEでは計画停止などによりインスタンスがダウンするとサービスもダウンしてしまいます。そのため、例えば計画停止前に別のゾーン内のインスタンストラフィックを移す等の対処が必要になります。GCEではグローバルIPアドレスと各インスタンスの割り当てを動的に変更できるようになったため、そうしたインスタンス切り替えも比較的簡単に実現可能となりました。

皆さんのまとめなど

会計など

なんと今回、ピザとビールはGoogle持ちでした!しかもいつものピザよりおいしかった。。ぐぬぬ
ふみさん、西村さん、横田さん、運営ありがとうございましたっ!