年末に @aqubi と CoCAFE というアプリケーションをリリースしました。喫茶店のWiFi状況やらなんやらを共有するiPhone用のアプリケーションです(Android版も作ってます)。
このアプリケーションでは Google Places APIとGoogle App Engineを使っていて、Google App Engine側では以下のような工夫をしてます。
Datastore(HRD)
- 地図のZoomに合わせた範囲検索をEqualityフィルタで実現するため、店の位置情報はGeoHashの先頭4文字,先頭5文字,先頭6文字,先頭7文字...とリストプロパティに保持→前方一致検索を使わずに済むので、別の条件で同時にInequeality Filterを使うこともできる。
- 利用ユーザ等の統計をとるためのアクセスログ的なデータは、必要な情報を全てKeyに詰め込んでいる→ Datastore Write Operationsの節約
Task Queue
- APIごとのアクセスカウンタは、リクエストを受け取ったときにはPull modeのTask QueueにTaskを追加。定期的にそれをPullして集計し、Datastoreに反映→ Datastore Write Operationsの節約、更新の衝突の心配もせずに済む
OAuth Provider
- App EngineのOAuth Providerを使用したのでOAuth Provider的なコードはほぼ書かずに済んだ
開発にかかった時間の殆どがクライアント側の実装と、操作性の調整です。Google App Engineだとサーバ側の実装はDBのコネクションがどーたらとか全然関係ないし、自動テストも簡単に実装できるし、全ての自動テストを実行しても大概数秒で実行できるし、ミドルウェアの設定も保守も必要ないし、運用も手間がかからないし、アプリケーションに集中したい人にはラクで良いです。
0 件のコメント:
コメントを投稿