リホストやリアーキテクチャなど、適切な移行戦略を選択する際には、さまざまなリスク、コスト、メリットを考慮する必要があります。しかし、使用している技術スタックが何でどこで動いていて、どようなコンポーネントと連携しているかという詳細が不明であったり、文書化されていなかったりすることがよくあります。 存在するのは導入時に納品され更新されていないドキュメントといくつかの監視設定だけというケースです。

現在の環境について十分な情報がないため、いつ、何を移行するかを計画する際に、組織の正しい意思決定を妨げています。

この問題に対処するために、DynatraceのOneAgentは、アプリケーション・サービス・プロセスを自動的に検出し、アプリケーション環境全体の完全な依存関係マッピングを構築することができます。では、はじめましょう!

本セクションの目的

🔷 Dynatrace OneAgentの紹介

🔷 サンプルアプリケーションから取り込んだデータのリアルタイム確認

🔷 Dynatraceがモダナイゼーションプランニングにどのように役立つかを確認

ハンズオン環境の確認

DynatraceのWeb UIを学び、Dynatrace OneAgentを通じてサンプルアプリケーションが動作するホストからアプリケーションまで一気通貫で情報が取得できることを確認します。

下の図は本セクションの環境の概要図になります。

image

#1. サンプルアプリケーション

このラボではDockerコンテナとして実装されたフロントエンドとバックエンドのシンプルなアーキテクチャで構成されたアプリケーションを利用します。

#2. Dynatrace 環境

Lab0のプロビジョニングスクリプト内でDynatrace OneAgentはホストにインストール済みです。データはすでに送られておりSaaS側では収集を開始しています。

💥 TECHNICAL NOTE

OneAgentのインストール方法の詳細はドキュメントをご確認ください。

#3. JMeterプロセス

バックグラウンドでトラフィックを生成するためにJMeter が動作しています。

💥 TECHNICAL NOTE:

実環境では、アプリケーションのコンポーネントがオンプレミスの物理または仮想マシン上で動作しており、「コンテナ化」されていない状態が多いでしょう。ワークショップを簡略化するために、アプリケーションをフロントエンドとバックエンドに「コンテナ化」しました。Dynatraceでは、これらのDockerコンテナはすべて、「コンテナ化されていない」アプリケーションと同様に、ホスト上の「プロセス」として表示されます。

Dynatrace Ordersというサンプルアプリケーションを使用します。詳細はhttps://github.com/dt-orders/overviewを確認ください。全てのソースコードはhttps://github.com/dt-ordersにあります。

サンプルアプリのパブリックIPアドレスの確認

パブリックIPアドレスを確認するためにAWSコンソールのEC2インスタンスページにアクセスします。dt-orders-monolithインスタンスの詳細タブからパブリックIPv4アドレスを確認します。

image

サンプルアプリへのアクセス

アプリケーションを確認するためにパブリックIPアドレスをコピーして、アドレスバーに貼り付けます。このときHTTPSではなくHTTPでアクセスするようにしてください。

image

ホームページのメニューを使用してアプリケーションを移動し、主要な機能の URL を確認します。 これらのURLは、後でアプリケーションを分析するときに見ることになります。

次のセクションでは、OneAgentが自動的に検出したホスト、サービス、プロセス、およびサンプル・アプリケーションの完全な依存関係マッピングを確認します。

まずは基本的なインフラ視点で確認をしていきましょう。ホストの監視といえばなんとなくイメージがつくかもしれませんが、そのイメージだけで十分でしょうか。Dynatraceではどのように見えるのか確認してみましょう。

👍 どのように役立つのか

クラウド移行を計画する際、これらのビューは、リソースの使用状況、他のシステムやサービスとの依存関係について洞察を与えてくれるでしょう。

デプロイメントステータスの確認

サンプルアプリケーションを実行するホスト、サンプルアプリケーションのインストールとDynatrace OneAgentのインストールはスクリプトを使用して作成されています。 本ハンズオンではOneAgentをインストールする必要はないので、インストール後の状態を確認しておきましょう。

Dynatraceにログインしていない場合はログインをします。

左のメニューバーから管理 > ディプロイメント ステータスを開きます。

image

ホスト情報の確認

左のメニューバーからインフラストラクチャ > ホストを開き、dt-orders-monolithをクリックします。

image

ホストページでは、ホストのインフラに関する情報を確認することが可能です。

  1. Properties and tagsをクリックすることでホストの情報を確認できます。
  2. ホストのリソースに関するメトリック (CPU, memory, Traffic, システム負荷など) image
  3. 実行プロセスの確認。サンプルアプリはNodejsとJavaをベースにしています。 image
  4. 下にスクロールすることでさらにDiskやネットワークなどの情報を確認できます。

