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

分散トレーシングとは、分散システムを通過するデータ要求を監視することです。現代のマイクロサービスアーキテクチャには、多くの場合、複数の小さな独立した成分があり、これらのコンポーネントは、複雑な作業を行うために、API を使用して常に通信およびデータ交換を行います。分散トレーシングを使用すると、開発者はさまざまなマイクロサービスにわたるリクエストパスをトレースしたり、視覚的に追跡したりできます。この可視性は、エラーのトラブルシューティングやバグやパフォーマンスの問題の修正に役立ちます。

分散トレーシングにはどのような利点がありますか?

ソフトウェア開発者は、ほぼすべてのクラウドネイティブ環境に分散型トレーシングシステムを実装できるだけでなく、クラウドアプリケーションが生成する分散トレースを記録できます。さらに、トレーシングツールは多数のプログラミング言語とソフトウェアスタックをサポートしているため、ソフトウェアチームは同じプラットフォーム上のさまざまなアプリケーションのパフォーマンスデータを監視および収集できます。 

開発チームは、分散トレーシングを使用してオブザーバビリティを向上させるだけでなく、従来のソフトウェアデバッグおよび監視ツールでは解決できないパフォーマンスの問題を解決します。 

分散トレーシングのその他の利点は次のとおりです。

ソフトウェアのトラブルシューティングを加速

最新のアプリケーションは、分散システム全体でデータを交換し、サービス要求を満たすために、多数のマイクロサービスに依存しています。マイクロサービスベースのアーキテクチャにおけるパフォーマンス問題のトラブルシューティングは、モノリシックなソフトウェアアプリケーションよりもはるかに困難です。モノリシックアプリケーションとは異なり、特定のソフトウェアの問題の根本原因は明らかではない場合があります。複数のソフトウェアモジュール間の重複した複雑な相互作用により、問題の診断が困難になる場合があります。 

分散トレーシングを使用すると、ソフトウェアチームは、さまざまなマイクロサービスとデータストレージを接続する複雑な経路を通過するデータを監視できます。ソフトウェアチームは分散トレーシングツールを使用して、要求を追跡し、データ伝播経路を正確に視覚化します。ソフトウェアチームはパフォーマンスの問題を迅速に解決し、サービスの中断を最小限に抑えることができます。 

開発者のコラボレーションを強化

多くの場合、クラウドアプリケーションの構築には複数の開発者が関与し、それぞれが 1 つまたは複数のマイクロサービスを担当します。開発者がマイクロサービスによって交換されるデータを追跡できない場合、ソフトウェア開発プロセスは遅くなります。分散型トレーシングシステムでは、マイクロサービスが行うすべてのサービスリクエストについて、ログやトレースなどのテレメトリーデータを提供することで、開発者が共同作業を行うことができます。開発者は、テストや運用中に発見されたバグやその他のソフトウェアの問題に正確に対応できます。 

市場投入までの時間を短縮

分散トレーシングプラットフォームを導入している組織は、エンドユーザー向けにソフトウェアアプリケーションをリリースする取り組みを合理化および加速できます。ソフトウェアチームは分散トレースをレビューして、ソフトウェア開発をスピードアップし、開発コストを最小限に抑え、ユーザーの行動を理解し、市場への準備態勢を向上させるための洞察を得ます。 

分散トレーシングにはどのような種類がありますか?

ソフトウェアチームは分散型トレーシングツールを使用して、アプリケーションを監視、分析、最適化します。

コードトレース

コードトレーシングは、特定の機能を実行する際にアプリケーション内のソースコードの流れを検査するソフトウェアプロセスです。開発者がコードの論理的な流れを理解し、未知の問題を特定するのに役立ちます。たとえば、開発者はコードトレースを使用して、サービスリクエストがデータベースをクエリする段階を呼び出したかどうかを検証します。一部のソフトウェア機能が応答しない場合、トレースシステムは適切なエラーステータスを収集し、応答時間に注意を向けます。 

プログラムトレース

プログラムトレースは、開発者がアクティブなアプリケーションによって呼び出される命令と変数のアドレスを調べることができる方法です。ソフトウェアアプリケーションが実行されると、特定の割り当てられたメモリスペースにあるコードの各行が処理されます。アプリケーションは、マシンメモリに保存されている変数も処理します。プログラムメモリとデータメモリの変更を検査することは、自動化ツールがない場合は困難です。プログラムトレースにより、ソフトウェアチームは、メモリオーバーフロー、過剰なリソース消費、ロジック操作のブロッキングなど、根深いパフォーマンスの問題を診断できます。 

エンドツーエンドのトレース

