Web アプリケーションの遅い処理を特定する話
こんにちは、開発本部で「ジョブメドレー」の開発を担当している稲本です。
先日、社内で行っている TechLunch という勉強会で「Web アプリケーションの遅い処理を特定する話」という話をしました。
タイトルの意味する範囲が広めなので概要を記載すると以下の通りです。
- NewRelic から処理速度を見ていく
- ChromeDeveloperTools 処理速度を見ていく
- RoR関連のプロファイラから処理速度を見ていく
上記の様に Client から Server, Application までプロファイリングを行い遅い処理を特定していく流れの話をしました。
なぜこの話をしようと思ったのか
弊社ではフロントエンドエンジニア、サーバサイドエンジニアなどのポジションが明確には分かれておらず、どのバックグラウンドを持った人間も両方開発に携わる方針のため、エンジニア同士が、お互いの得意分野を補い合いながら、各々業務や学習を通して理解を深めるようにしています。
ただ「ジョブメドレー」チームでは、現状パフォーマンス対策に関しては得意な人が対応する傾向にあります。
そのため得意では無い人へも、どのように調べていけば良いかを共有し、少しでもエンジニア間の知識のギャップを小さくできればと思いフロントエンド〜サーバサイドまでのプロファイリングというテーマで発表しました。
話した内容
先述の取り話した内容は以下の通りです
- NewRelic から処理速度を見ていく
- ChromeDeveloperTools 処理速度を見ていく
- RoR関連のプロファイラから処理速度を見ていく
NewRelic の項、ChromeDeveloperTools の項では、ユーザーが Browser を介してサービスを表示するまでの間に、どのような処理にどれぐらいの時間がかかっているか、それを見る方法について説明しました。
RoR関連のプロファイラの項では、サーバーアプリケーションで実行する処理の速度の調査方法について説明しました。
※発表資料はこちら
speakerdeck.comまとめ
今回、TechLunch で各種プロファイリング方法について紹介しました。
- ブラウザを経由したパフォーマンスは NewRelic, ChromeDeveloperTools などで見ることが出来る
- アプリケーションのパフォーマンスは rack-mini-profiler, peek/rblineprof, stackprof
- 正しく問題を把握することで誤った解決方法を選択してしまうリスクを回避できる
ということについて話をしていきました。 個々のツールの使い方については、調べれば良質な文書が沢山ある中で、実運用上どのように調べれば良いのかにフォーカスし、その一例を紹介出来たのではないかと思います。
今回は触れていませんが、これに限らずサーバーリソースから見るボトルネックの調査方法や、負荷試験方法などについてもどこかで触れて行ければ良いなと考えています。
最後に
メドレーでは医療業界に存在する課題に IT を駆使して取り組んでいきたいデザイナー・エンジニアを募集中です。
皆さまからのご応募お待ちしております。
www.medley.jpwww.medley.jp