分散トレースとは何ですか?

分散トレースは、システムのデバッグ、開発、およびデプロイを容易にする新しいDevOpsプラクティスです。 もっと詳しく知る!

分散トレースとは何ですか?

最新のソフトウェア開発は急速に進化しており、最新のイノベーションにより企業は効率を高めて成長することができますが、コストがかかります。 最新のアーキテクチャは非常に複雑であるため、パフォーマンスの問題を診断して修正することが困難になる可能性があります。 

これらの問題が顧客体験に影響を与えると、その結果はコストがかかる可能性があります。

それで、解決策は何ですか?

可観測性—全体像の目に見える概要を提供します。 これは、分散トレースに重点を置いて、メトリック、ログ、およびトレースを通じて実現されます。 

DevOpsエンジニア、ソフトウェアリーダー、CEO、またはビジネスリーダーのいずれであっても、分散トレースが果たす役割と、それをいつ使用するかを理解することで、求めている競争力を得ることができます。

内容

分散トレースとは何ですか?

分散トレースは、システムのデバッグ、開発、およびデプロイを容易にする新しいDevOpsプラクティスです。

分散トレースには、最新のアプリケーション環境の操作と監視が含まれます。 データがXNUMXつのサービスから別のサービスに移動するとき、分散トレースはサービス要求を追跡および監視する機能です。 ここでの目標は、要求のフローを理解して、障害やパフォーマンスの問題など、システムの弱点を特定できるようにすることです。

このリクエストの流れは、マイクロサービス環境または分散アーキテクチャを介して行われます。これについては後で触れます。

説明したように、トレースは、メトリックとログという他のXNUMXつの重要なタイプのデータと密接に関連しています。 これらのXNUMX種類のテレメトリデータを組み合わせることで、ソフトウェア環境の全体像を把握でき、さらに重要なことに、そのパフォーマンスを把握できます。

推奨書籍: テレメトリとは何ですか?

分散トレースの主な使用例には、運用、DevOps、およびソフトウェアエンジニアが含まれます。 目標は、主に分散環境に焦点を当てて、迅速に回答を得ることです。 マイクロサービス またはサーバーレスアーキテクチャ。 これらのアーキテクチャには多くの利点がありますが、非常に複雑でもあります。 これにより、問題の追跡と解決が困難になります。

日常のeコマースアプリケーションについて考えてみてください。 顧客が購入すると、一連の要求が分散サービスとデータベースを通過します。 店頭からショッピングカート、認証から支払い、配送、CRMまで、うまくいかないことがたくさんあります。 これらのサービスのいずれかで問題が発生した場合、顧客体験は悪くなり、おそらく販売の損失につながるでしょう。 定期的な顧客の喪失は言うまでもありません。 この研究は、否定的な経験に続いて、 視聴者の38%が のユーザーがウェブサイトを離れます。 一度やったら、戻ってくるのは難しいです。 

分散トレースは複雑さを解消するのに役立ち、分散システムの問題とボトルネックのトラブルシューティングを可能にします 顧客が影響を受けます。 高度に分散されたコンテキストで可観測性を維持するためにオペレーターが使用するトレースは、遅延などの問題を特定し、根本原因と周囲のコンテキストを分析できます。これは非常に貴重です。 

したがって、分散トレースは、分散システム全体でバウンスするため、すべてのサービスにわたって要求を追跡および分析するプロセスです。 これにより、次のことが可能になります。

  • 各サービスのパフォーマンスをよりよく理解します。 
  • パフォーマンスの問題を視覚化して効果的に解決します。
  • システムの全体的な状態を測定します。 
  • 価値ある改善につながる領域に優先順位を付けます。

分散トレースの歴史 

モノリシックサービスアーキテクチャは、かつてはゴールデンスタンダードでしたが、現在ではますますまれになっています。

モノリシックアプリケーションが進化しました マイクロサービスに。 単一のサービスに一元化されたコードベースを含む従来のモノリシックアプリケーションの場合、障害の診断は、単一のスタックトレースをたどるのと同じくらい簡単です。 エラーのトラブルシューティングを行うには、ログメッセージを確認するか、標準のAPMツールを実装するだけです。 ただし、このタイプのアーキテクチャでは、ソフトウェア開発のスケーリングが面倒で骨の折れる作業になります。 

テクノロジーが進化するにつれて、マイクロサービスなどの分散アーキテクチャが開発され、さまざまなプラットフォームとよりユーザーフレンドリーなシステム間の通信が改善されました。 その結果、効率と生産性が向上しました。 

分散アーキテクチャまたはマイクロサービスベースのアプリケーションは、さまざまなホストで実行される数十、数百、さらには数千のサービスで構成されている可能性があるため、関係を理解するには、より深く、より複雑なレベルのテレメトリが必要です。 。 

