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 APMRubyElixirPythonを、どの言語でも使用できるコア・エージェントAPIでサポートします。New RelicRubyJavaNode.jsPHP.NETPythonGoをサポートしています。 もし、プロダクト開発言語がフィットすれば、Scout APMはコスト面でも、機能面でも、APMのベストソリューションになり得ます。

アプリケーション・オーバービュー

下図はログイン後表示されるフロントページです。 (New Relic:左側、Scout APM:右側)

01.png

New RelicScout APMのダッシュボード上部の基本的な考え方は同じです。タイムライン上に、アプリケーション内のそれぞれのセクションで処理に要した時間の内訳が表示されています。(例:Ruby、データベース、外部HTTPサービスなど)Scout APMNew Relic共に、同じ期間のデータを閲覧できます(New RelicProパッケージは3か月分のデータを提供し、Scout APMでもカスタム・プランで同等の機能を提供しています)。特に、現在と過去のパフォーマンスを比較しようと思った場合には、 Scout APMでは、ダッシュボードからページ遷移する事なく、時間をかけずに状況を把握をすることができます。

Scout APMとその他のAPMのアプローチの最も大きな違いは、複数のアルゴリズムがデータを掘り下げて、ダッシュボードに直接パフォーマンスに関する分析を表示する点です。例えばScout APMは、遅いデータベース・クエリ、N+1のデータベース・クエリ、メモリの肥大化を識別します。 これらは影響の高い順に並べられるため、どこから手を打てば、最小の時間で最大の改善を得られるかを即座に判断できます。

アプリケーションの健全性を調査する時に、サイト・リライアビリティ・エンジニア(Site Reliability Engineer-SRE)がよく行う作業を、Scoutは圧倒的に短縮することができます。ハイレベルなインサイトから 、アプリケーション監視の詳細部分を見ていきます。 

トランザクション・トレース

APM の肝はトランザクション・トレースです。トランザクション・トレースは、単一のWebリクエスト、もしくはバックグラウンド・ジョブの実行に費やされた時間の内訳を示します。APMプラットフォームが提供するすべての計測値と分析結果は、トレースで収集されたデータを元に生成されています。

 New Relic:左側、Scout APM:右側 02.png

New Relic と Scout APM では、ここにもいくつかの違いがあります。

Scout APMは通常New Relicより、多くのトレースを収集します。 New Relic、Scout APM共に、トレース保持期間は同じ1週間です。

03.ounder.PNGScout APM設立者の一言:トレースでは、アクションに焦点を当てています。どのコード・パスが重大なボトルネックなのか? ボトルネックのコードは? 遅いSQLクエリに関する詳細は(つまり返されるレコード数は)?ScoutAPM は、これらの疑問に即答します。

Webエンドポイント

New Relic、Scout APM共に、Webエンドポイントの要約データをリスト形式で表示できます。 New Relic:左側、Scout APM:右側 

04.png

New Relicでは、このページでビジュアライゼーションの方法をいくつか選択できます。 Scout APM は、フィルタやソート可能なビューを提供します。どちらもデフォルトでは、消費時間のパーセントで Web エンドポイントをソートしているので、最も時間を消費しているコントローラ・アクションを容易に探し出すことができます。

03.ounder.PNGScout設立者の一言:エンドポイントのリスト上でのフィルタリングは、私のお気に入りの機能です。 エンドポイントまたはエンドポイントのグループを調査するために必要な時間を劇的に短縮します。 この調査は、高い頻度で行われるため、節約した時間の積み重ねは大きな差となって現れます。 

Webエンドポイント詳細

アプリケーション・オーバービューで消費時間の内訳が表示されるのと同じように、New RelicとScout APMはどちらもエンドポイント専用のビューを提供します。

 05.png

 

このページにもいくつかの違いがあります: 

バックグラウンド・ジョブ

New Relic、Scout APM共に、Rubyバックグラウンド・ジョブ・フレームワークのコアを監視します。それは具体的にSidekiqDelayed JobResqueなどです。

データベース・モニタリング

データベースは、Webアプリケーションの最も一般的なボトルネックです。データベースは共有リソースなので、1つのリッチなクエリが、他の様々なタイプのクエリの実行を遅くさせることがあります。 New RelicとScout APMは、データベース・クエリのパフォーマンスに関する分析が可能です。

07.png

どちらのUIも、それぞれのツールのWebエンドポイントの表示に似ていますが、データベース・クエリ専用に作られています。 2つのツールの間には、微妙ですが重要ないくつかの違いがあります。

最後に、Scout APMでは、その期間をドラッグするだけで、スパイクが起こっている時間のパフォーマンスと、通常のパフォーマンスとを簡単に比較できます。New Relicで同じことをしようとすると、ドリルダウンでページを遷移し、深く潜り込んで探索する必要があります。

08.png

開発プロファイラ

パフォーマンスの問題を積極的に解決しようとしている時、コーディングした結果に対して即時のフィードバックは有益なものです。通常であれば、意図した通りの修正ができたかどうかを確認するために、デプロイして、新しいデータを待つ必要があります。 

New Relicは開発者モードを持っていましたが、その後エージェントからは削除されたままです。 

ScoutAPM では、ブラウザの左下にあるスピード・バッジをクリックすれば、ローカル開発環境のトレースへのアクセスをScout DevTraceが提供、デプロイすることなく修正結果のパフォーマンスについて知ることができます。

 09.png

 

03.ounder.PNGScout APM設立者の一言:長時間実行するテスト・スイートのような、遅いフィードバック・サイクルは苦痛です。最適化...例えばN+1クエリを'includes'で修正することが...デプロイの前に期待した通り動作しているか、Devtrace ではすぐに確認する事ができます。

週次トレンドメール

マネージャー自身が、ビジネスの成長とともに徐々にその影響を大きくしていくパフォーマンスの問題をしっかりと把握するために、アプリケーションパフォーマンスの定期レポートは、その健全性の確認に非常に役立ちます。

10.png

03.ounder.PNGScout APM設立者の一言:多くの計測結果を含むEメールが毎週繰り返されるようになります。解決をどんどん進めるためには、データを掘り下げ、特に遅いクエリ等の根本的な原因を特定しようとします。

アラート

Scout APMとNew Relicには同等のアラート機能があります。

エージェント

以下に、New Relic と Scout APM の双方のエージェントの比較テスト結果を示します。Scout APMのオープン・ソース・ベンチマークでは、Scout APMのエージェントはよりオーバーヘッドが少ないことがが示されました。

APMエージェント

応答時間

(平均)

応答時間
(95パーセンタイル)

応答時間

(最大)

オーバーヘッド

なし

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 RelicScout APMを試すのに設定はほとんど必要ありません。また、コンフリクトを引き起こすことなく、Scout APMNew Relicを同時に実行できます。

 私のおすすめは、 New Relicと一緒にScout APMを試すことです(2週間無料で試せます)。そして、その試用期間の後、開発チームのみんなに「アプリのパフォーマンスをより早く改善するには、どちらのツールが役に立つと思う?」と聞いてみてください。