👍 OneAgentをホストにインストールするだけでこれらの情報を自動で収集してきてくれます。

企業には多くのホスト、サービス、アプリケーションがあり、常に変化しています。環境の変化に合わせて自動的に発見し、変更する機能は、Smartscapeが提供する重要な機能です。

Dynatraceのほぼリアルタイムな環境トポロジー可視化ツールであるSmartscapeは、Dynatraceの自動検出を、インフラ、プロセス、サービスにおけるすべてのトポロジー依存関係を迅速かつ効率的に可視化するために提供される独自の機能です。

👍 どのように役立つのか

Smartscapeは、あるサービスのすべての依存関係を表示します。これには、キュー、ウェブサーバー、アプリサーバー、およびネイティブプロセスへの接続が含まれます。ホストビューでは、使用状況や消費プロセスの履歴とライブの時系列データが表示されます。移行時には、依存するすべてのサービスを考慮する必要があるため、この情報により、移行をよりよく計画することができます。

image

Smartscapeは以下を確認することができます。(上記画像はハンズオン環境とは異なります)

Smartscapeの確認

Smartscapeを使って、システムがどのように構成されているのか可視化してみましょう。

  1. dt-orders-monolithのホストページにいることを確認
  2. 右上の...ボックスをクリック
  3. Smartscape viewメニューをクリック
  4. dt-orders-monolithが選択された状態でSmartscapeが開きます。

image

自由にスマートスケープを探索して見てください。

Smartscape ビューでは、縦方向のスタックと横方向の繋がりについて視覚化された情報を確認しました。次に、ホスト上で実行されているプロセスやサービスを表示してみましょう。

移行を計画する際に必要なのは、ホストレベルのメトリクスだけではありません。各プロセスの詳細を把握することで、変更する前に、ビジネスに影響を与えるリスクを低減することができます。

👍 どのように役立つのか

ホスト上でどのようなプロセスやサービスが実行されているか、さらには外部のどのようなプロセスやサービスから呼び出されているのか、もしくは呼び出しているのかをすぐに確認することができます。 リアルタイムの情報は、古いドキュメントよりも正確であることは確かです。

プロセスの確認

dt-orders-monolithのホストビューに戻り、Process analysis セクションを探します。monolith-frontend プロセスをクリックし、プロセスの詳細ビューを開きます。

image

