モダンなアプリケーションチームは、新たなソフトウェア開発のトレンドや課題に対応するのに苦労しています。モノリシックなアプリケーションは、相互にサービスが接続された複雑なネットワークに分割されています。これらのサービスは、パブリッククラウドやプライベートデータセンター内で、動的かつ一過性のインフラ上で稼働しています。また、サーバーのキャパシティを追加することなく容易にスケールできるため、クラウドサービスを利用するアプリケーションは増加しています。
New Relic APM はモダンなアプリケーションチームが最新の技術トレンドを利用し、自信を持って迅速に対応できるようにします。すなわち、コストのかかるダウンタイムの削減、エンジニアの生産性の向上、差別化したカスタマーエクスペリエンスを提供する高性能アプリケーションを実現します。
今日、アプリケーションチームに対して、多くのベンダーがAPM ソリューションを提供すると訴えている状況において、New Relic APM をツールの選択肢として正確に説明し、アプリケーションチームがより優れたソフトウェアを構築できるよう支援することは理にかなっていると言えます。
1. リアルタイムなインストゥルメンテーション*・アナリティクスを容易に セットアップ
(*対象内部の状態を数値情報などで可視化すること)
APM ソリューションは単なるデータ収集用のリポジトリではありません。モダンなアプリケーションチームは、容易にセットアップ可能で、アプリケーションのパフォーマンス問題の発生個所を直ちに特定できるソリューションを必要としています。New Relic の簡単にセットアップできる SaaS モデルを使用することで、エンジニアは高価なハードウェアや複雑なカスタムダッシュボードをセットアップすることなく、迅速に可視化を行い、アプリケーションに対する理解をしっかりと深めることができます。New Relic APM の革新的な概要画面には、レスポンスタイム、スループット、エラー率、トランザクションのような基本データを表示するほか、レスポンスタイムに最も関係の深いコードを強調表示する機能もあります。これによって、問題のあるコードや依存関係をリアルタイムに特定することができます。
インストゥルメンテーションによって、アプリケーションのパフォーマンスを明確に理解できるようになります。モダンなアプリケーションチームは、多様な言語やフレームワークに対する幅広く深いインストゥルメンテーションを必要としています。New Relic では、7 種類の言語を包括的にモニターできます・Java, Node.js, Python, Go, .NET, PHP, Ruby。
また、C/C++ やそのままではサポートされないその他の言語で書かれたアプリケーションのインストゥルメンテーションやモニターを行うためにネイティブな C/C++ エージェントも用意されています。
また、組織はモノリシックなアプリケーションを場合によっては数百もの要素に分解することもあるため、New Relic のサービスマップ機能では、すぐに使えてカスタマイズも可能なアプリケーションコンポーネントやサービスの依存関係マップを表示できるようにしています。
2. 柔軟性の高いインストゥルメンテーションとダッシュボードの作成
デフォルト設定のままのインストゥルメンテーションとダッシュボードを使用して素早く数値を確認することも重要ですが、モダンなアプリケーションチームは特定のアプリケーションや業界に固有のニーズを満たせるよう、補足的なデータを収集できる柔軟性も必要としています。
デフォルト設定のままでNew Relic が収集するデータを、カスタムインストゥルメンテーションによって補完することで詳細度を深めることができます。カスタムインストルメンテーションには、ソースコード内でのエージェント経由のAPI コールや、 デプロイ済みのアプリケーションと共にパッケージ化可能なXML ベースのカスタムインストゥルメンテーションモジュールや、コードのディプロイが不要なUI ベースのインストゥルメンテーション追加などが含まれます。カスタム属性はトランザクションイベントごとに追加できますので、アプリケーションのパフォーマンス諸要素を重要なビジネス情報と突き合わせることができます。これによって、きめ細やかな問題分析を行い、情報が充実したダッシュボードを作成できます。
効果的なソフトウェア開発を行うには、アプリケーションに問題が発生した際、エンジニアリングチームに明確かつ適切な通知を行えることが重要な要件となります。できれば、問題が顧客に影響する前に通知できるのが望ましいでしょう。APM ソリューションは、アプリケーションチームが目の前の問題解決に向けて適切に対応できるような情報を提供しなければなりません。
New Relic はレスポンスタイムのような標準的なメトリックからカスタムイベントまで、エージェントから遠隔収集したデータに対してアラートを設定できます。また、New Relic のアラートは PagerDuty、VictorOps、Slack のような一般的なインシデント対応ツールとシームレスに統合できます。
しかしながら、最終的な目標は顧客に影響を及ぼす前に問題を発見し、解決することです。New Relic Applied Intelligence (NRAI) は、人工知能や機械学習アルゴリズムなどの複数の技術を活用し、エンジニアを最も重要なパフォーマンス異常に対応させるのに役立ちます。たとえば、New Relic レーダーでは、詳細に調査する価値がありそうなアプリケーションの異常動作を強調表示することを目的としたカードの個人用フィードを提供しています。このような異常動作には、前週比でのレスポンスタイムの微妙な推移や検出された N+1 クエリ問題などがあります。いっぽう、ダイナミックベースラインは履歴データを使用し、異常要素に対する論理的な閾値を予測します。この機能を任意のメトリックに適用することで、インシデントが制御不可能になる前に早期にチームにアラートを送信できるようになります。
4. アプリケーションのパフォーマンスとエンドユーザーエクスペリエンスの関連付け
アプリケーションはビジネス上の目的や顧客に役立つものです。顧客が満足していないのであれば、そのアプリケーションには問題があります。モダンなアプリケーションチームは、フロントエンドからサーバーサイドまであらゆるレベルでパフォーマンスによる顧客への影響を評価する必要があります。
エンドユーザーエクスペリエンスを深く把握するには、モバイルアプリやブラウザがもたらすエクスペリエンスを明確に評価することから始めなければなりません。ユーザーエクスペリエンスに関わるロジックがよりクライアントサイドに移行するにつれて、推定でユーザーの待ち時間の 80% がフロントエンド側で発生することになります。New Relic プラットフォームは 実ユーザーのモニタリング、総合的なモニタリング、モバイルアプリのパフォーマンス分析を通してエンドユーザーのエクスペリエンスを明確に可視化します。
しかしながら、エンジニアはフロントエンドをより深く理解するほか、フロントエンドのパフォーマンスをサーバーサイドのパフォーマンスに結びつける方法が必要になります。これは特に、組織がスタック全体にわたってより頻繁にコードをデプロイする場合には重要です。New Relic はモニター対象のすべてのアプリケーションで Apdex を測定します。これによって、レスポンスタイムやエラー率に基づいてアプリの稼働状態を把握できる、単一のわかりやすいメトリックを定義することができます。
また、コードをデプロイするたびにこのようなメトリックの変動を追跡することも重要です。New Relic のデプロイマーカーは、各デプロイやコード変更によるアプリケーションやエンドユーザーエクスペリエンスへの影響を単一のビューにまとめて明確かつ視覚的に表示します。
5. アプリケーションとインフラのパフォーマンスの関連付け
組織が動的なインフラ上で稼働するマイクロサービスへの移行を進めるにつれて、アプリケーションの稼働状態と基盤となるインフラの稼働状態がますます密接になってきています。エンジニアはアプリケーションのパフォーマンスをそれが稼働する動的インフラの枠内で把握する必要があります。このようなインフラは、コンテナ、自社のデータセンター、Amazon Web Services、Microsoft Azure、Google Cloud Platform、OpenStack、あるいはアプリケーションのデプロイ先を問わず当てはまります。
New Relic ヘルスマップ は、アプリケーションとその依存先のインフラホストとのリンクを明確に示した上で、アプリケーションが集積され優先順位づけされたビューを提供します。
このため、アプリケーションスタックのどの部分で問題が発生しているのかを簡単に特定できます。問題がホスト側にあることが判明した場合、エンジニアはNew Relic インフラストラクチャを使用して簡単に問題の調査を続行できます。
6. 豊富かつ詳細なトランザクション データ
アプリケーションの稼働状態を完全に把握するには、さまざまなタイプのデータが必要になります。メソッドレベルでのパフォーマンスを可視化するために、New Relic エージェントは全てのリクエストに対して、複数のデータタイプでのカウントや測定を行なっています。New Relic のイベントデータには、特定の瞬間にアプリケーションに発生しているイベント(トランザクションやトランザクションエラーなど)が記録されていますので、アプリケーションに対するすべてのリクエストをより詳細に把握するのに役立ちます。New Relic のメトリック時系列データは、特定の期間にわたるアプリケーションのパフォーマンス(平均レスポンスタイムやスループットなど)を表現することでイベントデータを補完しますので、アプリケーションとそのコンポーネントの全体的なパフォーマンスを把握するのに役立ちます。
また、New Relic エージェントはサンプルトランザクショントレース、SQL クエリ、スタックトレースの詳細データを、データベースコールが行われた個々の行番号まで収集します。この詳細データは1 分毎に、最も遅かったトランザクションについて収集されます。
New Relic の様々なデータタイプを組み合わせることによって、補完的なメリットを享受できます。メトリックは優れたエクスペリエンスの概要を知るのにとても使えますし、どこに注力すべきか判断するのにも役立ちます。イベントからはより詳細な診断情報と高次元のデータを得ることができます(特定のユーザーや顧客のクラスなどに関するイベントを絞り込むことができます)。また、トレースを使用すれば特定のトランザクションや SQL クエリの詳細を把握できます。重要なことですが、このデータはすべてオンデマンドで取得でき、New Relic インサイト独自のクエリ言語である NRQL を介して何度も照会でき、リアルタイムに調査できます。
7. オンデマンド型の診断ツールによる リアルタイムエラー解析
New Relic APM は、お客様のアプリケーションに発生する問題のトラブルシューティングを支援することを最も重要な約束に掲げています。問題が見つかり、そしてその対応時間が重要である様な場合、エンジニアは潜在的な問題の原因を素早く把握し、それをさらに掘り下げて解決策を見つける必要があります。また、時間が経過しアプリケーションの安定性とパフォーマンスが改善していく中で、組織全体がその信頼性を確認するための測定可能なメトリックを、APM ソリューションは提供しなければなりません。
New Relic は強力なエラー解析機能を提供します。New Relic エージェントを使用すれば、エラーのスタックトレース、メッセージ、およびコード内のエラーが発生行を確認できます。また、エンジニアはアプリケーションで検出されたエラーを、時間をかけて細かく分析し、NRAI を使用してエラートランザクションの違いを特定し、手作業での分析にかかる時間を節約できます。
New Relic APM エージェントはアプリケーション内部で動作するため、詳細な診断とプロファイリングを実施できます。たとえば、New Relic の診断ツールには本番環境で動作中の全スレッドのフルスタックトレースを定期的にサンプリングできるスレッドプロファイラスレッドプロファイラが含まれています。
8. DevOps ツールとの統合
DevOps の成功には、効果的なモニタリングと計測だけではなく、複数のツールが提供する多様な機能が必要です。DevOps チームには、共通ロギング、構成管理、インシデント対応ツールなどのソフトウェアの構築、デプロイ、サポートに使用されるツールをシームレスに統合する APM ソリューションのほか、プラットフォームの柔軟性を高める堅牢な API が必要です。
Slack、Jira、PagerDuty のようなインシデント対応ツールの統合に加え(3 番目の機能で取り上げています)、New Relic APM は Chef や Puppet のような一般的な構成管理ツールはもちろんのこと、Splunk や Sumo Logic のような主要なロギングツールをシームレスに統合し、マシンの稼働状態とアプリケーションのパフォーマンスを関連付けます。たとえば、New Relic の Splunk アドオンは、New Relic と Splunk のデータを単一のビューにまとめたダッシュボードや保存済み検索式を開発者や IT 運用チームに提供します。
New Relic は多くのお客様にとって重要な REST API を提供しているため、New Relic の柔軟なプラットフォームはプログラムを通じて連動し、拡張することができます。たとえば、Jenkins を使用してコードの変更をプログラム的に開発環境にデプロイし、負荷テストを開始し、API を使用して New Relic 内でデプロイを記録し、その後New Relic デプロイマーカー開き、変更によるアプリケーションのパフォーマンスへの影響を確認できます。
9. クラウドサービスのインストゥルメンテーション
クラウドで成功を収めるには、移行作業のあらゆる段階において、その結果を測定可能な数値で明確にする様な、インストゥルメンテーションが必要となります。そして、移行前、移行中、移行後で確立されたベンチマークが必要です。また、クラウドの価値を最大限に引き出す動的クラウドサービスを具体的に可視化することも当然ながら必要です。
New Relic のクラウドベースのプラットフォームでは、あらゆる段階でアプリケーションを簡単にインストゥルメンテーションできます。追加の設定を行わなくても、アプリケーションをオンプレミスからクラウドに移行する際に、詳細なアプリケーションのパフォーマンスを収集します。また、50を超えるクラウド連携を使えば、AWS、Azure、GCP上で稼働するサービスの稼働状態を理解することができます。
10. スケーリングを考慮した設計
New Relic APM を使えば、いつでも有益な洞察を得ることができます。組織にとって最も重要な日でも、問題なく利用できます。
それがブラックフライデー、サイバーマンデー、スーパーボウル、選挙日のいずれでもあっても、New Relic の SaaS アーキテクチャでは、トラフィックの急増に対処するために新たなモニタリング用サーバーの準備や設定に気を取られる必要はありません。このプラットフォームは、1 分あたり 15 億件以上のイベントやメトリックをシームレスに処理します。追加のセットアップを行うことなく、アプリケーションを把握するうえで不可欠なデータを必要に応じてオンデマンドで取得できます。
まとめ
アプリケーションの稼働状態はビジネスに多大な影響を与える場合があります。そのため、アプリケーションのパフォーマンスを可視化し、組織に与えうる最終的な影響を考慮することが不可欠です。
New Relic APM はアプリケーションに対する洞察をリアルタイムに提供するため、ソフトウェアを最適化してコストのかかるダウンタイムを削減するのに役立ちます。アプリケーションのパフォーマンスを詳細に把握することで、エンジニアの生産性と革新性を向上させ、ビジネスの価値を高めることができます。また、高性能アプリケーションにより、組織のデジタルカスタマーエクスペリエンスを向上させ、ロイヤルティを築きながらビジネスをより迅速に成長させることができます。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。