Tue, December 9, 2008
GAE(Google App Engine)を使ってみて気づいたことのメモ(gae,google)
GAE は、簡単に言えば Googleのインフラで、 ウェブアプリケーションをホスティングしてくれるサービスです。
長所
長所はいろいろありますが、わたしにとっては...
- ウェブアプリケーションを短期間でリリースできる
- (DjangoなどをベースにしたGoogle独自の)フレームワークの生産性が高くすばやく開発できる
- Pythonで開発できる
- ユーザ管理をgoogleに任せられる
といったあたりがとくに気に入っています。
制約
しかし、実際に開発を進めていくと、サーバレンタルして ウェブアプリを構築する場合と違い、いろいろな制約があります。
- cronのようにバックグラウンドで処理したり、スレッドによる処理ができない
- GQLで一度に取り出せる件数の上限が1000件という制約がある
- SDKによるローカルでの開発環境でのアプリ作動と、GAE上にアップロードしたアプリの作動とが完全一致するわけではない
- インデックスを作成してもすぐに Servingにならないので辛いときがある
- 複雑な処理や負荷の高い処理をするとエラーになってしまう
- 全文検索機能は提供されていない、自前での実装が難しそう
- 形態素解析器がない(Yahoo!日本語形態素解析のWebサービスが使えるが...)
などです。
特にサーバ負荷の高い処理ができないことや、バックグラウンドで処理できないという制約が 厳しいです。
つまり、GAE上のアプリは必ず、クライアントからのリクエストに対して、 一定時間内で処理して結果を返す、という形で実装しなければならない、ということです。
わたしは自分のメモをGAE上の蓄積するアプリケーションを書いているので、 cronのようなしくみをつかい、バックグラウンドでメモ同士の関連情報を構築したり、 全文検索したり、バックアップのためにすべてのメモを取り出したりしたいのですが、 これらのことはGAEでは工夫しないと実現できません。
たとえば、cronの代わりになる方法を探してネットで検索したところ...
- cronが動かせて、ネット接続できるマシンを用意
- そのマシンで一定間隔でGAEに対してリクエストを発行するクライアントプログラムをセットする
という方法が紹介されていました。
なるほどとは思いますが、この方法はちょっと管理が面倒すぎです。