マイクロサービスを使用してアプリを開発することのメリットは膨大です。 このアプローチには、より簡単に展開、拡張、更新できる小規模なサービスが含まれます。 これにより、各コンポーネントに使用するテクノロジーとフレームワークの点で柔軟性が高まります。 

多くの実際の環境では、マイクロサービスベースのアプリと一緒にモノリスアプリを組み合わせて使用​​していますが、劇的な変化がありました。 2018年現在、 研究ショー 従来の企業の63%がマイクロサービスアーキテクチャを使用しており、次のことを経験しています。

  • 従業員の効率の向上。
  • エンドユーザーエクスペリエンスの向上。 
  • インフラストラクチャと開発ツールの両方のコスト削減。 

この調査は、51か国とXNUMXの業界にわたるエンジニアリングマネージャー、ソフトウェアアーキテクト、およびその他のアプリケーション開発の専門家の見解に基づいています。 

別の2020年のレポート 組織の92%がマイクロサービスで成功を収めていることがわかりました。 これは、マイクロサービスのメリットを活用していない場合、取り残されるリスクがあることを意味します。 

今日、最新のソフトウェアソリューションは通常、大規模で複雑な分散システムとして実装されています。 たとえば、マイクロサービスのアーキテクチャスタイルを使用します。 これらの最新のアプリケーションは、多くの場合、さまざまなチームによって開発されており、さまざまな言語プログラムを使用することもあります。 これらのアプリケーションが進化するにつれて、企業は、個々のマイクロサービスだけでなく、リクエストフロー全体を表示する方法が必要であることに気づきました。 

上記の調査に基づくと、複数のマイクロサービスにわたるエンドツーエンドプロセスの可視性の欠如、およびチーム間のコミュニケーションは、マイクロサービスを使用する企業が直面すると予想される最大の課題の一部です。 最終的な目標は、プロセス全体でエラーを確実かつ一貫して処理することです。

ここで分散トレースが役立ち、最適な可視性と制御のためのベストプラクティスになりました。 分散トレースは、分散環境での要求の追跡と分析の難しさなど、一般的な問題に対処します。 システムが高度に分散している場合でも、トレースのおかげで、これらの問題のデバッグもかなり簡単です。 

最初、この概念は非常に時間がかかりました。 データを収集して視覚化できることは、非常に労働集約的でした。 トレースに費やされていたリソースの数は、新機能の開発と企業の全体的な成長から奪われていました。 分散アーキテクチャを適切にサポートするにはツールの開発が必要であり、分散トレースへの依存度が高まっています。 これには、データトレースツールが含まれます。 

分散トレースは、単一のモノリシックプロセスの視点を提供するために使用されたトレースの概念を採用し、単一の要求のジャーニーに含まれるすべてのプロセスの視点に拡張しました。 

幸い、LogicMonitorなどの企業は完全に自動化されたアプローチを提供し始めました。 これにより、企業は、利用可能なデータの追跡、分析、および視覚化の生産性を向上させるソリューションを実装することが可能になりました。 識別できる コラボレー アプリケーションで発生する問題は、ゲームチェンジャーです。

OpenTelemetryと分散トレースの関係

2019年、OpenTracingとOpenCensusはOpenTelemetryに統合されました。

OpenTelemetryは、インフラストラクチャとクラウドネイティブアプリケーションからログ、メトリック、およびトレースをキャプチャしてエクスポートするための単一のオープンソース標準を提供します。 OpenTelemetryは、SDKとAPIの共通セットを含む、すべての実装が従うべき仕様を提供することで、分散トレースを支援します。

分散トレースはXNUMX年以上前から存在していましたが、分散トレースシステム間の相互運用性が広く採用されるようになったのはごく最近のことです。 OpenCensusとOpenTracingの間に相互運用性を生み出したのはOpenTelemetryです。

続きを読む: OpenTelemetryの紹介

LogicMonitorの分散トレースはOpenTelemetryベースの統合であり、インストルメントされたアプリケーションからトレースデータを転送できます。 これにより、分散サービスを通過するエンドツーエンドのリクエストを監視できます。 インストールの詳細 OpenTelemetryコレクター.

分散トレースはどのように機能しますか?

分散トレースは、ツリーのような構造と考えてください。 ルートまたは「親」スパンは、「子」スパンに分岐します。

エンドユーザーがアプリケーションと対話すると、トレースが開始されます。 HTTPなどの最初の要求が送信されると、その要求には一意のトレースIDが与えられます。 そのトレースは、その単一の要求の全過程を説明します。 リクエストがシステム内を移動すると、操作または「スパン」にその初期トレースIDのタグが付けられます。 また、一意のIDが割り当てられます。 現在のリクエストを最初に生成した操作に関連付けられたIDもあります。これは「親」スパンとも呼ばれます。