エンドツーエンドのトレースにより、開発チームはサービスリクエストパスに沿ってデータ変換を追跡できます。アプリケーションがリクエストを開始すると、他のソフトウェア成分にデータを送信してさらに処理します。開発者はトレーシングツールを使用して、重要なデータが受ける変更をエンドツーエンドで追跡してまとめます。アプリケーションを通過するリクエストをアプリケーション中心のビューで確認できます。

マイクロサービスアーキテクチャでは、エンドツーエンドの分散トレーシングはどのように機能しますか?

アプリケーションを使用する場合、ユーザーはサービスリクエストを開始し、さまざまなアプリケーションの成分がリクエストを処理します。 

オンライン映画予約アプリケーションでチケットを予約するユーザーを考えてみましょう。ユーザーは、連絡先、映画の詳細、支払い情報を入力し、今すぐ予約 を選択します。次の宛先へのリクエストが作成されます:

  • ユーザーが入力したデータを検証するマイクロサービス A。
  • A からデータを取得し、顧客データベースにレコードを作成するマイクロサービス B。
  • B からデータを取得して支払いを検証するマイクロサービス C。
  • C からデータを取得し、座席を割り当て、映画のチケットデータを生成するマイクロサービス D。
  • D からデータを取得し、フォーマットされたチケット PDF ファイルを作成するマイクロサービス E。

その後、チケット PDF を含むレスポンスが、マイクロサービスの連鎖を経由して E から D、C、B、A に返され、最終的にユーザーに届きます。上記の例は単純です。リクエストは多くの場合、アプリケーションの外部にある数十のマイクロサービス、さらにはサードパーティのソフトウェアの成分のチェーンを経由します。これにより、プロセスはますます複雑になります。

分散トレーシングシステムは、分散コンピューティング環境におけるサービスリクエストと他のマイクロサービスやソフトウェア成分との相互作用を追跡します。分散トレースは、リクエスト生成からレスポンス受信までの間に発生するタイムラインとすべてのアクションを表します。ソフトウェアチームはこのトレースを使用して、最初のリクエストがやり取りする複数のマイクロサービスを介したデータ移動を追跡します。 

スパン

サービスリクエストを処理する際、アプリケーションは複数のアクションを実行することがあります。これらのアクションは、分散トレーシングではスパンとして表されます。たとえば、スパンには API コール、ユーザー認証、ストレージアクセスの有効化などがあります。1 つのリクエストで複数のアクションが発生した場合、初期 (または親) スパンが複数の子スパンに分岐することがあります。親スパンと子スパンの階層が入れ子構造になっているため、サービスリクエストを実行するために実行された段階が連続的に論理的に表現されます。

トレース ID

分散トレーシングシステムは、リクエストを追跡するために各リクエストに固有の ID を割り当てます。各スパンは、それが属する元のリクエストから同じトレース ID を継承します。また、スパンには一意のスパン ID がタグ付けされ、トレーシングシステムが収集したメタデータ、ログ、メトリックを統合するのに役立ちます。 

メトリックコレクション

各スパンがさまざまなマイクロサービスを通過するたびに、開発者にソフトウェアの動作に関する詳細かつ正確な洞察を提供するメトリックが追加されます。エラー率、タイムスタンプ、応答時間、およびその他のメタデータをスパンとともに収集できます。トレースがサイクル全体を完了すると、分散トレーシングツールは収集されたすべてのデータを統合します。 

たとえば、API コールは、応答時間、エラーステータス、および複数のサードパーティサービスによって実行される二次機能の内訳によって評価されます。トレースツールはデータを視覚的な形式に変換し、主要な指標とパフォーマンスの概要を強調表示します。これにより、サイト信頼性エンジニアは、エラーを迅速に特定し、重要なデータ要素を検査し、開発チームと協力してパフォーマンスの問題を修正し、サービスレベル契約 (SLA) の遵守を確保できます。

分散トレーシング標準は何ですか?

分散トレーシング標準は、開発者に共通のフレームワークとソフトウェアツールを提供します。これらの標準は、最新のアプリケーション環境におけるサービスリクエストを監視、視覚化、分析します。分散トレーシングのワークフローを標準化することで、ソフトウェアチームはベンダーロックインを受けることなくリクエストトレーシングをインストルメント化できます。 

次のセクションでは、分散トレーシングを実行する際に相互運用性を実現するために導入された標準について説明します。

OpenTracing

OpenTracing は、クラウドネイティブコンピューティング財団 (CNCF) によって開発されたオープンソースの分散トレーシング標準です。OpenTracing は、開発者がインストルメンテーション API を使用してトレースを生成できるようにすることに重点を置いています。これにより、開発者はコードベース、ライブラリ、またはその他の依存関係のさまざまな部分から分散トレースを生成できます。