プロセスのページに移動し、このプロセスの情報が表示されるはずです。 以下の画像に従って、以下の場所を探してください:

  1. プロパティとタグの行をクリックしてオン/オフを切り替えると、追加のデータが表示されます。コンテナ名など(#1)も確認できます。
  2. 情報ビュー上で左のプロセス(#2)をクリックすると、このプロセスを呼び出しているプロセスが表示されます。
  3. 情報ビュー上で、サービス(#3)をクリックすると、このプロセスが提供しているサービスが表示されます。複数のサービスを提供している場合は全てのサービスが確認できます。
  4. 情報ビュー上で⇒のプロセス(#4)をクリックすると、このプロセスが呼び出しているプロセスが表示されます。

他にはどのような情報が表示されているでしょうか。普段見ないようなメトリクスを確認することはできますでしょうか。

image

💥 TECHNICAL NOTE

#2と#4のプロセスの違いは理解できましたか?Dynatraceは他のプロセスとの関係性を自律的に理解してくれます。さらに重要なことはTomcatのような一般的なプロセスを自動的に認識し、JVMガーベッジコレクションのようなプロセス固有のメトリクスを取得します。サポートしているテクノロジーや言語に関する情報については公式ドキュメントをご確認ください。

上の図では、矢印がDockerのプロパティを示しています。

サンプルアプリはDockerコンテナとして構築されており、Dynatraceはコンテナにフックし、コンテナ化されたプロセスにOneAgentを注入するためのコードを提供します。

Dynatraceによるコンテナ監視方法

image

Dockerモニタリングのために、Dockerイメージの変更、実行コマンドの変更、コンテナの追加作成は必要ありません。コンテナ化されたアプリケーションやサービスを提供するホストにOneAgentをインストールするだけです。Dynatraceは、コンテナの作成と終了を自動的に検出し、それらのコンテナ内に含まれるアプリケーションとサービスを監視します。

💥 TECHNICAL NOTE

より詳細な情報は以下の公式ドキュメントを参照ください。

ウェブアプリケーションは、ウェブサーバーやアプリケーションプロセス(Tomcatなど)によって提供されるウェブページで構成されています。ウェブアプリケーションやモバイルアプリケーションは、ウェブリクエスト、ウェブサービス・コール、メッセージングなどのリクエストを処理するサービスの上で構築されています。

このような「サーバーサイド・サービス」は、ウェブサービス、ウェブコンテナ、データベースリクエスト、カスタムサービスなどの形をとります。また、サービスは、他のウェブサービス、メッセージングサービス、データベースなど他のサービスを呼び出し連携してリクエストの処理を行います。

👍 どのように役立つのか

移行を計画する際には、ホスト、プロセス、サービス、アプリケーションの観点から、他のアーキテクチャとの相互依存関係を完全に把握することが重要です。時間は常に限られているため、これを一箇所で行うことができれば、評価スケジュールを短縮することができます。

サービスの確認

それでは、左側のメニューから サービス をクリックして、監視されているサービスを見てみましょう。複数のサービスが動作していることが確認できるはずです。

image

frontendサービスをクリックします。複数ある場合は、monolith-forntendと記載がある方を選びます。

サービスページが表示され、この特定のサービスに関する情報が表示されます。 以下の画像に従って、以下の場所を探してください:

  1. プロパティとタグをクリックすることで追加の情報を確認することができます。
  2. どのサービスがこのサービスを呼んでいるのか確認することができます。
  3. このサービスがどのサービスを呼び出しているのか確認することができます。

image

frontendサービスページで、ダイナミックWebリクエストセクションを見つけ、ダイナミックリクエストの表示ボタンをクリックして、このサービスが処理しているリクエストを確認しましょう。

image

このページでは、トランザクションを時系列チャートとして確認することができます。

image

このページでは、"トップリクエスト"とそのレスポンスタイムを見ることができます。 サンプルアプリのURLに見覚えがあるはずです!

image

リクエストの一つをクリックすると、時系列チャートはそのリクエストだけにフィルタリングされます。

image

多次元分析ビュー

右側のページの上部に分析ビューの作成と書かれたボタンがあるので、それをクリックします。

image

データの表示、フィルタリング、分析に利用できるさまざまなオプションがあります。

例えば、以下のようなビューを確認してみましょう。

他にどのようなことが可能か試してみてください。

image

サービスフロー分析

プロセスとサービスを確認する1つの方法について見てきましたが、サービスバックトレースサービスフローを使用して、Dynatraceがアプリケーションのトランザクションをエンドツーエンドでどのように理解し、可視化するか見てみましょう。

👍 どのように役立つのか

通常業務時間中のアクセスの種類、実行されたステートメント、転送されたデータ量を知ることで、移行対象のより良い計画と優先順位付けが可能になります。場合によっては、依存関係が少なく移行が複雑でない他のサービスやデータベースを優先し、依存関係が複雑なデータベースの移行を見送ることもできます。

サービスフローの確認

  1. frontendサービスページに戻ります。下記画像のfrontendをクリックすることで簡単に戻ることができます。image
  2. frontendのサービスページで依存関係の理解サービスフローの表示ボタンをクリックします。image

応答時間の観点

サービスフローページに遷移します。

すぐにこのアプリケーションがどのような構造になっているかが分かります。

image

上の画像において:

  1. タイムフレームのデフォルトは、グローバルタイムフレームセレクターで設定されているもので、最大24時間です。
  2. 応答時間の観点でデータを表示しています。スループットの観点に切り替えることができます。
  3. ボックスをクリックすると、応答時間のメトリクスが展開されます。応答時間のほとんどは、バックエンド・サービスに費やされていることがわかります(画像のデータでは応答時間の76%を占めています)。
  4. バックエンド・サービスのリクエストごとにデータベースへの呼び出しが数回あるとしても、レスポンスタイムのうちデータベースに費やされるのはごくわずかです。

スループットの観点

image

上の画像において:

  1. 時間枠のデフォルトは10分ですが、調整可能です。
  2. ボックスをクリックして、スループット視点に変更します。
  3. ボックスをクリックしてメトリクスを展開し、バックエンド・サービスへのリクエスト数と平均レスポンスタイムを確認します。
  4. backendからdatabaseへのリクエスト数を確認できます。backendへのリクエストが約42,000に対して、データベースへのリクエストは174,000と4倍になっていることがわかります。

サービスバックトレース分析

Dynatraceは、アプリケーションのトランザクションをエンドツーエンドで理解します。このトランザクションの洞察は、バックトレースのようにいくつかの方法で可視化されます。

バックトレースツリービューは、ページロードまたはブラウザでのユーザーアクションから始まる、このサービスコールにつながったサービスのシーケンスを表します。

サービスバックトレースの確認

それでは、左側のメニューの サービス をクリックして、サービス一覧を表示しましょう。 今度はbackendをクリックします。複数のbackendがある場合は、monolith-backendを選択します。

image

backendサービス画面で、バックトレースの表示ボタンをクリックします。

image

サービスのバックトレースページで、この特定のサービスの情報を見ることができます。

これは次のラボでもっと面白くなりますが、モノリスバックエンドについては、バックトレースが以下のようになっていることがわかります:

  1. スタートのポイントはbackendになります。
  2. backendfrontendから呼び出されています。
  3. ApacheJMeter.jarはトラフィックを生成する負荷ツールです。
  4. また、My web applicationからfrontendへのブラウザーのトラフィックが見えるかもしれません。もし表示されなくても問題ありません。

バックトレース内の行をクリックすると、ページの下部が展開されます。

👍 どのように役立つのか

サービスフローとサービスバックトレースを使用することで、これら2つのツールは、ホスト、プロセス、サービス、およびアプリケーションの観点から、アーキテクチャの残りの部分との相互依存関係を完全に把握することができます。

image

移行を計画する際、データベースのオブザーバビリティは計画を成功させる上で非常に重要です。通常の運用時間帯におけるアクセスの種類、実行されたステートメント、転送されたデータ量を把握することで、より良い移行計画と移行グループの優先順位付けが可能になります。場合によっては、依存関係が少なく移行が複雑でない他のサービスやデータベースを優先して、このデータベースの移行を見送ることもできます。

👍 どのように役立つのか

データベースのアクティビティを監視すると、Dynatraceはどのデータベースステートメントが最も頻繁に実行され、どのステートメントに最も時間がかかっているかを表示します。また、移行計画や移行グループの優先順位付けに直接役立つ、データベースステートメントを実行するサービスも確認できます。

DynatraceはOracleやMicrosoft SQL Server, MySQL, PostgreSQLといった主要なDBMS製品に対応しています。詳しくはDatabase observabilityをご参照ください。

データベースの確認

サンプルアプリケーションに存在するデータベースがDynatraceではどのように見えるのか確認してみましょう。

  1. backendサービスに戻ります。1つの方法は、左側のメニューのサービスに戻って、backendサービスを選択することです。
  2. backendサービスページで、[embedded]のデータベースを開きます。

image

サンプルアプリケーションではHSQLDBを使用しています。このページでは、次のようなデータベースのプロセスを調べることができます。

  1. このデータベースを呼び出しているサービス
  2. データベースの可用性
  3. 個々のSQLステートメント
  4. カスタムの多次元分析

データベースステートメントの表示をクリックしてどのようなクエリが発行されているか確認してみましょう。

image

Dynatraceはデフォルトで、Dynatrace Smartscapeの一部として、FullStackの水平方向(誰が誰と話しているか)と垂直方向(何が何上で実行されているか)の依存関係を可視化します!OneAgentをインストールするだけで、コードの変更も設定変更も必要ありません。

モノリスを構成するプロセスを確認することで把握していなかった依存関係を知ることができます。「5年前に導入したこのレガシー・プロセスへの依存性をすっかり忘れていました。」というのはよく聞く話です。

マイグレーションを計画する際、エコシステムを構成しているテクノロジーを知ることは、特定のサービスをマイグレーションするか、リファクタリングするか、置き換えるかを決める鍵となります。

ワークショップはやや限定的なので、別の環境での例を紹介します。

image

👍 どのように役立つのか

これもすぐに使える機能で、あなたの環境にどのようなテクノロジーがどの程度存在するかをヒートマップ表示で理解するのに役立ちます。

テクノロジーとプロセスの確認

  1. 左のメニューにあるインフラストラクチャ > テクノロジーとプロセスをクリックすると、OneAgent が自動的に検出しプロセスのテクノロジが表示されます。image
  2. フィルターボックスでtagを選び、次にstageproductionを選びます。以下のようにフィルタリングされます。image

さらなる機能について

  1. 左のメニューにある管理 > Dynatrace ハブをクリックします。image
  2. Dynatrace ハブではDynatraceがサポートする多くのテクノロジーについて確認することができます。

このリストは、Dynatraceウェブサイトのハブページと同期し、常に更新されます。

OneAgent をインストールするだけで、インフラストラクチャ層とアプリケーション層の両方から、サンプル・アプリケーションの詳細なトポロジー・ビューを得ることができ、必要な答えを持ってクラウドへの導入に取り組む準備が整いました。

チェックリスト

このセクションでは以下を確認しました:

✅ Dynatrace OneAgentが取得したさまざまな情報の確認方法

✅ サンプルアプリケーションに関するトランザクションの流れ

✅ Dynatraceがモダナイゼーションにどのように役立つのか