New RelicとScout APMを比較してみた
APM(アプリケーションパフォーマンス監視)ほど、アプリケーションレイヤーのパフォーマンス改善に役立つツールは他にありません。しかし、APMツールを選定する際、最大手の New Relicを導入すべきか、それとも、コスト面から見てその他のAPMを選ぶべきかにお悩みの方々は多くいらっしゃるのではないかと思います。この記事では、皆様が自分に合った APM を正しく選定できるよう New Relic と Scout APM の機能・コストを徹底的に比較してみたいと思います。
コスト
まず、Scout APMの月額料金は、New Relicの年間契約での月額料金より約30%ほどやすくなります。もし、今まさに New Relicを年間契約をしていて、その利用料が高いと感じている場合、ScoutAPM は、乗り換えサポートとして、その解約違約金を負担するキャンペーンを実施しています。(ただし、乗り換えサポートは、Scout APM を長く利用するとお約束いただけるユーザーの方に限られます🐶 )
言語サポート
Scout APMはRuby、Elixir、Pythonを、どの言語でも使用できるコア・エージェントAPIでサポートします。New RelicはRuby、Java、Node.js、PHP、.NET、Python、Goをサポートしています。 もし、プロダクト開発言語がフィットすれば、Scout APMはコスト面でも、機能面でも、APMのベストソリューションになり得ます。
アプリケーション・オーバービュー
下図はログイン後表示されるフロントページです。 (New Relic:左側、Scout APM:右側)
New RelicとScout APMのダッシュボード上部の基本的な考え方は同じです。タイムライン上に、アプリケーション内のそれぞれのセクションで処理に要した時間の内訳が表示されています。(例:Ruby、データベース、外部HTTPサービスなど)。Scout APM、New Relic共に、同じ期間のデータを閲覧できます(New RelicのProパッケージは3か月分のデータを提供し、Scout APMでもカスタム・プランで同等の機能を提供しています)。特に、現在と過去のパフォーマンスを比較しようと思った場合には、 Scout APMでは、ダッシュボードからページ遷移する事なく、時間をかけずに状況を把握をすることができます。
Scout APMとその他のAPMのアプローチの最も大きな違いは、複数のアルゴリズムがデータを掘り下げて、ダッシュボードに直接パフォーマンスに関する分析を表示する点です。例えばScout APMは、遅いデータベース・クエリ、N+1のデータベース・クエリ、メモリの肥大化を識別します。 これらは影響の高い順に並べられるため、どこから手を打てば、最小の時間で最大の改善を得られるかを即座に判断できます。
アプリケーションの健全性を調査する時に、サイト・リライアビリティ・エンジニア(Site Reliability Engineer-SRE)がよく行う作業を、Scoutは圧倒的に短縮することができます。ハイレベルなインサイトから 、アプリケーション監視の詳細部分を見ていきます。
トランザクション・トレース
APM の肝はトランザクション・トレースです。トランザクション・トレースは、単一のWebリクエスト、もしくはバックグラウンド・ジョブの実行に費やされた時間の内訳を示します。APMプラットフォームが提供するすべての計測値と分析結果は、トレースで収集されたデータを元に生成されています。
New Relic と Scout APM では、ここにもいくつかの違いがあります。
- Scout APMは、タイミングの計測だけでなく、メモリ割り当ての内訳を提供しますが、 New Relicはそうではありません。
- あるアプリケーションが、New Relicで監視された別のアプリケーションに接続する場合、New Relicはクロス・アプリケーション・トレースを提供しますが、Scout APM にその機能はありません。
- Scout APMは、呼び出しに時間がかかっているメソッドのバックトレースを提供し、ブラウザにコードを直接表示することができます。
- Scout APMはSQLクエリによって返された行数を示します。
- New Relic では、処理に費やされた負荷を知るために、プロファイルの正確なカスタマイズが必要です。Scout APMには、予め ScoutProf が準備されているため、カスタムコードに費やす時間を大きく短縮できます。
Scout APMは通常New Relicより、多くのトレースを収集します。 New Relic、Scout APM共に、トレース保持期間は同じ1週間です。
Scout APM設立者の一言:トレースでは、アクションに焦点を当てています。どのコード・パスが重大なボトルネックなのか? ボトルネックのコードは? 遅いSQLクエリに関する詳細は(つまり返されるレコード数は)?ScoutAPM は、これらの疑問に即答します。
Webエンドポイント
New Relic、Scout APM共に、Webエンドポイントの要約データをリスト形式で表示できます。 New Relic:左側、Scout APM:右側
New Relicでは、このページでビジュアライゼーションの方法をいくつか選択できます。 Scout APM は、フィルタやソート可能なビューを提供します。どちらもデフォルトでは、消費時間のパーセントで Web エンドポイントをソートしているので、最も時間を消費しているコントローラ・アクションを容易に探し出すことができます。
Scout設立者の一言:エンドポイントのリスト上でのフィルタリングは、私のお気に入りの機能です。 エンドポイントまたはエンドポイントのグループを調査するために必要な時間を劇的に短縮します。 この調査は、高い頻度で行われるため、節約した時間の積み重ねは大きな差となって現れます。
Webエンドポイント詳細
アプリケーション・オーバービューで消費時間の内訳が表示されるのと同じように、New RelicとScout APMはどちらもエンドポイント専用のビューを提供します。
このページにもいくつかの違いがあります:
- New Relicは応答時間の履歴表示オプションを提供しますが、Scout APMは提供しません。
- Scout APMはメモリ割り当ての計測を提供しますが(より多くの割り当てはメモリ使用量の増加につながります)、New Relicにはありません。
- New Relicの内訳はより多くのカテゴリを提供しますが、 データベースクエリに焦点を当てています。
- Scout APMは、通常より多くのトランザクション・トレース(1分あたり10まで)を提供し、トレース結果のソートと選択のために、多くのオプションを提供します。
バックグラウンド・ジョブ
New Relic、Scout APM共に、Rubyバックグラウンド・ジョブ・フレームワークのコアを監視します。それは具体的にSidekiq、Delayed Job、Resqueなどです。
データベース・モニタリング
データベースは、Webアプリケーションの最も一般的なボトルネックです。データベースは共有リソースなので、1つのリッチなクエリが、他の様々なタイプのクエリの実行を遅くさせることがあります。 New RelicとScout APMは、データベース・クエリのパフォーマンスに関する分析が可能です。
どちらのUIも、それぞれのツールのWebエンドポイントの表示に似ていますが、データベース・クエリ専用に作られています。 2つのツールの間には、微妙ですが重要ないくつかの違いがあります。
- New RelicはActiveRecord以外の監視も提供しますが、Scout APMはActiveRecordに焦点を当てています。
- Scout APMのクエリ・リストには、呼び出し元のコントローラ・アクションまたはバックグラウンド・ジョブが含まれています。 高負荷なクエリは、コード内の限られたホット・スポットによって頻繁に引き起こされます。この機能により、これらのホット・スポットを一目で識別することが容易になります。
最後に、Scout APMでは、その期間をドラッグするだけで、スパイクが起こっている時間のパフォーマンスと、通常のパフォーマンスとを簡単に比較できます。New Relicで同じことをしようとすると、ドリルダウンでページを遷移し、深く潜り込んで探索する必要があります。
開発プロファイラ
パフォーマンスの問題を積極的に解決しようとしている時、コーディングした結果に対して即時のフィードバックは有益なものです。通常であれば、意図した通りの修正ができたかどうかを確認するために、デプロイして、新しいデータを待つ必要があります。
New Relicは開発者モードを持っていましたが、その後エージェントからは削除されたままです。
ScoutAPM では、ブラウザの左下にあるスピード・バッジをクリックすれば、ローカル開発環境のトレースへのアクセスをScout DevTraceが提供、デプロイすることなく修正結果のパフォーマンスについて知ることができます。
Scout APM設立者の一言:長時間実行するテスト・スイートのような、遅いフィードバック・サイクルは苦痛です。最適化...例えばN+1クエリを'includes'で修正することが...デプロイの前に期待した通り動作しているか、Devtraceは ではすぐに確認する事ができます。
週次トレンドメール
マネージャー自身が、ビジネスの成長とともに徐々にその影響を大きくしていくパフォーマンスの問題をしっかりと把握するために、アプリケーションパフォーマンスの定期レポートは、その健全性の確認に非常に役立ちます。
Scout APM設立者の一言:多くの計測結果を含むEメールが毎週繰り返されるようになります。解決をどんどん進めるためには、データを掘り下げ、特に遅いクエリ等の根本的な原因を特定しようとします。
アラート
Scout APMとNew Relicには同等のアラート機能があります。
エージェント
以下に、New Relic と Scout APM の双方のエージェントの比較テスト結果を示します。Scout APMのオープン・ソース・ベンチマークでは、Scout APMのエージェントはよりオーバーヘッドが少ないことがが示されました。
APMエージェント |
応答時間 (平均) |
応答時間 |
応答時間 (最大) |
オーバーヘッド |
なし |
55.6 ms |
106.4 ms |
2,174.1 ms |
|
New Relic |
80.4 ms |
149.5 ms |
2,263.5 ms |
44.50% |
Scout APM |
56.8 ms |
102.7 ms |
2,168.7 ms |
2.20% |
エラー解析
Scout APMはエラー率を追跡し、Rollbarのようなサードパーティのサービスと統合して エラーの詳細を提供します。 New Relicでもエラーへのバックトレースを含む同様のデータを提供することができます。
どちらを使用すればよいか気軽にご相談ください
エージェントをインストールすることを除いて、New RelicとScout APMを試すのに設定はほとんど必要ありません。また、コンフリクトを引き起こすことなく、Scout APMとNew Relicを同時に実行できます。
私のおすすめは、 New Relicと一緒にScout APMを試すことです(2週間無料で試せます)。そして、その試用期間の後、開発チームのみんなに「アプリのパフォーマンスをより早く改善するには、どちらのツールが役に立つと思う?」と聞いてみてください。