Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
iPhoneアプリ用のAPI
サーバを少し早くした話
表参道.rb #8
@yoneapp
Tsuyoshi Yonemoto
自己紹介
• @yoneapp
• 2010年:学生iOS個人開発者
• 2012年:スタートアップの共同創業者
• 2015年:iOS & Railsフリーランス
やってること
• 企業さんとニュースアプリ
• Startup向けプロトタイプ作成
• などなど
アプリをリリースしました!
構成
WebServer
API Server
API仕様
• GET /feed.json
• GET /articles.json
• ids=1234
• ids=1234,5678
一覧 記事
目標:500∼1000ms
改善前:3000msぐらい
※ 通信除く
N+1:include
記事 画像
関連記事 画像
記事
関連記事 画像
関連記事 画像
jbuilder
↓
active_model_serializers
効果:1500msぐらい
※ 通信除く
Rails.cache(Redis)
includeもキャッシュ可
キャッシュの更新は
Heroku Schedulerで!
効果:800msぐらい
※ 通信除く
Heroku + Logentries
Heroku + Logentries
Heroku Log
7626ms?? 516ms??
• heroku router - - at=info method=GET
path="XXX" host=XXX request_id=XXX
fwd="XXX" dyno=web.1 connect=0m...
stackprof?
おまけにpuma
CloudFlare
• PageRuleの設定
• expires_in(1.minute, public: true)
ネクストステップ
• 次のボトルネックの解消
• 国内へサーバ移動
• HTTP2?
テックインサイト 検索
iPhoneアプリ用のAPI サーバを少し早くした話
iPhoneアプリ用のAPI サーバを少し早くした話
Upcoming SlideShare
Loading in …5
×

iPhoneアプリ用のAPI サーバを少し早くした話

867 views

Published on

テックインサイトさんのiPhoneアプリ https://itunes.apple.com/jp/app/id1057977123 を作成した際に用意したAPIサーバのレスポンスに手を入れた際の内容を表参道.rb #8で発表しました。

http://omotesandorb.connpass.com/event/26096/

Published in: Technology
  • Be the first to comment

iPhoneアプリ用のAPI サーバを少し早くした話

  1. 1. iPhoneアプリ用のAPI サーバを少し早くした話 表参道.rb #8 @yoneapp Tsuyoshi Yonemoto
  2. 2. 自己紹介 • @yoneapp • 2010年:学生iOS個人開発者 • 2012年:スタートアップの共同創業者 • 2015年:iOS & Railsフリーランス
  3. 3. やってること • 企業さんとニュースアプリ • Startup向けプロトタイプ作成 • などなど
  4. 4. アプリをリリースしました!
  5. 5. 構成 WebServer API Server
  6. 6. API仕様 • GET /feed.json • GET /articles.json • ids=1234 • ids=1234,5678 一覧 記事
  7. 7. 目標:500∼1000ms
  8. 8. 改善前:3000msぐらい ※ 通信除く
  9. 9. N+1:include 記事 画像 関連記事 画像 記事 関連記事 画像 関連記事 画像
  10. 10. jbuilder ↓ active_model_serializers
  11. 11. 効果:1500msぐらい ※ 通信除く
  12. 12. Rails.cache(Redis) includeもキャッシュ可
  13. 13. キャッシュの更新は Heroku Schedulerで!
  14. 14. 効果:800msぐらい ※ 通信除く
  15. 15. Heroku + Logentries
  16. 16. Heroku + Logentries
  17. 17. Heroku Log
  18. 18. 7626ms?? 516ms?? • heroku router - - at=info method=GET path="XXX" host=XXX request_id=XXX fwd="XXX" dyno=web.1 connect=0ms service=7626ms status=304 bytes=377 High Response Time • app web.1 - - Completed 200 OK in 516ms (Views: 1.3ms | ActiveRecord: 0.0ms) ログの見方分かる人いたら教えて下さい
  19. 19. stackprof?
  20. 20. おまけにpuma
  21. 21. CloudFlare • PageRuleの設定 • expires_in(1.minute, public: true)
  22. 22. ネクストステップ • 次のボトルネックの解消 • 国内へサーバ移動 • HTTP2?
  23. 23. テックインサイト 検索

×