インソースマーケティングデザイン
2012.01.23 システム
Google App Engine とは
最近、無性に「Google App Engine(以下GAE)」に関心を持ち始めましたので調べてみました。
GAEとは平たく言うと、Googleが提供するインフラ上で自前のWebアプリケーションを実行できる仕組みで、Googleサーバーの信頼性、拡張性、パフォーマンスの恩恵にあやかれるサービスらしいです。
GAEの料金体系はリソース(CPU時間、ディスク領域、データ転送量)の使用量に応じて課金されていきます。
リソースは設定した上限金額まで確保してくれるので、普段アクセスが無いが毎日12時になると高負荷になるというような場合でも、お金さえ続けば処理してくれます。
リソースには無料クォータが設定されており、軽負荷になるようにうまく最適化されたアプリケーションであれば無料で使い続けることも可能らしいです。ただ最近では料金体系の見直しがされて余程のことが無い限りは無料で利用することは難しそうです。
GAEでは様々なAPIとともにBigtableと呼ばれるKVSのDBも提供しています。
よく利用するDBとしてはOracle、MySQL、PostgreSQL等のRDBがありますが、KVSのBigtableではキーに基づく行のCRUD(追加、取得、更新、削除)とスキャン(前方一致検索、範囲指定検索)によるデータ取得しか出来ず、テーブルの結合などは出来ないものとなっています。
データ操作の面で見るととても使いにくいDBですが、運用の面で見るとRDBと比べてデータが増えても一定の速さのレスポンスが確保できる、分散・拡張が容易等のメリットがあります。DBに関する詳しい内容は下記の@ITのサイトがとても分かりやすかったので参考にしてください。
ここまでざっと調べてみましたが、実際にどのようなアプリケーションがGAEに向いているのかはDBに依存しそうな気がします。逆にDBの設計さえ上手く行けば最高なものが作れるかもしれないです。
<参考URL>
□@IT もう1つの、DBのかたち、分散Key-Valueストアとは
http://www.atmarkit.co.jp/fjava/rensai4/bigtable01/01.html
□@IT 素朴なBigtable、できること できないこと
http://www.atmarkit.co.jp/fjava/rensai4/bigtable02/01.html
□@IT ここが大変だよBigtableとGoogle App Engine
http://www.atmarkit.co.jp/fjava/rensai4/bigtable03/01.html