Home > Archives: September 2010
Multi-in, multi-outのシステムのユースケースを書くとき,感覚的にはINを中心に書きたくなるが,やっぱりOUTの方が重要なのかなと考え直した.
8月初旬にGAEの上で動くアプリを作ってみようと思い立ち,自分のPCで試行錯誤を重ねていたものを本番環境へ展開した.開発環境にあったデータをそのまま移行したので表示部分は一応動いている感じだ.
ただ,気になる点がいくつかある.
1. インデックス
開発環境ではインデックスの明示的な指定は不要で,dev_appserverが親切にもindex.yamlを自動的に更新してくれる.しかし,本番環境ではインデックスのないQueryはNeedIndexError エラーになる.
2. 処理時間
アクセスログに応答時間とCPU時間が記録されるのだが,1アクセスで最悪時3秒弱かかっている.また,応答時間が190ms程度なのにCPU時間は680msになっているものもある.インスタンスの新規起動,データアクセスがCPUを食うようだ.memcachedの利用を最初から視野に入れた方がよさそう.
3. DataStoreアクセスエラー処理
本番環境ではDataStoreのアクセスタイムアウトという開発環境で起こらない現象が出るらしい.今のコードにはDataStoreアクセスに失敗した場合のエラー処理が入っていない.単純にやり直せば済む話であればcronやtask queueもリトライしてくれるので問題ないが,単純なやり直しでは済まない部分が問題となる.
まだ,動くか確認できてないので,URLは秘密.