Your SlideShare is downloading. ×
0
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Slim3事例報告
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Slim3事例報告

7,602

Published on

0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,602
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
27
Comments
0
Likes
8
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. GAE/Slim3 実案件での事例報告
  • 2. <ul>自己紹介 </ul><ul>石井賢司(いしいけんじ) http://twitter.com/knj77 http://d.hatena.ne.jp/knj77 株式会社Prophet所属 </ul>
  • 3. <ul>プロジェクト概要 </ul><ul>運送料金オンライン見積りシステム <ul>http://giga-dokuji.appspot.com/ http://www.mixcargo.jp/ </ul><li>管理者:運送業者様
  • 4. 利用者:荷主様
  • 5. 2つのバージョン </li><ul><ul><li>複数の運送業者のサイトに Iframe 表示
  • 6. 1サイトに複数業者が出展(準備中) </li></ul></ul></ul>
  • 7. <ul>全体設計 </ul>TQで作成 検索
  • 8. <ul>体制/期間 </ul>3 人で約 3 週間 <ul><ul><li>石井と新人2人
  • 9. 経験としては、 </li><ul><ul><li>Slim3 のチュートリアル実施
  • 10. 自社サイト ( 静的 ) を GAE/J に移行
  • 11. お問い合わせフォーム作成 </li></ul></ul></ul></ul>
  • 12. <ul>GAE/Slim3 を選んだ理由 </ul><ul><li>やりたかったから!
  • 13. Seasar ( SAStruts )の経験
  • 14. ほぼ完成の時期( 1get !?) </li><ul><li>gtx 初回実装直後、ただし本案件では未使用 </li></ul></ul>
  • 15. <ul>( GAE で ) 苦労した点 </ul><ul><li>エンティティグループ
  • 16. インデックス爆発
  • 17. Datastore の分間制限
  • 18.  ->つまりは Model の設計 </li></ul>
  • 19. <ul>エンティティグループ </ul><ul>わかってなかった! 公式ドキュメントから読み始めため、 JDO とごっちゃに。 -> ドキュメント読み直し -> Twitter( #appengine ) 偉大 </ul>-> 「 EG は tx の為だけに存在する。 <ul>  RDB 的な小綺麗さは必要ない。」   by ひがさん </ul>
  • 20. <ul>インデックス爆発 </ul><ul>重要な問題 <li>インデックス爆発=サービス停止
  • 21. 検索条件が複雑なため検索用 Entity 設計の見極めが必要だった。 [図解インデックス爆発] </li><ul><li>都道府県 List
  • 22. 距離範囲検索
  • 23. ランキング表示(ソート)
  • 24. -> Slim3 の filterInMemory 、 sortInMemory で解決 </li></ul></ul>
  • 25. <ul>Datastore の分間制限 </ul><ul><li>原則「 SELECT は頑張らない。 INSERT 超頑張る!」 ->頑張るにも限度がある!! </li><ul><li>Datastore の制限は課金設定時も最大約 2,500 件 / 分間。課金上げても上限は増やせない。
  • 26. 検索用 Entity 数十万件の場合 TQ で PUT すると、分間の OverQuota 発生(=サービス停止)
  • 27. QverQuota 時の TQ リトライで CPU バカ喰い
  • 28. TQ を 1 分置きにすると消化まで数時間!
  • 29. 差分更新はできない。
  • 30. -> Entity 減らして SELECT 時も頑張る! </li></ul></ul>
  • 31. <ul>Slim3 すごい </ul><ul><li>xxxInMemory でインデックス爆発回避
  • 32. 更に filter,sort と xxxInMemory は分離できる! </li></ul>ModelMeta m = new ModelMeta(); List<Model> result = Datastore.query(Model.class) .filter(m.aaa.equal(param1)) .filterInMemory(m.bbb.equal(param2)) .asList(); if (result != null) { // 処理を中断してゴニョゴニョできる! for(;;) { } // “クエリ”を再開 result = Datastore.filterInMemory(result, m.ccc.equal(param3)); result = Datastore.sortInMemory(result, m.ddd.asc) .subList(0, 10); }
  • 33. <ul>GAE の課題 </ul><ul><li>Spin-up 問題 </li><ul><li>Iframe だと特に気になる
  • 34. -> 「アクセスが多ければ遅くならない」と </li></ul></ul> 暗に責任転嫁するライフハック <ul><li>Quota の警告メール欲しい
  • 35. SDK のバージョンアップ怖い
  • 36. <Slim3 の課題 > </li><ul><ul><li>マスコットキャラが必要!? </li></ul></ul></ul>
  • 37. <ul>GAE の良かった点 </ul><ul><li>コスト </li><ul><li>課金設定するだけで Quota 上がる
  • 38. 実際はゼロ円 </li></ul><li>うっかりヒット上等
  • 39. 一度経験すれば、そんなに難しくない?! </li></ul>
  • 40. ご清聴ありがとうございました おわり

×