OpenCensus

OpenCensus は、ソフトウェアメトリクスを抽出してバックエンドシステムに送信して分析できる多言語ライブラリで構成されています。開発者は提供されている API を使用して、トレースの生成と収集の方法を管理できます。OpenTracing とは異なり、開発者は個々のコードベースやライブラリではなく、単一のプロジェクトリポジトリから OpenCensus を操作します。 

OpenTelemetry

OpenTelemetry は OpenTracing と OpenCensus を統合します。両規格の優れた機能を組み合わせて、包括的な分散型トレーシングフレームワークを提供します。OpenTelemetry は、分散トレーシングをより簡単に実装するための広範な Software Development Kit、API、ライブラリ、およびその他のインストルメンテーションツールを提供します。 

分散トレーシングとロギングの違いは何ですか?

ロギングとは、アプリケーションの実行時に発生する特定のイベントを記録することです。ロギングツールは、システムエラー、ユーザーインタラクション、通信ステータス、その他の指標など、タイムスタンプ付きのイベントを収集して、開発チームがシステムの異常を検出できるようにします。一般的に、ロギングには次の 2 つのタイプがあります: 

  • 一元化されたログは、記録されたすべてのアクティビティを収集し、それらを 1 つの場所に保存します。
  • 分散ログは、ログファイルをクラウド上の別の場所に保存します。 

どちらのロギング方法でも、アプリケーションで何が起こったのかを開発者に示すインシデントの静的な概要が表示されます。これとは対照的に、分散トレーシングでは、サービスリクエストの期間中に収集されたさまざまなテレメトリデータを相互に関連付けることで、インシデントが発生した理由を明らかにする監査証跡が得られます。分散トレーシングでは、特定のサービスリクエストをトレースするためにロギングやその他のデータ収集方法を使用する場合があります。 

分散トレーシングの課題とは?

分散トレーシングにより、ソフトウェアの問題の診断、デバッグ、修正における開発者の作業が簡素化されました。それにもかかわらず、ソフトウェアチームがトレーシングツールを選択する際に注意しなければならない次の課題が残っています。

手動計装

一部のトレーシングツールでは、ソフトウェアチームがコードを手動で計装して必要なトレースを生成する必要があります。開発者がリクエストを追跡するためにコードを変更すると、本番リリースに影響するコーディングエラーのリスクがあります。さらに、自動化されていないとトレースが複雑になり、その結果、遅延が発生し、データ収集が不正確になる可能性があります。 

フロントエンドの対象範囲が限られている

トレースツールがバックエンド分析に限定されている場合、開発者はパフォーマンスの問題を完全に監視できない場合があります。場合によっては、分散トレーシングシステムは、最初のバックエンドサービスがリクエストを受け取ったときにのみデータ収集を開始します。つまり、開発者は対応するユーザーセッション中にフロントエンドサービスから発生する問題を検出して検査することはできません。

ランダムサンプリング

一部のツールでは、ソフトウェアチームがトレーシングに優先順位を付けることができず、オブザーバビリティがランダムにサンプリングされたトレースに限定されます。サンプルデータが限られているため、組織はトレーシングツールでは対応できない重大な問題を把握するために、追加のソフトウェア・トラブルシューティング・アプローチを必要としています。 

AWS は分散型トレーシング要件をどのように役立ちますか?

AWS X-Ray は、ソフトウェア開発者がユーザーのリクエストを追跡し、クラウドアプリケーションのボトルネックを特定するのに役立つ分散型トレーシングプラットフォームです。組織は X-Ray を使用してアプリケーションメトリックを視覚化し、ワークロードの可用性を向上させています。AWS X-Ray では次のことが可能になります:

  • Amazon Elastic Compute Cloud (EC2)、Amazon EC2 Container Service (Amazon ECS)、AWS LambdaAWS Elastic Beanstalk 上で実行しているすべてのアプリケーションと統合します。
  • 適切なサンプリング レートを設定して、トレースのエンドツーエンドの可視性を提供します。
  • 集約されたデータをサービスマップで視覚化し、レイテンシや障害率などの主要な指標を表示します。 

今すぐアカウントを作成して、AWS で分散トレーシングを始めましょう。

AWS での次のステップ

無料のアカウントにサインアップする

AWS 無料利用枠にすぐにアクセスできます。

サインアップ 
コンソールで構築を開始する

AWS マネジメントコンソールで構築を始めましょう。

サインイン