App Engine + Java 覚書
- Spring 載せない方が良い
- jsp でなく Freemarker 等を使う
- jsp を使うと Jasper が初期化に必要になり、スピンアップが遅くなります (5,600 ms ほど)
- Freemarker などを使うようにすると、Jasper が必要ありませんのでスピンアップが遅くなりません
- Frontend は Go や Python など軽いランタイムで動かすのも手です。API を叩いてデータを取ってくるか、または Remote API を使って直に Datastore を触る事を検討します。
- DatastoreCallbacks を効果的に使う
- Datastore の操作(Put, Get 等)に対して処理をフックすることが出来る機構です
- Memcache から結果を返したり、Put 後に Memcache.put したりなどということが包括的に出来ます
- TaskQueue を効果的に使う
- とんでもなく便利です。
- 本当に軽い処理で、URL Handler を切るまでもなければ、DeferredTask が使えます。クラスを書いて、Queue に突っ込むだけで処理が出来る便利クラスです
- Upload 処理は
BlobstoreService.createUploadUrl()
を使う - Request と Response をログに吐き出しておく
- Max Idle Instances は 1 にしておく
- Instance Size を上げておく
- 標準の 128MB Instance では JVM と必要なクラスをロードするだけで割とかつかつです。
- 基本的に Instance Size は大きければ大きいほど効率よくリクエストが捌けます。