Google App Engine の本質と誤解を解く:Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010


Warning: file_get_contents(http://isbnanchor.appspot.com/JP/text/asin/risingsunwebs-22/4798026999?format=%3Cspan+class%3D%22isbn_anchor%22%3E%3Ca+href%3D%22http%3A%2F%2Fwww.amazon.co.jp%2Fo%2FASIN%2F%25%28asin%29s%2Frisingsunwebs-22%2F%22%3E%3Cimg+src%3D%22%25%28image_m%29s%22+%2F%3E%25%28title%29s%3C%2Fa%3E%3C%2Fspan%3E) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /home/users/0/egoism.jp-risingsun/web/blog/wp-content/plugins/isbn_anchor/isbn_anchor.php on line 268

Google App Engine(GAE)とは

Googleのインフラ上で自作のWebアプリケーションを実行することができるPaaSのことです。GAE上で作成したアプリケーションは、構築や維持管理も簡単にできます。またトラフィックやデータストレージの増大に合わせて容易にスケールアウトが可能になっています。プログラミング言語はPythonとJavaをサポートし、それぞれSDKや開発環境も提供されています。現在の所、初期開設費用は無料でトラフィック量やデータストレージの容量によって料金が初めて発生する仕組みとなっています。

GAEの詳細ははこちらを参照。

クラウドの本質とは何か?

一般的には「クラウド=スケールアウト」と連想する人々が多いと思います。実際筆者もスケールアウトを連想しました。ひが氏は、もし本当にスケールアウトが本質ならクラウドは多くの人々に必要ないはずと述べました。

ひが氏の考えは「クラウド=コストダウン」。クラウドの本質は少ないシステムリソースを不特定多数の人々によって最大限に有効活用することにあると述べました。今までのように個別のシステム毎にピーク時を考慮し、システム基盤を構築することは当たり前のようではあるが、確かにシステムリソースの遊びが多く無駄が多いと感じることが多々あります。システムダウンしないための保険とはいえ、システムによっては高額な出費になることも少なくはありません。一方、Googleが提供するGAEは複数のアプリケーションでGoogleのシステムリソースを共有利用できます。GAEは各々のアプリケーションのサービス提供がピークを越えそうなときだけ、各サービスの提供サーバーを一時的に増設し、必要がなくなればサーバーの縮退を自動的に行います。

このように1つのシステムリソースを有効活用することでシステム基盤への投資費用のコストダウンを図ることが可能であり、ひが氏はそのコストダウンの手段としてスケールアウトが必要になったと述べていました。

プログラミング言語 Python vs Java

現時点でGAEがサポートしているプログラミング言語はPythonとJava。Javaは後からプログラミング言語としてサポートされたためか、pythonの方がGAEでアプリケーションを作成する場合、SDKの整備面や速度面で優位に感じやすいが、現時点ではプログラミング言語による差はほとんどありません。

よって、これからGAEでアプリケーションを作成する場合は、得意な言語を選択すればよいと述べていました。

スピンアップの時間の問題

ひが氏は、GAEのアプリケーションを作成する場合、プログラミング言語よりも、GAEの特徴のひとつであるスピンアップとスピンダウンを理解し、意識する必要があると述べていました。スピンアップ/スピンダウンとはGAE上でアプリケーションを起動(増設)/停止(縮退)することです。GAEはアプリケーションへのアクセスするとスピンアップし、2、3分アクセスがなければスピンダウンを行うため、GAE上ではスピンアップとスピンダウンは頻繁に繰り返されます。GAEは、スピンアップ時に30秒以上経過すると500 Internal Server Errorが発生し、一時的にアクセスができなくなります。そのため、スピンアップにかかる時間をなるべく短くすることが重要です。ひが氏は、スピンアップにかかる時間を短くすることが最重要課題だと述べていました。

JavaであればSlim3を使うべし

スピンアップの時間が遅い原因の1つとして、DataStore Serviceに対するデータアクセスが挙げられます。DataStore ServiceはGoogleのBigTableが採用されており、データ件数に関係なく平均したデータアクセスが可能ですが、アクセス速度自体は速くありません。またGAEのSDKで用意されているAPIは低レベルAPI、JDO、JPAがありますが、JDOもJPAも初期化が遅く性能上も問題があるようです。

Slim3は初期化に関しては可能な限り何もしておらず、データアクセスに関しては低レベルAPIを直接利用したライブラリを用意しているので、スピンアップやDataStore Serviceを利用する速度面では優位に立てます。プログラミング言語がJavaの場合、JDO/JPAを利用するより、slim3を利用した方がメリットがあります。

その他

7月にslim3の書籍が発売されるそうです。

[エラー: asin:4798026999 というアイテムは見つかりませんでした]


あわせてお読みください