LogicMonitorプラットフォームに表示されるトレース

各スパンは、リクエストの過程におけるXNUMXつのステップを表し、タグからクエリ、詳細なスタックトレース、コンテキストを提供するログやイベントまで、すべてを含む重要なデータでエンコードされます。 これは、トレースが分散システムを移動するときに、プラットフォームが途中で必要な追加の操作ごとに子スパンを生成することを意味します。 

次のようなツールを使用する LogicMonitorの分散トレース、エンドツーエンドのリクエストを監視しながら、データをより適切に視覚化できます。

以下を含む複数のステップのプロセスが含まれます。

  • セットアップ
  • トレースコンテキスト
  • メトリックとメタデータ
  • 分析と視覚化

このプロセスに基づいて、分散トレースはエンドユーザーのエクスペリエンスをリアルタイムで可視化できます。

要約すると:

  • トレースが開始されると、どこに行っても要求に続くトレースIDが割り当てられます。 
  • 同じトレースID、新しいトレースID、および親スパンIDを含むリクエスト内の作業の各チャンクの後に、新しいスパンが作成されます。
  • 親スパンIDが作成されると、スパン間に親子関係が形成されます。 子スパンにはXNUMXつの親スパンがありますが、親には複数の子スパンを含めることができます。 
  • スパンにもタイムスタンプが付けられているため、タイムラインに配置できます。 
  • トレースツリーのXNUMXつのスパンには、ルートスパンと呼ばれる親がありません。 

分散トレースは可観測性の範囲内で何を意味しますか?

マイクロサービスとクラウドベースのアプリケーションの使用が増えるにつれて、可観測性の必要性がかつてないほど重要になっています。 これは、システムデータをさまざまな形式で記録することによって実現されます。

上記では、メトリック、ログ、およびトレースについて説明しました。 一緒に、これらはしばしば呼ばれます 可観測性の柱。 これらの戦略を理解すると、より優れたシステムを構築および管理できます。

トレースは、この全体的な戦略のXNUMXつの重要なコンポーネントであり、分散システムを介した一連の分散イベントを表します。 トレースはログの表現であり、リクエストが移動するパスとリクエストの構造を可視化します。

トレースとは、アプリケーションのフローを継続的に監視し、アプリスタックを介したXNUMX人のユーザーの移動を追跡することです。 分散リクエストトレースは、可観測性の方法から進化し、クラウドアプリケーションが正常であることを保証します。 分散トレース マイクロサービスアーキテクチャのパスに関連付けられたデータを記録することにより、リクエストを追跡するプロセスが含まれます。 このアプローチは、さまざまな業界で活用される適切に構造化された形式のデータトレースを提供し、DevOpsチームがシステムインフラストラクチャを混乱させる技術的な不具合をすばやく理解するのに役立ちます。 

繰り返しますが、これはOpenTelemetryなどのツールの使用に関連しています。

分散トレースが重要なのはなぜですか?

新しいテクノロジーと慣行の開発により、企業はかつてないほど急速に成長することができます。 ただし、マイクロサービス、コンテナー、DevOps、サーバーレス関数、クラウドなどの変数が速度を上げ、コードから本番環境への移行を容易にするため、これは新たな課題を生み出します。

ソフトウェアが複雑になるほど、アプリケーションスタック内の潜在的な障害点が増え、平均修復時間(MTTR)が増加します。これは、問題が報告されてからその問題が解決されるまでにかかる平均時間です。 。 複雑さが増すにつれて、問題の診断により多くの時間とエネルギーが費やされるため、革新する時間も少なくなります。

関連する MTTR、MTTD、MTTF、MTBFの違いは何ですか?

分散トレースをエンドツーエンドの可観測性戦略の一部にすることで、ソフトウェアチームははるかに効果的に運用できます。 その過程で、チームは次のことができます。

  • 問題をより適切に特定して修復し、顧客体験とビジネスの成果を向上させます。
  • システムの状態をより効果的に測定して、顧客体験に前向きな変化を継続的に加えます。
  • 競合他社を上回るように革新します。

なぜ分散トレースソリューションを求めるのですか?

分散システムに一貫性をもたらすことは、分散トレースの主な利点です。 ただし、これは他のメリットのリストにつながり、企業の収益に直接影響します。

  • 生産性の向上 —モノリシックアプリケーションと比較して、マイクロサービスアーキテクチャに関連する問題の追跡と解決には、時間と費用がかかる可能性があります。 障害データでは、開発者が常に明確であるとは限らないメッセージから問題を解読する必要もあります。 分散トレースは、より正確で全体的なビューを通じて、診断およびデバッグプロセスを削減します。 これにより、効率が大幅に向上します。
  • 実装は柔軟です —分散ツールはさまざまなプログラミング言語やアプリケーションで機能するため、開発者はこれらのツールを実質的にすべてのマイクロサービスシステムに実装し、XNUMXつのトレースアプリケーションで重要なデータを表示できます。
  • コラボレーションの改善 —専門チームがマイクロサービス環境内で各プロセスを開発します。 エラーが発生した場合、そのエラーが発生した場所と責任者を特定するのは困難です。 データサイロとそれが生み出す問題を排除することで、チーム間のコラボレーションが向上し、応答時間も向上します。
  • MTTRを削減します —顧客が障害を報告した場合、分散トレースを使用して、それがバックエンドの問題であることを確認できます。 利用可能なトレースを使用して、エンジニアは迅速にトラブルシューティングを行うことができます。 フロントエンドのパフォーマンスの問題は、分散トレースツールを使用して分析することもできます。

だから、理由 なぜ 分散トレースソリューションが明確であることを求めますが、どのようにしたらよいでしょうか。

サービスがほんの一握りであっても、データの量は膨大になり、高速になる可能性があります。 痕跡をふるいにかけることは、干し草の山から針を見つけることによく似ています。 すべてのトレースをリアルタイムで適切に観察、分析、および理解するには、分散トレースツールが必要です。 これにより、次の点で最も有用な情報が強調表示されます。 コラボレー あなたは行動を起こすべきです。

サンプリングとは何ですか?

サンプリングは、時間の経過とともに収集される膨大な量のトレースデータに基づいて機能します。 より多くのマイクロサービスがデプロイされ、リクエストの量が増えると、そのデータの保存/送信の複雑さとコストも増加します。 すべてのデータを保存する代わりに、組織は分析のためにデータのサンプルを保存できます。

分散トレースをサンプリングするには、XNUMXつのアプローチがあります。

ヘッドベースのサンプリング 

大量のデータを処理する場合、分散トレースソリューションはヘッドベースのサンプリングを使用することがよくあります。 これには、パスが完了する前にサンプリングするトレースをランダムに選択することが含まれます。 これは、単一のトレースが開始されたときにサンプリングが開始されることを意味します。 そのデータは保持または破棄され、その単純さに基づいてサンプリングの好ましい形式です。

ヘッドベースのサンプリングには多くの利点があります。高速でシンプルであり、アプリケーションのパフォーマンスにほとんどまたはまったく影響を与えず、モノリスとマイクロサービスが混在する環境に最適です。 欠点は、データがランダムに選択されるため、関連するトレースデータやコンテキストがないため、貴重な情報が失われる可能性があることです。

テールベースのサンプリング

ヘッドベースのサンプリングの制限に基づいて、テールベースのサンプリングは、すべてのエラーを観察する必要がある大量の分散システムに最適です。 この場合、サンプリングが行われ、トレースの100%が分析されます After トレースは完全にパスを完了しました。 これにより、問題がどこにあるかを正確に特定し、干し草の山の問題で針全体を解決することができます。

テールベースのサンプリングは、特にレイテンシー測定の場合、より多くの情報に基づいた決定につながります。 サンプリングの決定はワークフローの最後に行われるため、エラーやパフォーマンスの問題を視覚化するのが簡単になります。 このオプションの欠点は、大量のデータの送信と保存にコストがかかる可能性があり、追加のゲートウェイとプロキシが必要になることです。

分散トレースについて知っておくべき重要な用語

分散トレース用語の短い用語集は次のとおりです。

  • A 要求 これは、アプリケーション、マイクロサービス、および機能が相互に通信する方法です。
  • A スパン トレースの一部を構成するセグメントです。
  • A ルートスパン はトレースの最初のスパンであり、親スパンとも呼ばれます。
  • A 子スパン ルートまたは親スパンに続くものです。
  • A トレース マイクロサービスを流れるパフォーマンスデータです。
  • サンプリング 分析のために保存するのではなく、トレースデータのサンプルを保存する必要があります。
  • 頭部ベースのサンプリング ルートスパンの処理中にトレースデータをランダムに収集して保存するという決定が含まれます。

分散トレースは、システムで何が起こったかを物語り、予測できない問題に迅速に対処するのに役立ちます。 テクノロジーとソフトウェアの将来がますます複雑になるにつれて、分散トレースの使用、およびメトリックの監視やロギングなどの手法がますます重要になります。 挑戦に立ち向かう時が来ました。